我认为 DHCP 不起作用,因为GIADDR
它不是源 IP 地址,正如本页所说的那样:
[DHCP 中继代理] 将 DHCPDISCOVER 消息的源 IP 地址更改为接收广播的 DHCPDISCOVER 的接口的 IP 地址。
请求通过,但回复不会返回给客户端或中继代理。
设置:我在虚拟机上有一个带有 dnsmasq 的管理程序。管理程序充当本地连接交换机(客户端子网)的路由器和中继代理。
- dnsmasq (10.0.0.5)
- 客户端子网:192.168.0.0/24
- 路由器/中继代理 (
dhcp-helper
):- 客户端子网接口:
eth1.2
(192.168.0.1) - DHCP-VM 接口:
venet0
(10.0.0.1) - 广域网接口:
eth0
(1.2.3.4)
- 客户端子网接口:
根据从 dnsmasq VM 捕获的数据包,看起来问题在于 DHCPDISCOVER 是从eth0
(WAN 接口)发送的,但正如协议规定的那样,它是通过GIADDR
(eth1.2
)回复的。
14:28:33.152534 IP (tos 0x0, ttl 64, id 42501, offset 0, flags [none], proto UDP (17), length 328)
1.2.3.4.67 > 10.0.0.5.67: [udp sum ok] BOOTP/DHCP, Request from de:ad:be:ef:ca:fe, length 300, hops 1, xid 0xbebfc411, Flags [none] (0x0000)
Gateway-IP 192.168.0.1
Client-Ethernet-Address de:ad:be:ef:ca:fe
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message Option 53, length 1: Discover
Parameter-Request Option 55, length 13:
Subnet-Mask, BR, Time-Zone, Classless-Static-Route
Domain-Name, Domain-Name-Server, Hostname, YD
YS, NTP, MTU, Option 119
Default-Gateway
Client-ID Option 61, length 7: ether de:ad:be:ef:ca:fe
14:28:36.153602 IP (tos 0xc0, ttl 64, id 40806, offset 0, flags [none], proto UDP (17), length 332)
10.0.0.5.67 > 192.168.0.1.67: [udp sum ok] BOOTP/DHCP, Reply, length 304, hops 1, xid 0xbebfc411, Flags [none] (0x0000)
Your-IP 192.168.0.29
Server-IP 127.0.0.2
Gateway-IP 192.168.0.1
Client-Ethernet-Address de:ad:be:ef:ca:fe
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message Option 53, length 1: Offer
Server-ID Option 54, length 4: 127.0.0.2
Lease-Time Option 51, length 4: 43200
RN Option 58, length 4: 21600
RB Option 59, length 4: 37800
Subnet-Mask Option 1, length 4: 255.255.255.0
BR Option 28, length 4: 192.168.0.255
Domain-Name-Server Option 6, length 4: 127.0.0.2
Domain-Name Option 15, length 10: "example.net"
Default-Gateway Option 3, length 4: 192.168.0.1
在我看来,源 IP 地址应该是GIADDR
(192.168.0.1)。我看不到如何在dhcp-helper
DHCP 中继代理中配置它。任何想法如何解决这个问题?