DHCP

2018-02-19|Categories: Linux|

DHCP全称是Dynamic Host Configuration Protocol,译为「动态主机配置协议」,可以给局域网内的主机自动分配IP地址、网关、DNS服务器等信息。

DHCP服务器如果配置不正确,将导致客户端无法正常联网,为了避免负面影响,以下实验操作全部在虚拟机内执行。

在虚拟机中创建一个自定义网络

首先在VMware Fusion虚拟机内创建一个自定义网络,稍后安装的DHCP服务器将只管理这个网络。步骤如下:

  • 点击菜单栏的「VMware Fusion」→「偏好设置」,在弹出窗口中选择「网络」标签;
  • 确保左下角的「锁」图标处于下图所示的打开状态,如果是关闭状态,点击锁图标并输入密码将其打开;
  • 点击锁图标上方的加号按钮,添加一个自定义网络;
  • 取消勾选「通过DHCP在该网络上提供地址」,点击右下角的「应用」按钮,「子网IP」将自动生成;
  • 双击左侧的网络名称,将其修改为更有描述性。下图中我将其命名为vmnet2 - HO w/o DHCP,意思是vmnet2这个网络工作在Host-Only模式,且没有内置DHCP服务器。

如果对自动生成的IP地址不满意,可以修改/Library/Preferences/VMware Fusion/networking相关字段,修改之前务必退出VMware Fusion,并做好备份

answer VNET_2_DISPLAY_NAME vmnet2 - HO w/o DHCP
answer VNET_2_HOSTONLY_NETMASK 255.255.255.0
answer VNET_2_HOSTONLY_SUBNET 192.168.224.0
answer VNET_2_VIRTUAL_ADAPTER yes

添加使用自定义网络的网卡

关闭DHCP实验涉及的所有虚拟机,分别为每个虚拟机「添加设备」→ 「网络适配器」,选择上一步自定义的网络vmnet2 - HO w/o DHCP,勾选顶部的「连接网络适配器」,最后重启虚拟机。

给网卡指定固定IP地址

假设刚添加的网卡被系统识别为eth3

vim /etc/sysconfig/network-scripts/ifcfg-eth3

粘贴以下内容:

DEVICE=eth3
NAME=eth3
BOOTPROTO=none
IPADDR=192.168.224.61
PREFIX=24
ONBOOT=yes

重启网卡:

ifdown eth3
ifup eth3

注意:运行DHCP服务器的机器的网卡必须设置一个与管理的子网 相同网段静态IP地址,否则DHCP服务器无法启动

安装DHCP服务器

yum install dhcp

配置DHCP服务器

复制模板创建配置文件:

# dhcpd version:
## CentOS 6: 4.1.1
## CentOS 7: 4.2.5
# 把命令中的version替换为上面对应的版本号
cp /usr/share/doc/dhcp-version/dhcpd.conf.example /etc/dhcp/dhcpd.conf

编辑配置文件:

vim /etc/dhcp/dhcpd.conf

建议修改以下选项:

# DNS服务器
option domain-name-servers 223.5.5.5, 119.29.29.29;

# 网关
option routers 192.168.224.1;

default-lease-time 86400;
max-lease-time 864000;

必须配置以下子网声明:

subnet 192.168.224.0 netmask 255.255.255.0 {
  range 192.168.224.71 192.168.224.200;
}

range表示用于分配的IP地址的范围,由于提前指定了DHCP服务器所在主机的IP是192.168.224.61,所以这里从192.168.224.71开始分配,最大可分配IP地址是192.168.224.200,可分配IP地址总共130个。

如果要给某台主机分配固定的IP地址,可以把IP地址与网卡MAC地址绑定:

host any_host_name {
    hardware ethernet 00:50:56:32:c8:28;
    fixed-address 192.168.224.10;
}

注意,这里固定分配的IP地址是192.168.224.10,不属于range 192.168.224.71 192.168.224.200;定义的范围,这是允许的。

由于配置文件来自模板,除了以上配置项目,其它不相关的配置可以全部注释掉。

启动DHCP服务器

# CentOS 6
service dhcpd start

# CentOS 7
systemctl start dhcpd

设置开机启动:

# CentOS 6
chkconfig --add dhcpd
chkconfig dhcpd on

# CentOS 7
systemctl enable dhcpd

查看地址分配情况

# DHCP服务器
less /var/lib/dhcpd/dhcpd.leases

# DHCP客户端
less /var/lib/dhclient/dhclient.leases

注意:固定分配的IP地址不会被记录。

查看详细分配过程

在客户端可以查看DHCP的详细分配过程:

killall dhclient
dhclient -d

Leave A Comment