我正在通过native vlan为传出数据包上的某些客户端mac插入vlan标签。我已经尝试过nh_hooks IN,OUT和Forward但没有取得任何成功。
我想要的是我可以将标签从客户端添加到本地vlan,然后通过相同的vlan发送它,或者我可以将基于MAC的某些客户端的本机vlan数据包转发到标记的vlan接口吗?
netlink代码或内核级代码中的任何建议?或者是否可以通过基于MAC的ebtables来实现?
答案 0 :(得分:0)
Linux中的VLAN标记是通过使用子接口完成的,例如: ip link add link eth0 name eth0.8 type vlan id 8
将标记的VID 8添加到eth0,创建eth0.8子接口。
本地VLAN是未在中继/端口上标记的VLAN,因此其在其他地方的VLAN ID取决于中继端点(交换机)在转发时是否以及如何标记帧。
在VLAN中继上,标记中的VID 帧正在运行的VLAN。
答案 1 :(得分:0)
PC1 --- [SW1] ---- [SW2] ----- [SW3] ---- PC3
[sw2] ---> PC2。 [sw2也连接到PC2。
假设SW2是不支持VLAN的非IEEE 802.1q交换机。 SW1,SW3支持。所有PC都在VLAN 10中。
中继端口上的SW1 / SW3将VLAN 10数据包作为未标记数据包发送,以便PC2能够理解它。当SW1 / SW3接收任何帧时,它将其归类为VLAN 10。 默认本机VLAN为VLAN 1.
第一个错误:本地VLAN帧/数据包是无标记发送和接收的。 (没有4字节的VLAN标头)。
如果我理解正确,要将未标记的本地VLAN转发到标记VLAN,将SW1本机vlan配置为VLAN 10,将SW3本地VLAN配置为Vlan 30. PC3在VLAN 30中.vlan 10将被翻译到VLAN 30。
因此PC1中的vlan 10与PC2中的未标记帧和PC3中的vlan 30相同。