如何在传出数据包上插入VLAN标记

问题描述 投票:0回答:2

我正在通过本机vlan为传出数据包上的某些客户端mac插入vlan标签。我已经尝试过nh_hooks IN,OUT和Forward但没有取得任何成功。

我想要的是我可以添加标签从客户端到本机vlan的数据包,然后通过相同的vlan发送它或者是否有可能我可以从一些基于MAC的客户端转发本地vlan数据包到标记的vlan接口?

netlink代码或内核级代码中的任何建议?或者是否可以通过基于MAC的ebtables实现这一点?

linux ethernet netlink vlan
2个回答
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。


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相同。

© www.soinside.com 2019 - 2024. All rights reserved.