gpt4 book ai didi

networking - 能否让 Micrel KSZ8995 遵守 RFC 3927,以免泄露链接本地地址?

转载 作者:可可西里 更新时间:2023-11-01 02:52:36 26 4
gpt4 key购买 nike

我的嵌入式系统使用 Micrel KSZ8995M 交换机,连接到两个“内部”设备(我所说的内部是指物理上位于同一 block 板上)和一个 LAN。

设备 1 是运行 Busybox Linux 的 ARMv5 处理器,具有通过 DHCP 或静态配置在 eth0 上的 LAN IP,以及本地链接/APIPA 169.254.137.10 eth0:0 上的地址。

设备 2 是一个较小的芯片,运行 ARTOS,谁知道还有什么,只有一个链接本地/APIPA 169.254.137.11 地址。

+----------------------------+
| +----------+ +----------+ |
| | Device 1 | | Device 2 | |
| +-----+----+ +-----+----+ |
| | | | <-- a "unit"
| +-----+-------------+----+ |
| | Micrel KSZ899M switch | |
| +-----------+------------+ |
+-------------|--------------+
|
+--+--+
| LAN |
+ - +

目的是让设备 1 和设备 2 能够通过 TCP/IP 相互通信,而 LAN(或任何递归连接的网络)上的任何其他设备都无法看到设备 2 或看到正在传输的数据在两个设备之间。

网络上也可能存在整个单元的多个实例,单元之间的链路本地地址不得冲突。

据我了解,RFC 3927 中定义的链路本地寻址仅适用于“内部”通信,在具有链路本地寻址的接口(interface)之间分派(dispatch)的数据包不应由交换机或路由器转发。

不幸的是,随着整个系统连接到 LAN,我看到来自更广泛网络中的多个设备对设备 2 的 ARP 响应,这意味着链路本地 IP 是可见的并且在整个网络中发生冲突.也就是说,Micrel 似乎转发了这些内容,但我看不到任何可以使其停止的配置。

我是否误解了 APIPA 寻址的工作方式?

或者,如果我是正确的,但 Micrel 只是没有适本地支持它们,我可以强制它合规吗?


引用资料:

最佳答案

By my understanding, link-local addressing as defined in RFC 3927 is intended for "internal" communications only and packets dispatched between interface with link-local addressing should not be forwarded by switches or routers.

好吧,第 2 层交换机甚至不知道 IP 地址。你的理解是错误的。链路本地地址不得由路由器转发,如 RFC 3927 中所定义。(第 3 层网络设备)

不过,ARP 请求交换机 转发。 (二层网络设备)

请参阅数据表中的第一句话,其中指出:

The KS8995M is a highly integrated Layer-2 managed switch

引用Network SwitchOSI Model有关第 2 层(MAC/以太网)和第 3 层(TCP/IP)通信之间差异的更多详细信息。

正如您已经指出的,KSZ8895M 确实以这种方式定义“本地”:

"Local" packets. Based on DA (Destination Address) look-up. If the destination port from the look-up table matches the port where the packet was from, the packet is defined as "local".

这意味着交换机不会转发数据包(在第 2 层、以太网、MAC 上!),当此数据包的目的地被分配到发送数据包的端口时。 “目标地址”在这件事上是 MAC 地址,而不是 IP 地址。

结论:(已修订)

默认情况下,只要内部交换机物理连接到您的 LAN,所有连接到交换机的设备对外部都是可见的。

为避免这种情况,您必须将 Network Segments 分开物理上或virtually .

不过你很幸运,KS8995M确实支持VLANs - 使用 VLAN 可以将“内部”网络与外部网络分开:

  • 将带有“Device 1”的端口添加到“VLAN 1”(私有(private) VLAN)
  • 仅将“设备 2”的端口添加到“VLAN 1”(私有(private) VLAN)
  • 将“设备1”的端口加入“VLAN 2”(VLAN外)
  • 确保带有“Outside LAN”的端口只有“VLAN 2”(outside VLAN)
  • 确保从所有端口中删除“VLAN 0”(默认 VLAN)。

这样,带有“设备 1”的端口可以与外部 LAN 网段和专用内部 LAN 网段进行通信。 “设备2”实际上与外界隔离,因此局域网无法与“设备2”通信。

有关 VLAN 配置,请参阅 CLI 用户指南中的第 6 页。

关于networking - 能否让 Micrel KSZ8995 遵守 RFC 3927,以免泄露链接本地地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13658993/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com