Networking Micrel KSZ8995能否被说服遵守RFC 3927,以避免泄露链路本地地址?

Networking Micrel KSZ8995能否被说服遵守RFC 3927,以避免泄露链路本地地址?,networking,tcp-ip,link-local,Networking,Tcp Ip,Link Local,我的嵌入式系统使用了一个micrelksz8995m交换机,连接到两个“内部”设备(我所说的“内部”是指物理上坐在同一块板上)和一个局域网 设备1是一个运行Busybox Linux的ARMv5处理器,其LAN IP由DHCP配置或在eth0上静态配置,并且在eth0:0上有一个链接本地/APIPA169.254.137.10地址 设备2是一个运行ARTOS的较小芯片,谁知道还有什么,只有一个本地/APIPA169.254.137.11地址链接 +------------------------

我的嵌入式系统使用了一个micrelksz8995m交换机,连接到两个“内部”设备(我所说的“内部”是指物理上坐在同一块板上)和一个局域网

设备1是一个运行Busybox Linux的ARMv5处理器,其LAN IP由DHCP配置或在
eth0
上静态配置,并且在
eth0:0
上有一个链接本地/APIPA
169.254.137.10
地址

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

+----------------------------+
| +----------+  +----------+ |
| | Device 1 |  | Device 2 | |
| +-----+----+  +-----+----+ |
|       |             |      |   <-- a "unit"
| +-----+-------------+----+ |
| | Micrel KSZ899M switch  | |
| +-----------+------------+ |
+-------------|--------------+
              |
           +--+--+
           | LAN |
           +  -  +
+----------------------------+
| +----------+  +----------+ |
||装置1 | |装置2 ||
| +-----+----+  +-----+----+ |
|| | | |KSZ8895M数据表(在第24页中,该数据表始终引用KS8895M,因此我将假设功能等效):

KS8895M不会转发以下数据包:

  • 错误包。这些错误包括帧错误、FCS错误、对齐错误和非法大小数据包错误
  • 802.3x暂停帧。KS8895M将截获这些数据包并执行适当的操作
  • “本地”数据包。基于DA(目标地址)查找。如果查找表中的目标端口与数据包来自的端口匹配,则数据包被定义为“本地”
这确实表明,我认为Micrel不遵守rfc3927,而是以上面定义的方式定义“local”

那么,不,很遗憾,您将无法使其正常工作。

KSZ8895M数据表(该数据表通篇引用KS8895M,因此我将假设功能等效)在第24页上说:

KS8895M不会转发以下数据包:

  • 错误包。这些错误包括帧错误、FCS错误、对齐错误和非法大小数据包错误
  • 802.3x暂停帧。KS8895M将截获这些数据包并执行适当的操作
  • “本地”数据包。基于DA(目标地址)查找。如果查找表中的目标端口与数据包来自的端口匹配,则数据包被定义为“本地”
这确实表明,我认为Micrel不遵守rfc3927,而是以上面定义的方式定义“local”

那么,不,不幸的是,你将无法让它工作

据我所知,RFC 3927中定义的链路本地寻址仅用于“内部”通信,在具有链路本地寻址的接口之间发送的数据包不应由交换机或路由器转发

嗯,第二层交换机甚至不知道IP地址。你的理解是错误的。按照RFC 3927中的定义,路由器不得转发链路本地地址。(第三层网络设备)

ARP请求由交换机转发。(第二层网络设备)

见数据表中的第一句话,其中说明:

KS8995M是一款高度集成的第2层管理交换机

有关第2层(MAC/Ethernet)和第3层(TCP/IP)通信之间差异的更多详细信息,请参阅和

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

“本地”数据包。基于DA(目标地址)查找。如果查找表中的目标端口与数据包来自的端口匹配,则数据包被定义为“本地”

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

结论:(修订)

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

为了避免这种情况,您必须从物理上或物理上分离

但幸运的是,KS8995M确实支持—使用VLAN,您可以将“内部”网络与外部分离:

  • 将带有“设备1”的端口添加到“VLAN 1”(专用VLAN)
  • 仅将带有“设备2”的端口添加到“VLAN 1”(专用VLAN)
  • 将带有“设备1”的端口添加到“VLAN 2”(VLAN外部)
  • 确保带有“外部LAN”的端口只有“VLAN 2”(外部VLAN)
  • 确保从所有端口删除“VLAN 0”(默认VLAN)
这样,带有“设备1”的端口可以与外部LAN段和专用内部LAN段通信。“设备2”实际上与外部隔离,因此LAN无法与“设备2”通信

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

据我所知,RFC 3927中定义的链路本地寻址仅用于“内部”通信,在具有链路本地寻址的接口之间发送的数据包不应由交换机或路由器转发

嗯,第二层交换机甚至不知道IP地址。你的理解是错误的。按照RFC 3927中的定义,路由器不得转发链路本地地址。(第三层网络设备)

ARP请求由交换机转发。(第二层网络设备)

见数据表中的第一句话,其中说明:

KS8995M是一款高度集成的第2层管理交换机

有关第2层(MAC/Ethernet)和第3层(TCP/IP)通信之间差异的更多详细信息,请参阅和

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

“本地”数据包。基于DA(目标地址)查找。如果查找表中的目标端口与数据包来自的端口匹配,则数据包被定义为“本地”

这意味着交换机不转发数据包(打开)