如何设置dhcpd.conf,以便连接到NIC 1的所有客户端将拥有192.168.2.x IP,并且连接到NIC 2的所有客户端都获得192.168.3.x IP,并且所有客户端的networking掩码为255.255.248.0。
我目前的dhcpd.confconfiguration文件:
option subnet-mask 255.255.248.0; subnet 192.168.0.0 netmask 255.255.248.0 { option routers 192.168.2.10; option broadcast-address 192.168.2.255; option subnet-mask 255.255.248.0; option domain-name-servers 192.168.2.10; range 192.168.2.30 192.168.2.250; } subnet 192.168.0.0 netmask 255.255.248.0 { option routers 192.168.3.10; option broadcast-address 192.168.3.255; option subnet-mask 255.255.248.0; option domain-name-servers 192.168.3.10; range 192.168.3.30 192.168.3.250; } host host1 { hardware ethernet xxxxxxxxxxxxxx; fixed-address 192.168.2.10; } host host2 { hardware ethernet xxxxxxxxxxxxxx; fixed-address 192.168.3.10; }
您的dhcpd.conf文件设置正确,但您的子网定义不正确。 您的编号scheme不能使用21位networking掩码(255.255.248.0)。 如果你使用24位掩码(255.255.255.0),它应该工作。
用21位掩码:
Address: 192.168.2.0 11000000.10101000.00000 010.00000000 Address: 192.168.3.0 11000000.10101000.00000 011.00000000 Netmask: 255.255.248.0 (/21) 11111111.11111111.11111 000.00000000 ^^^
在这里,“.2”和“.3”位于networking掩码之外,因此不包含在子网定义中。
用24位掩码:
Address: 192.168.2.0 11000000.10101000.00000010.00000000 Address: 192.168.3.0 11000000.10101000.00000011.00000000 Netmask: 255.255.255.0 (/24) 11111111.11111111.11111111.00000000 ^^^
现在,“.2”和“.3”位于networking掩码内,因此是子网定义的一部分。
有几种方法可以做到这一点。 最简单但不一定是最好的方法是运行两个不同的dhcpd进程,每个进程都有自己的configuration文件,每个进程都在特定的接口上侦听:
dhcpd -cf /etc/dhcpd-network1 eth0 dhcpd -cf /etc/dhcpd-network2 eth1
虽然这很麻烦。 这样做的正确方法是在您的networking上有一个DHCP中继。 大多数情况下,这是通过“ip helper”命令在路由器上发生的。 在此设置中,路由器拦截DHCP请求并将其转发到“ip helper”命令中指定的服务器上。 由于DHCP服务器知道路由器从中接收请求的子网,所以它能够从适当的池中发出租约。
如果这不是您的select,但是,恐怕您被困住了第一个选项。
编辑:
有可能你只能使用一个dhcpd守护进程和多个池。 理论上讲,dhcpd应该知道每个接口的IP地址,并相应地发出租约。 不幸的是,我目前没有一个简单的方法来testing它,所以它可能是不正确的。