简介
本文用wsl
做dhcpv6
的server
,qemu
做client
。wsl
用tap0
网卡跟qemu
通信,依赖于之前的文章。最后再简单的展示dhcpv4
的实验。
dhcpv6
wsl server
安装软件
sudo apt-get install isc-dhcp-server
dhcp
的主要配置文件有两个
-
/etc/default/isc-dhcp-server
:配置网卡 -
/etc/dhcp/dhcpd6.conf
:配置dhcpv6
池
修改/etc/default/isc-dhcp-server
文件,指定网卡为tap0
修改/etc/dhcp/dhcpd6.conf
文件配置dhcpv6
池,在文件末尾添加上下面这段
可以从配置文件中看到,dhcpv6
不只分配了地址,还分配了域名服务器以及`dns搜索域
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet6 2001:db8:0:1::/64 {
# Range for clients
range6 2001:db8:0:1::129 2001:db8:0:1::254;
# Range for clients requesting a temporary address
range6 2001:db8:0:1::/64 temporary;
# Additional options
option dhcp6.name-servers fec0:0:0:1::1;
option dhcp6.domain-search "domain.example";
# Prefix range for delegation to sub-routers
prefix6 2001:db8:0:100:: 2001:db8:0:f00:: /56;
# Example for a fixed host address
host specialclient {
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;
}
}
配置的文件中没有配置把自己的地址从地址池中去掉的选项,难道程序已经做好了?
主机tap0
网卡设置同网段2001:db8:0:1::/64
的地址
sudo ip -6 addr add 2001:db8:0:1::1/64 dev tap0
在 /var/db
下添加一个空文件dhcpd6.leases
,当有设备从服务器获取到ipv6
地址后,可以从此文件查看到设备信息
sudo mkdir -p /var/db
sudo touch /var/db/dhcpd6.leases
cat /var/db/dhcpd6.leases
启动dhcpv6
服务
sudo service isc-dhcp-server start
netstat -ua
可以看到server
已经运行
qemu client
qemu
这边就是使用dhclient
程序发送dhcp request
。这边记录下还没发起请求前的域名跟地址信息。
start
qemu
这边使用如下命令获取ip
dhclient -6 enp0s1
但一直没有获取到ip
,通过-v
选项,将详细信息打印出来
dhclient -v -6 enp0s1
发现有报错INVALID lifetimes, IAADDR discarded. Check your server configuration.
原来是valid-lifetime
是600,小于preferred-lifetime
,也就是604800
回到文件/etc/dhcp/dhcpd6.conf
,原来文件开头声明了一次(default-lease-time
就是valid-lifetime
)
后面我们的配置把valid-lifetime
改成了600,所以改不对了
所以这里我们再添加一行preferred-lifetime 100;
重启dhcp
服务
sudo service isc-dhcp-server restart
qemu
这边重新发起请求,从打印中可以看出一切顺利没有报错
再对比之前记录的qemu
地址信息跟域名信息,已经多出了我们需要的地址跟域名服务器,域名搜索域
抓包文件已上传到这里
前四个报文就是典型的一个四步交互的过程
如果想为固定的 MAC
地址分配固定的地址,可以用 hardware ethernet
参数
编辑 /etc/dhcp/dhcpd6.conf
文件,加上下面的配置
host otherclient {
hardware ethernet 52:54:00:12:34:56;
fixed-address6 2001:db8:0:1::aaaa;
}
qemu
这边进行请求,可以看到分配到了我们指定的ip
地址
dhcpv4
修改/etc/default/isc-dhcp-server
文件,增加网卡tap0
修改/etc/dhcp/dhcpd.conf
文件配置dhcp
池,增加静态绑定
subnet 172.16.0.0 netmask 255.255.0.0 {
range 172.16.0.100 172.16.0.200; # 开放的地址池
option domain-name-servers ns1.internal.example.org; # NS域名服务器
option domain-name "internal.example.org"; # 域名
option routers 172.16.0.10; # 网关地址 也即wsl的tap0地址
option broadcast-address 172.16.255.255; # 广播地址
default-lease-time 600; # 默认租期,单位:秒
max-lease-time 7200; # 最大租期
host v4special {
hardware ethernet 52:54:00:12:34:56; # MAC地址
server-name "sammi wsl"; # 主机名
fixed-address 172.16.0.66; # IP地址
infinite-is-reserved on; # 保留该地址
}
}
重启服务
不过从这里看貌似没成功,后面有空再回来看这个问题