Linux dhcpd 服务器具有多个范围,可根据请求源分配 IP

Linux dhcpd 服务器具有多个范围,可根据请求源分配 IP

我已经在同一接口 (eth0) 上配置了具有多个作用域的 Linux dhcpd 服务器。需要这些 IP 地址的设备 (DHCP 客户端) 位于两个不同的远程网络上。网络团队已完成所有配置,包括中间的 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 服务器正在成功地将第一个配置的范围 (10.238.16.x) 中的 IP 分配给从 remote_network_1 和 remote_network_2 发出请求的客户端。

我该如何配置它,以便当请求来自 10.238.16.10 时,它会分配一个 10.238.16.X IP,而当请求来自 10.238.25.20 时,它会分配一个 10.238.25.X IP。

我知道还有其他方法可以解决这个问题 - 比如配置 dhcpd 来监听两个不同的接口等等,但这对我来说不起作用。

我尝试了“选项广播地址”,但没有作用。

我的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

答案1

删除了shared-network部分。这不是共享网络。您只需要两个范围。来自man dhcpd.conf

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

您还应该修复option routers每个子网中的行。此行应列出每个网络的默认网关。

答案2

最后我们发现最好的方法是配置 DHCPD 以根据设备 mac 地址分配静态 IP。

我们控制连接到这些网络的设备,而且这些设备的数量有限,所以这个解决方案对我们来说很有效。这需要一些额外的工作,但也增加了一些安全性。

相关内容