- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我的嵌入式系统使用 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 Switch和 OSI 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 可以将“内部”网络与外部网络分开:
这样,带有“设备 1”的端口可以与外部 LAN 网段和专用内部 LAN 网段进行通信。 “设备2”实际上与外界隔离,因此局域网无法与“设备2”通信。
有关 VLAN 配置,请参阅 CLI 用户指南中的第 6 页。
关于networking - 能否让 Micrel KSZ8995 遵守 RFC 3927,以免泄露链接本地地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13658993/
我的嵌入式系统使用 Micrel KSZ8995M 交换机,连接到两个“内部”设备(我所说的内部是指物理上位于同一 block 板上)和一个 LAN。 设备 1 是运行 Busybox Linux 的
我是一名优秀的程序员,十分优秀!