我有一个运行中的 ISC DHCP 服务器 4.2.2(Debian Wheezy)。我需要为未知客户端添加第二个作用域,以便为其提供虚假地址(主要用于故障排除)。但是,我尝试的所有方法似乎都不起作用。下面截断了 dhcpd4.conf 文件,下面是新的子网声明。
subnet 10.111.111.0 netmask 255.255.255.0 {
range 10.111.111.5 10.111.111.250;
allow unknown-clients;
}
subnet 192.168.XXX.0 netmask 255.255.255.0 {
range 192.168.XXX.194 192.168.XXX.200;
range 192.168.XXX.100 192.168.XXX.109;
range 192.168.XXX.215 192.168.XXX.250;
ignore unknown-clients;
option routers 192.168.XXX.XXX;
<lots more options>
}
我知道,如果 DHCP 服务器没有具有该子网上的 IP 的接口,它将忽略 10.111.111.0 子网,因此我首先尝试了一个虚拟子网。在 /etc/network/interfaces 中,我添加了:
up ip addr add 10.111.111.1/24 dev eth0 label eth0:1
然后启动接口。 ifconfig 确认它已启动。然后我将 eth0:1 添加到 /etc/default/isc-dhcp-server :
INTERFACES="eth0 eth0:1"
然后我重新启动了 DHCP 服务器,但只得到以下内容:
...WARNING: Host declarations are global. They are not limited to the scope you declared them in.
Wrote 0 deleted host decls to leases file.
Wrote 0 new dynamic host decls to leases file.
Wrote 53 leases to leases file.
Listening on LPF/eth0/00:50:XX:XX:XX:71/192.168.220.0/24
Sending on LPF/eth0/00:50:XX:XX:XX:71/192.168.220.0/24
Sending on Socket/fallback/fallback-net
监听 192.168.220.0,但未监听 10.111.111.0。然后我尝试了一个更明确的命令行:
/usr/sbin/dhcpd -cf /etc/dhcp/dhcpd4.conf eth0:1
但这只让我
No subnet declaration for eth0:1 (no IPv4 addresses).
** Ignoring requests on eth0:1. If this is not what
you want, please write a subnet declaration
in your dhcpd.conf file for the network segment
to which interface eth0:1 is attached. **
在互联网上搜索后,我找到了一个帖子(别名网络接口和 isc dhcp 服务器),Zoredache 的回答让我尝试不使用虚拟接口。我已经设置好了,ip addr show 显示接口在那里(但 ifconfig 没有显示 - 我应该担心吗?)。
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:50:XX:XX:XX:71 brd ff:ff:ff:ff:ff:ff
inet 192.168.XXX.XXX/24 brd 192.168.220.255 scope global eth0
inet 10.111.111.1/24 scope global eth0
inet 192.168.XXX.XXX/24 scope global secondary eth0:0
但是,重新启动 DHCP 服务器后,我没有收到监听 10.111.111.1 的消息,只是收到监听 192.168.XXX.XXX 的消息。
知道我做错了什么吗?
答案1
好的,我明白了。如果您为同一接口分配了多个 IP 地址,则所有子网声明都必须组合到另一个声明中。例如,Linux 计算机在 eth0 上有 192.168.1.1 和 10.10.10.1(均为 /24)IP。那么一个简单的范围将是:
shared-network mynet {
subnet 10.10.10.0 netmask 255.255.255.0 {
range 10.10.10.5 10.10.10.250;
allow unknown-clients;
}
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.194 192.168.1.200;
ignore unknown-clients;
}
}
共享网络 {} 必须位于两个子网声明周围。然后,当您启动 dhcp 服务器时,它会说正在监听 mynet 而不是 ip 地址。