0x01 前言

下面这篇文章介绍了我使用服务器进行PPPoE拨号的设置方法,我的想法是通过服务器会网络进行管控,以此填补家里没有网管型交换机和专业路由器的遗憾

基于centos7的PPPoE拨号上网

DHCP也是基础服务之一,因为去掉了原有的极路由3,所以在服务器上配置DHCP服务是必不可少的。

0x02 准备

要让其他电脑通过DHCP服务器获取IP,那么我们需要准备一个可用的网络端口,以便接上交换机。

因为我的DHCP服务是运行在KVM虚拟机上的,所以我需要将服务器上的一个网络端口分配这台虚拟机:

#立即将实体网卡enp2s0f0以直接映射的模式添加到名为base的虚拟机
virsh attach-interface base direct enp2s0f0 --current

#将实体网卡enp2s0f0以直接映射的模式添加到名为base的虚拟机的这一操作写入配置文件
virsh attach-interface base direct enp2s0f0 --config

这一操作不需要重启虚拟机,添加完成后就可以在虚拟机里看到新增的设备。但要注意的是:虚拟机里的MAC地址是虚拟出来的,并不是硬件原有的MAC地址。

准备好网络端口,现在要为这个端口添加一个IP,这个IP就是DHCP的网关IP。先确定目标网卡在系统内的名称:

[root@base ~]# ip addr
#系统内部环路
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever

#硬件映射,用于PPPoE
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:61:bc:27 brd ff:ff:ff:ff:ff:ff

#硬件映射,用于DHCP
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:9e:4b:87 brd ff:ff:ff:ff:ff:ff
    inet 10.1.1.1/24 brd 10.1.1.255 scope global eth1
       valid_lft forever preferred_lft forever

#PPPoE程序虚拟出来的网卡
5: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qdisc pfifo_fast state UNKNOWN qlen 3
    link/ppp 
    inet 113.89.193.57 peer 113.89.192.1/32 scope global ppp0
       valid_lft forever preferred_lft forever

我刚才映射到base这台虚拟机里的网卡名为eth1,现在需要给他添加一个配置文件。我使用10.1.1.0/24这个网段,请依据你的实际情况进行修改:

#编辑文件
[root@base ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1

#添加一下内容,请将内容按照实际情况进行修改
TYPE=Ethernet
NAME=eth1
DEVICE=eth1
ONBOOT=yes
IPADDR=10.1.1.1

#重启网络服务
[root@base ~]# systemctl restart network

请在此确认你的这个网卡是否已经有设定好的IP地址。

0x03 安装

DHCP服务通过yum即可进行简单的安装:

[root@base ~]# yum install dhcp -y

因为安全所需,安装完成后还需要绑定网卡。在不绑定网卡的情况下是监听所有传入数据包的,如果像我将PPPoE拨号服务也设置在同一设备上,在没有防火墙的情况下,外部设备也能获取到内网IP。

#将文件复制到指定位置
[root@base ~]# cp /usr/lib/systemd/system/dhcpd.service /etc/systemd/system/

#用vim打开dhcpd.service文件
[root@base ~]# vim /etc/systemd/system/dhcpd.service

#在这一行的最后添加网卡名称
ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid eth1

#重新加载服务列表
[root@base ~]# systemctl --system daemon-reload

#重启DHCP服务
[root@base ~]# systemctl restart dhcpd.service

0x04 配置

在DHCP的说明文档里你可以找到配置文件的样板:

#使用locate搜索文件
[root@base ~]# locate dhcpd.conf.example

#查看文件
[root@base ~]# cat /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example

因为我的网络架构比较简单,所以配置文件也比较简单。在设置好IP段的前提下,还需要给打印机、PS4、Wi-Fi路由器等等的设备设置固定IP。配置文件如下:

#打开并修改文件
[root@base ~]# vim /etc/dhcp/dhcpd.conf

#本地域名
option domain-name "terenceHome.local";

#DNS服务器,我本地有DNS缓存服务器,请根据你的实际情况进行修改
option domain-name-servers 10.1.1.1;

#默认IP释放时间
default-lease-time 600;

#最大IP释放时间
max-lease-time 7200;

#设定IP与电子掩码
subnet 10.1.1.0 netmask 255.255.255.0 {
#设定IP段
  range 10.1.1.101 10.1.1.150;
#设定网关
  option routers 10.1.1.1;
}

#固定IP设定,
host hiwifi.t.com {
#硬件MAC地址
  hardware ethernet d5:ee:07:2d:6b:0f;
#固定IP地址
  fixed-address 10.1.1.2;
}

如果有多台需要固定IP的设备,就只能手动添加了。

0x05 结语

DHCP还有其他很有趣的功能,后期我了解和实践过后在写文章进行记录。