Linux DHCP-Helper:GIADDR 不是源 IP 地址

网络工程 dhcp
2022-02-06 21:27:33

我认为 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 接口)发送的,但正如协议规定的那样,它是通过GIADDReth1.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-helperDHCP 中继代理中配置它。任何想法如何解决这个问题?

1个回答

[DHCP 中继代理] 将 DHCPDISCOVER 消息的源 IP 地址更改为接收广播的 DHCPDISCOVER 的接口的 IP 地址。

这是不正确的。中继代理将DHCPDISCOVER数据包作为广播或单播数据包转发到 DHCP 服务器。数据包的源地址会发生变化,但会是与 DHCP 服务器在同一网络上的接口的源地址。

GIADDR除非是 0.0.0.0,否则不会改变。否则,中继会将 GIADDR 更改为接收原始DHCPDISCOVER的接口的 IP 。