- eth0 IP:192.168.1.100
- 别名接口 eth0:dhcp IP: 10.10.1.100
dhcpd.conf:
authoritative;
local-address 10.10.1.100;
subnet 10.10.1.0 netmask 255.255.255.0 {
range 10.10.1.10 10.10.1.50;
option routers 10.10.1.1;
option domain-name-servers 8.8.8.8, 8.8.4.4;
}
正在运行的进程:
# ps -elf | grep [d]hcp
4 S root 1876 1867 0 80 0 - 1661 poll_s 11:11 pts/2 00:00:00 dhcrelay -i eth0 10.10.1.100 -i eth0:dhcp -d
5 S dhcpd 1947 1 0 80 0 - 12121 poll_s 11:38 ? 00:00:00 /usr/sbin/dhcpd -user dhcpd -group dhcpd eth0:dhcp
我看到 DHCP DISCOVER 出现在 eth0 上并且中继代理将其转发到 10.10.1.100:
Forwarded BOOTREQUEST for <mac_address> to 10.10.1.100
Forwarded BOOTREQUEST for <mac_address> to 10.10.1.100
Forwarded BOOTREQUEST for <mac_address> to 10.10.1.100
Forwarded BOOTREQUEST for <mac_address> to 10.10.1.100
但 DHCP 服务器记录以下消息:
Sep 4 11:13:47 localhost dhcpd: DHCPDISCOVER from <mac_address> via 192.168.1.1: unknown network segment
Sep 4 11:13:50 localhost dhcpd: DHCPDISCOVER from <mac_address> via 192.168.1.1: unknowk network segment
Sep 4 11:13:54 localhost dhcpd: DHCPDISCOVER from <mac_address> via 192.168.1.1: unknown network segment
Sep 4 11:13:59 localhost dhcpd: DHCPDISCOVER from <mac_address> via 192.168.1.1: unknown network segment
已启用 IP 转发:
net.ipv4.ip_forward = 1
基本上,服务器必须位于 192.168.1.0/24 网络上,但是它应该从 10.10.1.0/24 范围分配 IP。
答案1
假设 ISC DHCPD,您不需要 dhcp 中继,但您需要在 dchpd.conf 中共享网络:
authoritative;
local-address 10.10.1.100;
shared-network eth0 {
subnet 192.168.1.100 netmask 255.255.255.0 {
}
subnet 10.10.1.0 netmask 255.255.255.0 {
range 10.10.1.10 10.10.1.50;
option routers 10.10.1.1;
option domain-name-servers 8.8.8.8, 8.8.4.4;
}
}
答案2
在我看来,您的 DHCP 中继似乎在错误的接口上进行监听。DHCP 中继必须在为客户端子网配置的接口上监听客户端的 DHCP 请求,以便将该信息中继到 DHCP 服务器。
dhcrelay 命令行提示你使用 eth0 作为接收接口。我会尝试这个命令行:
dhcrelay -i eth0:dhcp -d 192.168.1.100
这样,您将从 eth0:dhcp (10.10.1.100) 接收 DHCP 请求,并将它们发送到 192.168.1.100 上的服务器。并且不要忘记在 dhcpd.conf 中更改本地地址。
我不知道确切的 RFC,但 Wikipedia 可以提供很多帮助(维基百科上有关 DHCP 中继的信息)。另外,请阅读精美的手册:dhcrelay 手册和dhcpcd.conf 手册