我在Ubuntu12.04上运行一个应用程序,我写了一些远程开关pipe理。 我只有一个网卡连接到被pipe理的交换机的networkingeth0,它使用IPv4 10.0.0.1/24进行设置。 这个IPv4地址是这个Ubuntu机器唯一可以使用的地址,因为这是分配给Ubuntu机器的唯一“全局”可路由地址(由于某些networkingpipe理,而不是由于技术问题…)
我需要交换机pipe理stream量(通过SSH的NetConf,使用UDP端口830)包含一个VLAN ID为444的802.1q VLAN标记),发送NetConf帧时,也会收到这个标记。 所有其他stream量(http,ftp,dhcp,snmp等)将使用不带VLAN标记的eth0。
我已经尝试在eth0上使用一个VLAN接口eth0.444,但似乎发送的stream量不包括VLAN标记。
我可以(以及如何)使用ebtables / iptables将特定的VLAN标记添加到特定的UDP端口stream量? ebtables / iptables解决scheme是否也适用于接收path?
谢谢!
大卫
iptables和ebtables不能在数据包上设置VLAN标记。 这就是VLAN子接口的用途。
有一篇关于Ubunut wiki的文章,讨论了您应该查看的VLAN 。 总之,虽然,你想:
确保802.1q模块加载modprobe 80211q 。
使用vconfig add eth0 444创buildVLAN子接口。
使用ip addr add xxxx/z dev eth0.444 VLAN 444中使用的子网的IP地址和子网掩码添加到eth0.444子接口
您还需要configuration服务器连接到的交换机端口接受VLAN 444的标记帧。您不提交您的交换机品牌,所以我不能在那里提供很多指导,但是您可能正在寻找configuration为VLAN 444的标记成员的“trunk”或“general”端口以及分配给eth0接口的子网使用的任何VLAN的未标记成员。
请注意, tcpdump 在显示VLAN标记时可能会出现问题,因此如果您只是在主机上使用tcpdump来validation帧是否被标记,则不一定假定帧未被标记。
编辑:
通常VLAN和IP子网之间有一对一的关系。 如果交换机在VLAN 444中具有与当前eth0端口所在的VLAN相同的IP子网,那么这将是非常非典型的。
如果您的接口没有VLAN标记,802.1Q标记将被插入MAC标头,并且内核将不会对其进行解码。 因此,即使您可以修改传出数据包,带有VLAN标记的传入通信仍将被忽略。
你需要做的是创build一个VLAN标记的接口,就像你一样,并添加一个IP到你想要访问的交换机IP在同一个愤怒。