一、dhcp4
DHCP服务器是为客户端机器分配IP地址的,所有分配的IP地址都保存在DHCP服务器的数据库中。为了在子网中实现DHCP分配IP地址,需要在目标主机上安装配置DHCP服务
1、安装DHCP服务
安装isc-dhcp-server:
$ sudo apt install isc-dhcp-server
#DHCP的主要配置文件有两个,分别位于 /etc/default/isc-dhcp-server 和 /etc/dhcp/dhcpd.conf。下面要做的就是对这两个文件进行配置。
2.配置DHCP服务
首先需要知道目标主机的网卡名称:
$ ifconfig
#得到以下信息:
可以看到,目标主机的两张网卡名称分别为enp5s0f0和enp5s0f1,其中enp5s0f0可用。接下来配置 /etc/default/isc-dhcp-server 文件,
这里网卡名字使用的是enp5s0f0,ipv4地址是192.168.19.20,所以接下来配置都是19网段的,但是每个虚拟机ipv4和网卡名字是不同的,我的就是77网段,所以我在配置时全部换成了77网段
$ sudo vim /etc/default/isc-dhcp-server
将INTERFACES的内容补充为目标主机的网卡名称enp5s0f0。(要与自己的网卡名称一致)
配置 /etc/dhcp/dhcpd.conf 文件:
$ sudo vim /etc/dhcp/dhcpd.conf
文件内容中需要配置的是域名和子网IP等信息,对于第一文件片段中的
option domain-name “example.org” 不用修改,下一行的domain-name-server需要注释掉在第二文件片段中补充。对于第二文件片段中的白色部分,全是新添加的信息。目标主机的子网IP为192.168.19.20,因此subnet为192.168.19.0,DHCP分配范围设置为150-253,其余地址留给广播和静态IP。网关和DNS均设置为192.168.19.1,广播地址为192.168.19.255,ntp-servers和netbios-name-servers设置与DNS一致,netbios-node-type默认为8
这里千万注意,以下是我的配置,仅参考,不要照抄
配置完成之后重启DHCP服务:
$ sudo service isc-dhcp-server restart
查看dhcp是否正常运行:
$ sudo netstat -uap
当显示dhcpd的program name时表示dhcp服务安装配置启动成功
3.配置过程中的调试
第一次配置过程中很有可能出现配置失败无法启动dhcp的情况,笔者第一次配置时也是遇到了很多问题,后来发现查看日志是最可靠的方法。
查看系统日志:
$ vim /var/log/syslog
上面记录了失败的具体原因,定位到行,能比较有效地减少 花在配置错误上面的分析时间。
另外,官方的guidebook和Q&A也是比较有效工具。
二、dhcp6
下载安装dhcp-4.3.5.tar.gz(某个版本就行)
https://www.isc.org/downloads/
tar -xvf dhcp-4.3.5.tar.gz/sudo apt install isc-dhcp-server
cd dhcp4.3.5
./configure
make
sudo make install
配置文件/etc/dhcp/dhcpd6.conf
default-lease-time 600;
max-lease-time 7200;
#上面是租约时间
log-facility local7;
subnet6 2001:db8:0:1::/64 {
# Range for clients dhcp地址池
range6 2001:db8:0:1::129 2001:db8:0:1::254;
# Range for clients requesting a temporary address
#应该是clinet成功获取获取的静态路由
range6 2001:db8:0:1::/64 temporary;
# Additional options
option dhcp6.name-servers fec0:0:0:1::1;
#dhcp的dns地址
option dhcp6.domain-search "domain.example";
# Prefix range for delegation to sub-routers dhcpv6前缀范围
prefix6 2001:db8:0:100:: 2001:db8:0:f00:: /56;
# Example for a fixed host address
#这个不配也不影响启动,主机名称随便,前提是只有一个dhcpserver
host specialclient {
#请注意,“ dhcp.client-id”不再属于MAC地址,而是使用唯一的ID!(如果不存在则在首次启动时创建)作为唯一标识。它是一个14字节长的标识符,以2字节长的信息(通常为“ 0x000e”)开头,在这里不固定一般不需要修改除非你陪了另外一个dhcpserver,:
host-identifier option dhcp6.client-id 00:01:00:01:4a:1f:ba:e3:60:b9:1f:01:23:45;
#
fixed-address6 2001:db8:0:1::127;
}
}
创建空文件/var/db/dhcpd6.leases
查看当前网卡信息ifconfig,然后为网卡ens33添加dhcp服务器地址
ifconfig ens33 inet6 add 2001:db8:0:1::1/64
启动server,这样一般成功
上面的warning在不配置host部分会消失,不影响使用
dhcpd -6 -cf /etc/dhcp/dhcpd6.conf ens33
#要添加网卡名称
查看连接,安装成功后会出现dhcpd字样的接口
netstat -uap
三、常见问题
dhcp启动后获取不了ip可尝试关闭防火墙
ufw disable
客户机可以获取ipv6但是无法ping通dhcp server
dhcp没有想客户机下发默认网关,手动添加默认网关
可选择重新装服务器
仔细检查配置文件
可选择虚拟机网卡连接模式直连以太网(外部主机的以太网)
物理连接检测可选
可选择重新安装网卡的ipv6、ipv4的所有服务(物理检测使用)
网络适配器-》以太网-》属性-》安装服务
四、非物理连接(桥接)情况,主机虚拟机连接检验方式
1、禁用除虚拟机网卡(你开启的dhcp服务器的虚拟机使用哪个网卡就不能禁用哪个,一般都用vm8)外其他无关网卡,防止虚拟机网卡从其他地方获取ip。
2、记得关闭虚拟机防火墙 ufw disable
3、开启你的虚拟机网卡的dhcp服务(ipv6/ipv4),
4、进入主机cmd 界面,
ipconfig/release #释放当前网卡获取ip
ipconfig/renew#网卡重新获取ip(dhcp已开启情况下)
5、查看网卡信息配置
ipconfig/all
#或者直接打开适配器自己去看网卡详细配置信息
上面这张图,我检查完6,在虚拟机快照回退到4配置成功状态后,重新获取了网卡ip,所以会有6服务器的暂存
五、物理连接(桥接)情况检测
我这里只检测了dhcpv6的,v4的大家自己去试
需要一个空的交换机,,没有可以选一个不开dhcp服务且不联网的路由器充当,dhcpserver和dhcpclient连到lan口。
建议禁用所有无关网卡程序
1、将dhcpsever设备和dhcpclient设备连接到交换机口上,两端必须都要开启dhcp服务(只开你要检测的也行)。
2、保证server的主机上的虚拟机ip和包可以从主机的以太网网卡出来(ping通即可)
下图是主机的以太网网卡信息 ,可以看到以太网已经从虚拟机获取了动态分配的ipv6
4、在dhcp的client抓包可以看到相应的dhcpv6的包
5、此时检查作为dhcpclient的设备,可以看到已经成获取dhcpv6 server分配了ip地址