AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 435453
Accepted
seaquest
seaquest
Asked: 2012-10-06 23:53:26 +0800 CST2012-10-06 23:53:26 +0800 CST 2012-10-06 23:53:26 +0800 CST

对来自中继的请求的回复转到中继的内部 IP,而不是原始请求的源 IP

  • 772

在 Linux 上运行的 Dhcpd 通过在其他远程机器上运行的 dhcrelay 获取 dhcp 请求。

Oct  6 10:09:46 2012 dhcpd: DHCPDISCOVER from 00:1e:68:06:eb:37
(oguz-U300) via 172.16.17.81

tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
10:35:01.112500 IP (tos 0x0, ttl  64, id 0, offset 0, flags [DF],
proto: UDP (17), length: 328) 192.168.0.81.67 > 192.168.0.1.67:
BOOTP/DHCP, Request from 00:1e:68:06:eb:37, length: 300, hops:1,
xid:0xe378fc7e, flags: [none] (0x0000)
          Gateway IP: 172.16.17.81
          Client Ethernet Address: 00:1e:68:06:eb:37 [|bootp]

它与子网匹配并发送回复。但是回复不会转到请求的 dhcrelay 外部 IP (192.168.0.81)。相反,它转到运行 dhcrelay 的机器的内部接口 IP。而且我认为是因为这台运行 dhcrelay 的远程机器或 dhcrealy 本身正在丢弃数据包。

Oct  6 10:09:46 2012 dhcpd: DHCPOFFER on 172.16.17.11 to
00:1e:68:06:eb:37 (oguz-U300) via 172.16.17.81

10:35:02.050108 IP (tos 0x0, ttl  64, id 0, offset 0, flags [DF],
proto: UDP (17), length: 328) 192.168.0.1.67 > 172.16.17.81.67:
BOOTP/DHCP, Reply, length: 300, hops:1, xid:0xe378fc7e, flags: [none]
(0x0000)
          Your IP: 172.16.17.11
          Gateway IP: 172.16.17.81
          Client Ethernet Address: 00:1e:68:06:eb:37 [|bootp]

这是正常行为吗?

运行 dhcrelay 的机器:

eth1(ext)      Link encap:Ethernet  HWaddr 00:90:0B:21:43:F4
          inet addr:192.168.0.81  Bcast:192.168.0.255  Mask:255.255.255.0
eth2(int)      Link encap:Ethernet  HWaddr 00:90:0B:21:43:F5
          inet addr:172.16.17.81  Bcast:172.16.17.255  Mask:255.255.255.0

 3582 ?        Ss     0:00 /usr/sbin/dhcrelay -i eth2 192.168.0.1

运行 dhcpd 的机器:

eth1      Link encap:Ethernet  HWaddr 00:90:0B:23:97:D1
          inet addr:192.168.0.1  Bcast:192.168.0.255  Mask:255.255.255.0

option domain-name "test.com";
option subnet-mask 255.255.255.0;
authoritative;
ignore client-updates;

ddns-update-style ad-hoc;
default-lease-time 86400;
max-lease-time 86400;

 subnet 192.168.0.0 netmask 255.255.255.0 {
        range 192.168.0.135 192.168.0.169;
        option broadcast-address 192.168.0.255;
        option domain-name-servers 192.168.0.1;
        option domain-name "test.com";
        option routers 192.168.0.1;
 }

 subnet 172.16.17.0 netmask 255.255.255.0     {
        local-address 192.168.0.1;
        server-identifier 192.168.0.1;
        range 172.16.17.10 172.16.17.11;
        option broadcast-address 172.16.17.255;
        option routers 172.16.17.81;
        }

(我放了本地地址和服务器标识符。但这没有帮助)

问候,

——奥古兹·耶尔马兹

更新:

发现第一个问题。我只在侦听内部接口上配置了 dhcrelay。看来(当然)也应该听外部接口的回复。看来数据包的目的地并不重要。dhrelay 会将其转发到内部网络。

但是,我已经删除了 dhcpd 服务器上的路由以到达 172.16.17.x 子网。它再次尝试向 172.16.17.81 发送回复。因为它不知道将它从默认网关发送到 Internet 的路由。

eth0:  IP (tos 0x0, ttl  64, id 0, offset 0, flags [DF], proto: UDP
(17), length: 328) 192.168.1.2.67 > 172.16.17.81.67: BOOTP/DHCP,
Reply, length: 300, hops:1, xid:0x32830125, secs:3, flags: [none]
(0x0000)
eth0:     Your IP: 172.16.17.11
eth0:     Gateway IP: 172.16.17.81
eth0:     Client Ethernet Address: 00:1e:68:06:eb:37 [|bootp]

如何强制 dhcpd 强制发送对请求 IP 的回复?因为,给我们分配IP的子网添加路由意义不大。

互联网 - dhcpd - 192.168.0.1 - SOMENET - 192.168.0.81 - dhcrelay - 172.16.17.0/24

192.168.0.1 没有到 172.16.17.0 的路由,也没有直接连接到该网络的接口。

isc-dhcp
  • 1 1 个回答
  • 8543 Views

1 个回答

  • Voted
  1. Best Answer
    BatchyX
    2012-10-07T00:01:02+08:002012-10-07T00:01:02+08:00

    这个是正常的。DHCP 服务器将使用网关 IP (giaddr) 中存在的 IP 地址发送响应,如规范中所写。通常,DHCP 更喜欢使用 DHCP/BOOTP 有效负载中的地址,而不是 IP 和 MAC 标头中的地址。

    Gateway IP地址必须是连接客户端的接口地址;因此,如果中继有多个连接到客户端的接口,那么它可以简单地发送接收到请求的接口的 IP 地址,服务器将响应该 IP,因此中继可以知道答案必须在哪个接口上中继。这允许 DHCP 中继是无状态的。

    如果你中继拒绝它,那么你的中继有问题。路由问题,也许?


    更新:

    但是,我已经删除了 dhcpd 服务器上的路由以到达 172.16.17.x 子网。

    这在很多方面都是错误的。通过 DHCP 配置客户端后,它们可以直接通过单播联系 DHCP 服务器,而无需使用中继。如果 DHCP 服务器无法回答这些查询,则可能会发生坏事,例如客户端无法延长或删除其租约。

    因为,给我们分配IP的子网添加路由意义不大。

    除了这是 DHCP 的工作方式......

    • 0

相关问题

  • 访问 DHCP 客户端的供应商封装选项

  • DHCP-DDNS 添加的自动子域通配符?

  • dhcpd 的系统日志消息格式记录在哪里?

  • DHCP:在日志文件中记录主机声明

  • 选项 82 和 dhcpd。第二台计算机的“无免费租赁”

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve