dhcp实验

Posted by 婷 on February 24, 2024 本文总阅读量

简介

本文用wsldhcpv6serverqemuclientwsltap0网卡跟qemu通信,依赖于之前的文章。最后再简单的展示dhcpv4的实验。

dhcpv6

wsl server

安装软件

sudo apt-get install isc-dhcp-server

image-20240219203957836

dhcp的主要配置文件有两个

  • /etc/default/isc-dhcp-server :配置网卡

  • /etc/dhcp/dhcpd6.conf :配置dhcpv6

修改/etc/default/isc-dhcp-server文件,指定网卡为tap0

image-20240219204433266

修改/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;
        }
}

image-20240219205533143

配置的文件中没有配置把自己的地址从地址池中去掉的选项,难道程序已经做好了?

主机tap0网卡设置同网段2001:db8:0:1::/64的地址

sudo ip -6 addr add  2001:db8:0:1::1/64 dev tap0

image-20240219210326977

/var/db下添加一个空文件dhcpd6.leases,当有设备从服务器获取到ipv6地址后,可以从此文件查看到设备信息

sudo mkdir -p /var/db
sudo touch /var/db/dhcpd6.leases
cat /var/db/dhcpd6.leases

image-20240219210132285

启动dhcpv6服务

sudo service isc-dhcp-server start

image-20240224120034633

netstat -ua可以看到server已经运行

image-20240220003407156

qemu client

qemu这边就是使用dhclient程序发送dhcp request。这边记录下还没发起请求前的域名跟地址信息。

image-20240219205927222

image-20240219205940663

start

qemu这边使用如下命令获取ip

dhclient -6 enp0s1

但一直没有获取到ip,通过-v选项,将详细信息打印出来

dhclient -v -6 enp0s1

发现有报错INVALID lifetimes, IAADDR discarded. Check your server configuration.

image-20240219212155144

原来是valid-lifetime是600,小于preferred-lifetime ,也就是604800

回到文件/etc/dhcp/dhcpd6.conf ,原来文件开头声明了一次(default-lease-time就是valid-lifetime)

image-20240219234606466

后面我们的配置把valid-lifetime改成了600,所以改不对了

image-20240219234638023

所以这里我们再添加一行preferred-lifetime 100;

image-20240219234716700

重启dhcp服务

sudo service isc-dhcp-server restart

image-20240219234743091

qemu这边重新发起请求,从打印中可以看出一切顺利没有报错

image-20240219234839695

再对比之前记录的qemu地址信息跟域名信息,已经多出了我们需要的地址跟域名服务器,域名搜索域

image-20240220000429295

抓包文件已上传到这里

image-20240219234919912

前四个报文就是典型的一个四步交互的过程

image-20240222205446212

如果想为固定的 MAC 地址分配固定的地址,可以用 hardware ethernet 参数

编辑 /etc/dhcp/dhcpd6.conf文件,加上下面的配置

host otherclient {
        hardware ethernet 52:54:00:12:34:56;
        fixed-address6 2001:db8:0:1::aaaa;
 }

image-20240224115859081

qemu这边进行请求,可以看到分配到了我们指定的ip地址

image-20240224120117188

dhcpv4

修改/etc/default/isc-dhcp-server文件,增加网卡tap0

image-20240224124553898

修改/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;                  # 保留该地址
   }
}

image-20240224130029775

重启服务

image-20240224125440324

不过从这里看貌似没成功,后面有空再回来看这个问题

image-20240224130408894

参考链接