我的系统运行的是 Ubuntu 17.04,我的网络拓扑是:
我为 eth1 配置了多个 IP 地址:
$ ip addr show eth1
4: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:80:c8:3d:19:94 brd ff:ff:ff:ff:ff:ff
inet 169.254.123.52/16 brd 169.254.255.255 scope link eth1
valid_lft forever preferred_lft forever
inet 192.168.55.1/24 brd 192.168.55.255 scope global eth1
valid_lft forever preferred_lft forever
inet 192.168.10.10/24 brd 192.168.10.255 scope global eth1
valid_lft forever preferred_lft forever
inet6 fe80::280:c8ff:fe3d:1994/64 scope link
valid_lft forever preferred_lft forever
我使用 eth1 上的网络来开发和测试我的设备,并且我有一个配置如下的 DHCP 服务器:
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;
default-lease-time 600;
max-lease-time 7200;
ddns-update-style none;
subnet 192.168.55.0 netmask 255.255.255.0 {
range 192.168.55.100 192.168.55.150;
}
当连接到 eth1 的 DUT 请求 IP 地址时,DHCP 服务器会响应并提供,但使用 Wireshark 嗅探发现数据包的源地址为 169.254.123.52:
两个问题:
- 如何使 DHCP 服务器仅在 eth1 上运行?
- 如何使来自 eth1 上的 DHCP 的数据包具有源地址 192.168.55.1?
答案1
你可以尝试
server-identifier 192.168.55.1
手册页不建议这样做,您的配置正是它描述的用例。
这(我之前的回答)将导致 DHCPD 绑定到单个 IP 地址,并且正如您所说,将中断广播请求:
local-address
:
例如
local-address 192.168.55.1