SRX DHCP 客户端与 HP Procurve DHCP 中继的兼容性

网络工程 杜松 杜松-srx 瞻博网络 hp-procurve dhcp
2021-07-14 19:10:52

我正在尝试在某些瞻博网络 SRX100 上引导配置,但遇到了一些 DHCP 问题。

具体来说,我将 0/0 端口(软件中的 fe-0/0/0)连接到我现有的网络,在那里 DHCP 对我使用过的几乎所有其他设备都非常可靠。SRX100 未获得 DHCP 地址。当我尝试这样做时,SRX100 是开箱即用的默认配置。

我将其中一台设备带到我家并将其插入我的家庭网络,它通过 DHCP 在我的家庭网络上获得了一个 IP 地址,没有任何问题。

我的办公网络在我的桌面上有一个 Procurve 1400(仅第 2 层)交换机,上行连接到 Polycom IP670 IP 电话(充当简单的第 2 层交换机),上行连接到 Procurve 3500yl 交换机,用作网络的路由器helper-address 1.1.1.1" 在指向 DHCP 服务器的 vlan 接口上用于 DHCP 中继。

有没有人有任何经验让 SRX DHCP 客户端通过 Procurve 获取 IP 地址(运行 K.15.09.0012 软件......尽管 Procurve 上的多个固件版本都存在问题)。SRX100 开箱时似乎有 11.2,但我认为升级到 12.1X44-D10.4 后问题仍然存在。

有没有人有任何建议来解决这个问题?Procurve 3500yl 似乎不承认看到来自 SRX100 的 DHCP 客户端请求,但 Procurves 在这方面的故障排除信息似乎有限。DHCP 服务器肯定没有看到任何与 SRX100 相关的 DHCPDISCOVER 数据包到达。

我的解决方法是在 SRX100s 上静态配置一个 IP 地址,以将它们连接到网络并完成我的其余配置,但我正在进行的项目涉及将 SRX100s 发送到不受我控制的远程位置,并且,因此,依赖于他们可靠地获取用于连接的 DHCP 地址,所以我真的很想解决这个问题并解决一个特定的原因,所以我知道如果这种情况发生在远程站点,我可能会寻找什么。

更新: 我已(再次检查)出厂默认设置 SRX100,并将其直接插入 Procurve 3500yl 上的端口,但我仍然看到问题,因此从讨论中删除了 1400 和 IP670 电话。我在下面包含了 SRX100 的 tcpdump 输出......正如你所看到的,它发送了最简单的 DHCP 数据包,当往往表明问题出在 3500yl 上的 dhcp-relay 功能上时。我找不到任何方法从 3500yl 获得任何调试输出,显示数据包命中 dhcp-relay 功能(成功或失败)。关于如何在 3500yl 上调试此功能的建议将不胜感激。

tcpdump -n -s 0 -c 1 -vvv -r juniper.dhcp.pcap 
reading from file juniper.dhcp.pcap, link-type JUNIPER_ETHER (Juniper Ethernet)
17:49:11.538670 
Juniper PCAP Flags [Ext], PCAP Extension(s) total length 16
  Device Media Type Extension TLV #3, length 1, value Ethernet (1)
  Logical Interface Encapsulation Extension TLV #6, length 1, value Ethernet (14)
  Device Interface Index Extension TLV #1, length 2, value 34304
  Logical Interface Index Extension TLV #4, length 4, value 70
-----original packet-----
IP (tos 0x0, ttl 1, id 13874, offset 0, flags [none], proto UDP (17), length 328)
0.0.0.0.68 > 255.255.255.255.67: [udp sum ok] BOOTP/DHCP, Request from a8:d0:e5:1c:68:80, length 300, xid 0x643c9869, Flags [Broadcast] (0x8000)
  Client-Ethernet-Address a8:d0:e5:1c:68:80
  Vendor-rfc1048 Extensions
    Magic Cookie 0x63825363
    DHCP-Message Option 53, length 1: Discover
    END Option 255, length 0
    PAD Option 0, length 0, occurs 56
3个回答

我就这个问题向 HP 开了一个案例。在升级到无用的 1 级技术之后,2 级技术非常警觉地发现了我没有的东西。

SRX 正在发送其 TTL 为 1 的 DHCPDISCOVER 数据包。 Procurve 显然会减少 TTL 并使用中继数据包中的结果 TTL 到 DHCP 服务器。在这种情况下,递减使 TTL 为 0,这意味着数据包被丢弃在地板上。

这实际上是 DHCP/BOOTP 中继的规范,尽管很明显它会导致互操作性降低。我已要求 HPNetworking 将此视为错误/RFE 并更改行为。在此情况下,没有立即回应该请求。

发送 TTL 为 1 的 DHCPDISCOVER 的 SRX 也可能在规范内,但是,再次选择降低互操作性,所以我计划在相同的基础上用 JTAC 开一个案例。

我会在 Juniper 和 HP 的响应可用时添加更多信息。

顺便说一下,我已经测试了 Cisco 4506(固件版本不是立即可用)和 Brocade/Foundry FastIron Edge X(7.2 或 7.3 固件,我相信,没有立即访问确认)的中继行为,它们都处理使用 TTL 1 中继请求没有问题。

更新 有一种方法可以更改 SRX 在其 DHCP 请求上使用的 TTL 值,但它不是从 JunOS cli 内...它是从底层 Unix 操作系统完成的。

root@% sysctl -w net.inet.ip.mcast_ttl=64

我已经与 HP 开了一个 RFE,以使他们的中继功能更具弹性,但他们尚未就是否/何时进行处理做出回应。

如果您不知道问题出在哪里,并且您拥有来自三个供应商的三台设备,然后您似乎没有任何可见性(SRX100、1400 和 IP670),则很难进行故障排除。我无法与特定设备交谈,但跟踪数据包永远不会出错。由于 ProCurve 1400 是不受管理的设备,因此您需要使用网络分路器。

您可能希望在以下位置捕获流量(基于您声明 3500yl 未收到发现数据包):

  • 在 SRX100 和 1400 之间。
  • 在 1400 和 IP670 之间
  • 在 IP670 和 3500yl 之间

您可以在办公桌上完成所有这些操作,虽然在您连接/断开连接时点击会造成干扰,但它只会影响您和您的设备。

我将从这个列表的顶部开始,因为它应该允许您至少捕获一次 DHCP 发现数据包,然后可以将 DHCP 发现数据包的任何后续捕获与此进行比较,以查看是否有任何修改。

您可能还想从正常工作的设备中捕获 DHCP 发现数据包,以查看与 SRX100 发出的发现数据包是否有任何差异。

一旦您知道数据包出错的地方,您就可以查看具体的故障排除原因。

尽管您已经在其他地方测试过 SRX:

  1. SRX 是否在家里获得了具有完全相同配置的地址
    • 这应该意味着以下不是问题:
    • set security zones security-zone host-inbound-traffic system-services dhcp 已经完成
    • 基本接口配置完成(原始接口、vlan 标签、正确 vlan 中的接口、该 vlan 在
  2. 接口是否真的在瞻博网络端干净利落地出现?
    • show interfaces fe-0/0/0 extensive 是你的朋友
    • (我知道这不适合这个,但仍然......)对于光接口还要检查功率水平: show interfaces diagnostics optics ge-0/0/0
  3. 向 DHCP 客户端添加跟踪:
配置
设置系统服务 dhcp 跟踪选项文件 dhcp_client.log 世界可读
设置系统服务 dhcp traceoptions 标志客户端
设置系统服务 dhcp 跟踪选项级别全部
提交并退出

然后在打开界面时监视日志monitor start dhcp_client.log(完成后记得删除traceoption)