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

Linux 如何在传出数据包上插入VLAN标记,linux,ethernet,netlink,vlan,Linux,Ethernet,Netlink,Vlan,我正在通过本机vlan在传出数据包上为一些客户端MAC插入vlan标记。我尝试过NHU的钩进钩出钩进,钩出钩出钩进,钩出钩出钩进,钩出钩进,钩出钩出钩进,钩出钩出钩进,但都没有成功 我想要的是,我可以将标记添加到从客户端到本机vlan的数据包中,然后通过相同的vlan发送它,或者我可以将本机vlan数据包从基于MAC的某个客户端转发到标记的vlan接口吗 在netlink代码或内核级代码中有什么建议吗?或者可以通过基于MAC的ebtables实现这一点吗?Linux中的VLAN标记是通过使用子接

我正在通过本机vlan在传出数据包上为一些客户端MAC插入vlan标记。我尝试过NHU的钩进钩出钩进,钩出钩出钩进,钩出钩出钩进,钩出钩进,钩出钩出钩进,钩出钩出钩进,但都没有成功

我想要的是,我可以将标记添加到从客户端到本机vlan的数据包中,然后通过相同的vlan发送它,或者我可以将本机vlan数据包从基于MAC的某个客户端转发到标记的vlan接口吗


在netlink代码或内核级代码中有什么建议吗?或者可以通过基于MAC的ebtables实现这一点吗?

Linux中的VLAN标记是通过使用子接口来完成的,例如,
ip链接添加链接eth0 name eth0.8 type VLAN id 8
将标记的VID 8添加到eth0,创建eth0.8子接口

本机VLAN是未在中继/端口上标记的VLAN,因此其在其他位置的VLAN ID取决于中继端点(交换机)在转发时是否标记帧以及如何标记帧


在VLAN主干上,标记中的VID是运行帧的VLAN。

Linux中的VLAN标记是通过使用子接口完成的,例如
ip链接添加链接eth0 name eth0.8 type VLAN id 8
将标记的VID 8添加到eth0,创建eth0.8子接口

本机VLAN是未在中继/端口上标记的VLAN,因此其在其他位置的VLAN ID取决于中继端点(交换机)在转发时是否标记帧以及如何标记帧

在VLAN主干上,标记中的VID是帧正在运行的VLAN。

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

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

堆栈溢出是一个用于编程和开发问题的站点。这个问题似乎与主题无关,因为它与编程或开发无关。请参阅帮助中心。也许或会是一个更好的询问位置。堆栈溢出是一个用于编程的站点ing和开发问题。这个问题似乎离题了,因为它不是关于编程或开发的。请参阅帮助中心。也许或者会是一个更好的问题。实际上,我想做的是,一个客户端数据包与eth0在桥接接口处,我们称之为br wan,我想为该c转发数据包从br wan到br-vlan_8的客户端,这是eth0.8的网桥接口。可以这样做吗?因为我想标记特定的客户端,但它的数据包来自eth0的网桥接口。我的vlan接口已经创建。当然这是可能的,但很可能需要创建/使用适当的子接口。具体取决于正是出于您的需要,仅使用两个交换机端口进行标记可能更容易(端口1使用VLAN 8未标记,端口2已标记)实际上,我想做的是,其中一个客户端数据包来自与eth0的网桥接口,我们称之为br wan,我想将该客户端的数据包从br wan转发到br-vlan_8,这是eth0.8的网桥接口。有可能吗?因为我想标记特定的客户端,但它的数据包来自于网桥接口of eth0。我的VLAN接口已经创建。当然这是可能的,但很可能您需要创建/使用适当的子接口。根据您的具体需要,仅使用两个交换机端口进行标记可能更容易(端口1使用未标记的VLAN 8,端口2使用标记的VLAN 8)。