如何在 Linux 本地虚拟网络接口上设置 dhcp 服务器和客户端

如何在 Linux 本地虚拟网络接口上设置 dhcp 服务器和客户端

对于我的任务,我需要在本地 Linux 机器中转储 dhcp 客户端-服务器交换。

  1. 首先,我从 ISC dhcp 源克隆并构建 dhcp 服务器和客户端 -https://github.com/isc-projects/dhcp
  2. 在 Bridge 中为我的实验创建并设置 Tap 接口:
sudo ip link add test_eth0 type tap
sudo ip link add test_eth1 type tap
sudo ip link add test_eth2 type tap

sudo ifconfig test_eth0 up
sudo ifconfig test_eth1 up
sudo ifconfig test_eth2 up

sudo ifconfig test_eth0 10.1.1.7 netmask 255.255.255.0 up

sudo ip link add test_br0 type bridge
sudo ip link set dev test_eht0 master test_br0
sudo ip link set dev test_eht1 master test_br0
sudo ip link set dev test_eht2 master test_br0
sudo ip link set test_br0 up
  1. 启动 dhcpd 服务器

sudo ./dhcpd -d -f # start dhcp daemon in foreground mode

使用 dhcpd.conf:

...
subnet 10.1.1.0 netmask 255.255.255.0 {
  range 10.1.1.3 10.1.1.254;
  option routers 10.1.1.1; 
}
...
  1. 启动指定目标接口和 dhcp 服务器的 dhclient:

sudo ./dhclient -lf ./dhclient.leases test_eth1 -s 10.1.1.0 -v

客户端输出:

...
DHCPDISCOVER on test_eht1 to 10.1.1.0 port 67 interval 3
DHCPDISCOVER on test_eht1 to 10.1.1.0 port 67 interval 6
DHCPDISCOVER on test_eht1 to 10.1.1.0 port 67 interval 11
...

我预计启动客户端后,它将检测到正在运行的服务器,这将为 test_eth1 接口提供动态地址,我可以使用 dhcpdump 转储它,但我在网络方面并不像我想象的那么好。

答案1

您需要手动为至少一个测试接口分配一个地址,DHCP 服务器将绑定到该接口,然后将地址分发给其他接口。

因为 dhcpd 无法知道要绑定到哪个接口。

您还需要将所有测试接口添加到桥接器中,以便将它们“连接”在一起。

相关内容