将 VLAN 标记添加到特定 UDP 端口流量

DaG*_*aGN 1 iptables vlan linux-networking ubuntu-12.04

我正在 Ubuntu12.04 中运行我编写的一个应用程序,它执行一些远程交换机管理。我只有一个 NIC 连接到托管交换机网络,eth0 设置为 IPv4 10.0.0.1/24。这个 IPv4 地址是这台 Ubuntu 机器可以使用的唯一地址,因为这是分配给 Ubuntu 机器的唯一“全局”可路由地址(由于某些网络管理,而不是由于技术问题......)

我需要交换机管理流量(通过 SSH 的 NetConf,使用 UDP 端口 830)来包含一个带有 VLAN ID 444 的 802.1q VLAN 标签),在发送 NetConf 帧时,也会收到带有此标签的回复。所有其他流量(http、ftp、dhcp、snmp 等)将使用没有 VLAN 标记的 eth0。

我尝试在 eth0 上使用 VLAN 接口 eth0.444,但似乎发送的流量不包含 VLAN 标记。

我可以(以及如何)使用 ebtables/iptables 将特定的 VLAN 标记添加到特定的 UDP 端口流量?ebtables/iptables 解决方案是否也适用于接收路径?

谢谢!

大卫

Eva*_*son 5

iptables并且ebtables无法在数据包上设置 VLAN 标记。这就是 VLAN 子接口的用途。

Ubunut wiki 上一篇文章讨论了您可能应该查看的VLAN。总之,您希望:

  • 确保 802.1q 模块加载了modprobe 8021q.

  • 创建 VLAN 子接口vconfig add eth0 444

  • 将 VLAN 444 中使用的子网的 IP 地址和子网掩码添加到eth0.444子接口ip addr add x.x.x.x/z dev eth0.444

您还需要配置服务器连接的交换机端口以接受 VLAN 444 的标记帧。您没有提到您的交换机品牌,所以我无法在那里提供太多指导,但您可能正在寻找配置为 VLAN 444 的标记成员的“中继”或“通用”端口,以及分配给eth0接口的子网使用的任何 VLAN 的未标记成员。

请注意,显示 VLAN 标记tcpdump可能会出现问题,因此如果您只是tcpdump在主机本身上使用来验证帧是否已标记,则不必假定帧没有被标记。

编辑:

通常,VLAN 和 IP 子网之间存在一对一的关系。如果交换机在 VLAN 444 中有一个管理接口,该接口与您当前eth0端口所在的任何 VLAN 是相同的 IP 子网,那将是非常不典型的。