物理网卡、子网卡、虚拟VLAN网卡的关系
1.物理网卡:物理网卡这里指的是服务器上实际的网络接口设备,在系统中可以看到的,比如2个物理网卡分别对应是eth0和eth1这两个网络接口。
2. 子网卡:子网卡在这里并不是实际上的网络接口设备,但是可以作为网络接口在系统中出现,如eth0:1、eth1:2这种网络接口。它们必须要依赖于物理网卡,虽然可以与物理网卡的网络接口同时在系统中存在并使用不同的IP地址,而且也拥有它们自己的网络接口配置文件。但是当所依赖的物理网卡不启用时(Down状态)这些子网卡也将一同不能工作。
3.虚拟VLAN网卡:这些虚拟VLAN网卡也不是实际上的网络接口设备,也可以作为网络接口在系统中出现,但是与子网卡不同的是,他们没有自己的配置文件。他们只是通过将物理网加入不同的VLAN而生成的VLAN虚拟网卡。如果将一个物理网卡添加到多个VLAN当中去的话,就会有多个VLAN虚拟网卡出现,他们的信息以及相关的VLAN信息都是保存在/proc/net/vlan/config这个临时文件中的,而没有独自的配置文件。它们的网络接口名是eth0.1、eth1.2这种名字。
注:当需要启用VLAN虚拟网卡工作的时候,关联的物理网卡网络接口上必须没有IP地址的配置信息。
实验环境
电脑
系统 Ubuntu 18.04
物理网卡 eth1
ip地址 192.168.1.10
设备
系统 QNX 7.0.X
物理网卡 emac0
IP地址 192.168.1.1
子网卡实验
电脑端配置子网卡
添加物理网卡eth1的子网卡eth1:1,并分配ip地址192.168.1.11。子网卡的ip地址应和物理网卡在同一网段。
# ifconfig eth1:1 192.168.1.11# ifconfigeth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.1.10 netmask 255.255.255.0 broadcast 192.168.1.255inet6 fe80::cc1f:79bc:9523:6b08 prefixlen 64 scopeid 0x20<link>ether 00:0e:c6:a2:7c:eb txqueuelen 1000 (Ethernet)RX packets 695 bytes 50361 (50.3 KB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 721 bytes 62418 (62.4 KB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0eth1:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.1.11 netmask 255.255.255.0 broadcast 192.168.1.255ether 00:0e:c6:a2:7c:eb txqueuelen 1000 (Ethernet)
从设备ping电脑子网卡ip
# ping 192.168.1.11PING 192.168.1.11 (192.168.1.11): 56 data bytes64 bytes from 192.168.1.11: icmp_seq=0 ttl=64 time=1 ms64 bytes from 192.168.1.11: icmp_seq=1 ttl=64 time=0 ms----192.168.1.11 PING Statistics----2 packets transmitted, 2 packets received, 0% packet lossround-trip min/avg/max = 0/0/1 ms variance = 1 ms^2#
删除子网卡
ifconfig eth1:1 down
网桥实验
安装工具
apt install bridge-utils
创建网桥
# brctl addbr br1
将网卡加入网桥
brctl addif br1 eth1
将网卡加入网桥之前电脑和设备之间是连接正常的,加入之后就ping不通了。
分配IP地址
删除网卡IP地址,为网桥分配IP地址。
# ifconfig eth1 0# ifconfig br1 192.168.1.10# ifconfigbr1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.1.10 netmask 255.255.255.0 broadcast 192.168.1.255inet6 fe80::20e:c6ff:fea2:7ceb prefixlen 64 scopeid 0x20<link>ether 00:0e:c6:a2:7c:eb txqueuelen 1000 (Ethernet)RX packets 0 bytes 0 (0.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 31 bytes 4442 (4.4 KB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet6 fe80::cc1f:79bc:9523:6b08 prefixlen 64 scopeid 0x20<link>ether 00:0e:c6:a2:7c:eb txqueuelen 1000 (Ethernet)RX packets 1158 bytes 80177 (80.1 KB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 1195 bytes 102447 (102.4 KB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
开启生成树协议
# brctl stp br1 on# brctl showbridge name bridge id STP enabled interfacesbr1 8000.000ec6a27ceb yes eth1
查看生成树状态
# brctl showstp br1br1bridge id 8000.000ec6a27cebdesignated root 8000.000ec6a27cebroot port 0 path cost 0max age 20.00 bridge max age 20.00hello time 2.00 bridge hello time 2.00forward delay 15.00 bridge forward delay 15.00ageing time 300.00hello timer 0.14 tcn timer 0.00topology change timer 0.00 gc timer 0.00flagseth1 (1)port id 8001 state forwardingdesignated root 8000.000ec6a27ceb path cost 4designated bridge 8000.000ec6a27ceb message age timer 0.00designated port 8001 forward delay timer 0.00designated cost 0 hold timer 0.00flags
由输出信息,可以看出STP的状态为forwarding(转发状态),也就是说,该网桥已经参与生成树,会转发数据帧,同时也会转发BPDU。
将网卡从网桥中删除
brctl delif br1 eth1
删除网桥
删除网桥之前要先停用该网桥,UP状态的网桥无法删除。
ifconfig br1 downbrctl delbr br1
VLAN实验
用vconfig命令设置VLAN
加载802.1q模块
$ sudo modprobe 8021q$ lsmod | grep 8021q8021q 32768 0garp 16384 1 8021qmrp 20480 1 8021q
安装vlan工具
apt install vlan
创建VLAN
# vconfig add eth1 5Added VLAN with VID == 5 to IF -:eth1:-
为VLAN设备分配IP地址
ifconfig eth1.5 192.168.2.10 netmask 255.255.255.0 broadcast 192.168.1.255 up
注意:不同VLAN的IP地址要配置在不同的网段(subnet)。物理网卡其实也在一个VLAN中,只是默认PVID为0,所以VLAN设备的IP地址和物理设备的IP地址也要在不同网段。
查看系统VLAN信息
# cat /proc/net/vlan/configVLAN Dev name | VLAN IDName-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PADeth1.5 | 5 | eth1
此时设备能同时ping通电脑物理网卡的IP地址和VLAN网卡的IP地址。电脑也能ping通设备的IP地址,但通过wireshark抓包发现是源地址是物理网卡的IP地址。
删除VLAN
sudo ifconfig eth1.5 downorsudo vconfig rem eth1.5
用IP命令设置VLAN
为eht0添加VLAN
ip link add link eth0 eth0.5 type vlan id 5ip linkip -d link show eth0.5
分配IP并启用
ip addr add 192.168.2.10/24 dev eth0.5ip link set eth0.5 upip address
添加路由
sudo ip route add 192.168.2.0/24 dev eth1.5
查看路由
$ ip routedefault via 10.25.11.1 dev eth0 proto dhcp metric 102default via 10.25.7.1 dev wlan0 proto dhcp metric 60010.25.7.0/24 dev wlan0 proto kernel scope link src 10.25.7.133 metric 60010.25.11.0/24 dev eth0 proto kernel scope link src 10.25.11.153 metric 102169.254.0.0/16 dev wlan0 scope link metric 1000172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.11192.168.1.0/24 dev brvlan5 proto kernel scope link src 192.168.1.10192.168.2.0/24 dev eth1.5 scope link
删除路由
$ sudo ip route del 192.168.2.0/24
删除vlan
ip link delete eth0.5orip link set dev eth0.5 down
