多ip接口上的DHCP服务器

我的系统运行Ubuntu 17.04,我的networking拓扑是:

网络拓扑结构

我有eth1configuration了多个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上的networking来开发和testing我的设备,我有一个DHCP服务器configuration如下:

 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:

wireshark跟踪

两个问题:

  1. 如何使DHCP服务器只在eth1上运行?
  2. 在eth1上如何让DHCP报文来源地址为192.168.55.1?

你可以试试
server-identifier 192.168.55.1

这不是手册页推荐的,你的configuration就是它描述的用例。

(我以前的答案)将导致DHCPD绑定到一个IP地址,正如你所说,将打破广播请求:

local-address

例如

local-address 192.168.55.1