PVID和VID与交换机端口
来源 https://blog.51cto.com/692344/1061467
参考 http://blog.sina.com.cn/s/blog_dfd128c60102vt4i.html
1. PVID (Port VLAN ID)
Untag 的 port 可以转发哪个 VLAN 的封包(如果是 Tag port 则例外)例如:此 port 的 PVID = 1,代表此 port 可以转发 VLAN1 的封包,因为 Untag 的封包进入 port 后,会被标上 VID1。
2. VID (VLAN ID)
VLAN内的port可以接收发自这个VLAN的封包。
例如:此 port 的 VID = 2,代表此 port 可以接收 VLAN2 的封包。
PVID 与 VID:
当 port1 同时属于 VLAN1、VLAN2、VLAN3 时,而它的 PVID 为 1,那么 port1 可以接收到 VLAN1、VLAN2、VLAN3 的封包,但发出的封包只能发到 VLAN1 中。
3. UnTag
此封包不带 Tag,意思是不带 VLAN ID。
4. Tag
此封包带 Tag ,意思是带 VLAN ID。
5. untagged port
此 port 转发出的封包上都没有 Tag (untagged)。 若有 Tag 的封包进入 switch,则其经过 untagged port 时,Tag 将被去除 。(用于连接一般设备、电脑)
6. tagged port
从该 port 转发出的封包上都将有 Tag (tagged)。 若有非 Tag 的封包进入 switch,则其经过 tagged port 时,Tag 将被加上。 将使用在 ingress (流入)端口上的 pvid 设定作为 Tag 的 VLAN ID。 (用于交换机与交换机之间传输)
交换机上的端口分为三种一种是接入层端口直连设备的,叫做Access;一种是交换机和交换机之间的端口负责汇聚的叫做Trunk,还有一种是Access与Trunk混合的模式,叫做Hybrid。
ACCESS:
Access端口负责接终端设备,他收到一个帧的时候,如果帧这个没有标记他就用自己的pvid给他打上标记,他在发出一个帧时如果VID=PVID就去掉标记(解标记)以保证传送给终端设备的帧没有被变动过(中间设备添加了标记),pvid是在划分vlan时候每个端口都有的属性,默认情况下思科交换机中每个端口初始pvid是1,表示他是vlan 1的成员们如果你给他划分了其他VLAN那么PVID相应会发生更改,
PVID并不是加在帧头的标记,而是端口的属性,用来标识端口接收到的未标记的帧。
ACCESS端口的特点是只允许符合PVID的流量通过。
TRUNK:
Trunk中继链路,允许各种VLAN通过.当收到一个没有tag的标记的时候就用自己的pvid给他标记,当发送一个帧时候如果vid=pvid则去掉pvid,与Access不同的是,Trunk有一个属于自己的本征VLAN(Native VLAN,也叫PVID),用来发送一些cdp,bpdu等交换机间联系的数据或者管理流量,从交换机自身产生的帧在发出去的时候是不会带标记的,因为VID=pvid所以标记被去掉,而对端接收到没有标记的帧时候就会用自身本征VLAN的信息给他加上标记,然后查看交换表如果发现目的地址是自己则去掉标记,如果发现目的mac地址不是自己则继续转发给其他Trunk同时去掉标记(因为一个交换机只有一个本征VLAN所有pvid=vid去掉标记)
Hybrid:
Hybrid是Access与Trunk的混合模式,它允许VID=pvid。Hybrid与Trunk一样,在该端口上可以传送多个vlan的包,一般用于交换机与交换机之间,或者交换机与服务器之间的链接。如果收到的数据包不带vlan,则加上pvid进行转发;如果收到的数据包带vlan,则判断该端口是否允许该vlan进入,如果可以则进行转发,否则丢弃。往外发送数据时,允许多个VLAN 的数据帧不打 TAG。
802.1Q的VLAN是在二层帧里加进VLAN标识,俗称打tag,而计算机不能解析这种二层的帧,所以交换机的一个端口在分到一个VLAN时有tag和untag属性两种属性,tag端口用来连接设备,untag端口用来连接计算机。Tag端口出去的帧一般都打上了tag,tag中的VID有的来自PVID,有的则来自其它tag端口中本身就含有tag的帧。
设备互连时,由tag中的VID决定了一个二层帧属于哪个VLAN,而计算机不具备打tag的功能,所以只有给连接计算机的端口添加一个属性,用来决定计算机发出的未标记的帧属于哪个VLAN,这个属性就是PVID。
----------------------
OpenWrt 802.1Q VLAN
Trunk口 Trunk口上可以同时传送多个VLAN的包,一般用于交换机之间的链接。
Access口 Access口只能属于1个VLAN,一般用于连接计算机的端口。
pvid 即端口vlan id号,是非标记端口的vlan id 设定,当非标记数据包进入交换机,交换机将检查vlan设定并决定是否进行转发。一个ip包进入交换机端口的时候,如果没有带tag头,且该端口上配置了pvid,那么,该数据包就会被打上相应的tag头!如果进入的ip包已经带有tag头(vlan数据)的话,那么交换机一般不会再增加tag头,即使是端口上配置了pvid号;当非标记数据包进入交换机。
vid 即vlan id; 1:vlan1(eth0.1); 2:vlan2(eth0.2);
----------------------
在openwrt系统下划分vlan来隔离端口
组网环境:
port0:为wan口,连接外网,剩下的都是lan口;
port1,port2,port3分别直连pc0,pc1,pc2,并配置好ip地址
预想结果:
pc0,pc1,pc2分别为三个不同的网段,pc1与pc2不能相互通信,其他都可以互通,并且可以上网
实际配置:
1.先划分vlan(页面-网络-交换机)
id为1:关联cpu0,不关联port1,关闭port2,关闭port3,不关联port4 (这个vlan1默认就存在)
id为2:关联cpu0,关闭port1,不关联port2,关闭port3,关闭port4
id为3:关联cpu0,关闭port1,关闭port2,不关联port3,关闭port4
2.配置接口(页面-网络-接口)
接口名为lan1 选择虚拟接口eth1.1 配置静态ip为172.168.0.1/16 (这个接口也是默认存在的,下面的虚拟接口eth1.2中的2其实就是vlan的id,也就是vlan2)
接口名为lan2 选择虚拟接口eth1.2 配置静态ip为192.16.2.2/24
接口名为lan3 选择虚拟接口eth1.3 配置静态ip为1792.16.3.3/24
3.其实虽然配置了上面的vlan,但是并没有真正的隔离(pc1能ping同pc2,因为这个设备不是真正的二层交换机,有路由功能),需要防火墙配置,用命令iptables进行过滤
iptables -I FORWARD -d 192.168.2.126 -i eth1.3 -j DROP
iptables -I FORWARD -d 192.168.3.126 -i eth1.2 -j DROP 也就是针对端口进行隔离ip,检查port2的端口,不允许192.168.3.126这个ip进来
根据以上三点配置,可以实现需求了。
用到的原理:
vlan就不多说了,划分地址,进行隔离。由于这个设备相当于既有交换机功能,又有路由功能,所以vlan隔离不能生效。
因为是openwrt系统,不支持acl配置,所以这里选择了iptables命令。
粘贴两个相关链接,讲的不错,学习很多。
http://blog.chinaunix.net/uid-26495963-id-3279216.html
https://www.cnblogs.com/metoy/p/4320813.html
============ End