具有多个作用域的Linux dhcpd服务器根据请求源分配IP

我已经在同一个接口(eth0)上configuration了一个具有多个作用域的Linux dhcpd服务器。 需要这些IP地址的设备(DHCP客户端)位于两个不同的远程networking上。 networking小组已经完成了所有configuration,包括中间的DHCP中继,所以请求以如下格式到达我的DHCP服务器:

DHCPDISCOVER from macaddress via 10.238.16.10 (remote_network_1) DHCPDISCOVER from macaddress via 10.238.25.20 (remote_network_2) 

(我认为上面提到的IP属于将DHCP请求转发到我的服务器的远程路由器。)

现在,DHCP服务器正在成功地将来自第一个configuration范围(10.238.16.x)的IP分配给remote_network_1和remote_network_2请求的客户端。

我如何configuration它,以便当来自10.238.16.10的请求进来时,它分配一个10.238.16.X IP,当它来自10.238.25.20时,它分配一个10.238.25.X IP。

我知道还有其他的方法来解决这个问题 – 比如configurationdhcpd来侦听两个不同的接口等,但这对我来说不起作用。

我试过“选项广播地址”,但没有奏效。

我的dhcpd.conf:

 ddns-update-style none; default-lease-time 6000; max-lease-time 72000; authoritative; log-facility local7; subnet 10.238.24.0 netmask 255.255.255.248 { } shared-network DA { subnet 10.238.16.0 netmask 255.255.255.0{ range 10.238.16.52 10.238.16.254; option routers 10.238.24.9; option broadcast-address 10.238.16.255; } subnet 10.238.25.0 netmask 255.255.255.0{ range 10.238.25.52 10.238.25.254; option routers 10.238.24.9; option broadcast-address 10.238.25.255; } } 

从系统日志:

 Feb 3 13:32:18 linux-server dhcpd: DHCPDISCOVER from b8:5e:7b:1e:c2:89 via 10.238.25.20 Feb 3 13:32:19 linux-server dhcpd: DHCPOFFER on 10.238.16.53 to b8:5e:7b:1e:c2:89 (android-ba98679bfc07f0cb) via 10.238.25.20 Feb 3 13:32:19 linux-server dhcpd: DHCPREQUEST for 10.238.16.53 (10.238.24.20) from b8:5e:7b:1e:c2:89 (android-ba98679bfc07f0cb) via 10.238.25.20 Feb 3 13:32:19 linux-server dhcpd: DHCPACK on 10.238.16.53 to b8:5e:7b:1e:c2:89 (android-ba98679bfc07f0cb) via 10.238.25.20 Feb 3 13:35:40 linux-server dhcpd: DHCPDISCOVER from 40:f3:08:89:3f:13 via 10.238.16.10 Feb 3 13:35:41 linux-server dhcpd: DHCPOFFER on 10.238.16.54 to 40:f3:08:89:3f:13 (android-47aa390064e91817) via 10.238.16.10 Feb 3 13:35:41 linux-server dhcpd: DHCPREQUEST for 10.238.16.54 (10.238.24.20) from 40:f3:08:89:3f:13 (android-47aa390064e91817) via 10.238.16.10 Feb 3 13:35:41 linux-server dhcpd: DHCPACK on 10.238.16.54 to 40:f3:08:89:3f:13 (android-47aa390064e91817) via 10.238.16.10 

最后我们想出了最好的办法是configurationDHCPD,根据设备的MAC地址分配静态IP。

我们控制连接到这些networking的设备,只有有限的这些解决scheme适用于我们。 这是一个额外的工作,但也增加了一些安全性。

删除了shared-network部分。 这不是一个共享的networking。 你只需要两个范围。 从man dhcpd.conf

共享networking语句用于通知DHCP服务器某些IP子网实际上共享相同的物理networking。 共享networking中的任何子网都应在共享networking语句中声明。 在这些子网上引导客户端时,将使用在共享networking语句中指定的参数,除非在子网或主机级别提供的参数覆盖它们。 如果共享networking中的任何子网具有可用于dynamic分配的地址,则将这些地址收集到该共享networking的公共池中,并根据需要分配给客户端。 无法区分客户端应启动的共享networking的哪个子网。

您还应该修复每个子网中的option routers线路。 这一行应该列出每个networking的默认网关。