Ubuntu VLAN配置troubleshooting

本文续《Linux网络接口和VLAN配置》http://blog.csdn.net/melancholy123/article/details/70232889

之前一直使用TE部门提供的SUSE系统,因此真正使用Ubuntu配置VLAN并且用于生产环境还是第一次,果然想象中预计几分钟的事情花费了几个小时才搞定,其实Ubuntu本身定位就是桌面Linux系统,虽然也有Ubuntu Server的版本,但还是觉得Red Hat系对服务器配置更加友好,当然不排除先入为主的观念,毕竟Red Hat是我上学时服务器系统领域近乎唯一的选择。

使用Ubuntu 16.04.3 LTS版本安装完成进入系统后发现新版系统内核对interface的默认命名不在是熟悉的ethx/wlanx而是enp2s0/wlp3s0这种格式,这本来是无所谓的事情但是当我在/etc/network/interfaces里配置VLAN接口后,重启网络服务就会报错。

root@hp:/home/hp# systemctl status networking.service
1102 16:27:11 hp systemd[1]: Starting Raise network interfaces...
1102 16:27:21 hp ifup[2278]: Cannot find device "enp2s0.101"
1102 16:27:21 hp ifup[2278]: Failed to bring up enp2s0.101.
1102 16:27:21 hp systemd[1]: networking.service: Main process exited, code=exited, status=1/FAILURE

在确定8021q模块加载后才开始怀疑是接口命名的问题,于是新建/etc/udev/rules.d/70-persistent-net.rules文件用来指定接口名称,但无论是重启网络服务还是重启系统均只有wlan0更正成功,eth0始终无法正确显示,对比后发现可能是KERNEL字段不匹配导致,于是删除KERNEL字段两个网口的名称才最终正确显示。

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="3c:52:82:2f:58:98", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="c8:21:58:d0:5c:14", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan0"

随后使用eth0网口名称配置VLAN重启网络服务后VLAN生效。

Ubuntu VLAN Flow

1.安装VLAN软件包,Ubuntu系统下使用apt-get install vlan进行安装。

2.加载8021q内核模块,可使用modprobe 8021q命令加载模块,使用lsmod | grep 8021q检查该模块是否加载,使用echo "8021q" > /etc/modules将该模块添加到默认加载列表中。

3.使用ip link命令查看物理网口的MAC地址,新建或修改/etc/udev/rules.d/70-persistent-net.rules指定物理网络接口名称,个人认为该条目里的字段越少越不容易出错,重启网络服务后生效。

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="3c:52:82:2f:58:98", ATTR{dev_id}=="0x0", ATTR{type}=="1", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="c8:21:58:d0:5c:14", ATTR{dev_id}=="0x0", ATTR{type}=="1", NAME="wlan0"

4.编辑/etc/network/interfaces网路配置文件,Ubuntu仅支持<interface>.<VID>VLAN接口命令方式和<interface>:<N>的多IP绑定方式,重启网络服务后生效。

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 10.163.201.184
netmask 255.255.255.0
gateway 10.163.201.1
mtu 1500

auto eth0.101
iface eth0.101 inet static
address 192.168.200.2
netmask 255.255.255.0
network 192.168.200.0
broadcast 192.168.200.255
mtu 1492

5.使用cat /proc/net/vlan/config查看当前VLAN配置。

root@hp:/etc/network# cat /proc/net/vlan/config 
VLAN Dev name    | VLAN ID
Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD
eth0.101       | 101  | eth0

SUSE VLAN Flow

1.安装VLAN软件包,SUSE系统下使用zypper in vlan进行安装。

2.加载8021q内核模块,可使用modprobe 8021q命令加载模块,使用lsmod | grep 8021q检查该模块是否加载,使用echo "modprobe 8021q" > /etc/rc.local使其开机加载。

3.使用ip link命令查看物理网口的MAC地址,新建或修改/etc/udev/rules.d/70-persistent-net.rules指定物理网络接口名称,个人认为条目里字段越少越不容易报错,重启网络服务后生效。

SUBSYSTEM=="net", BUS=="pci", ID=="0000:03:00.0", NAME="ext"
SUBSYSTEM=="net", BUS=="pci", ID=="0000:0b:00.0", NAME="int"

4.编辑/etc/sysconfig/network/路径下ifcfg-<interface>网口配置文件和ifcfg-vlan<VID>网口VLAN配置文件,除此之外SUSERed Hat系系统还支持ifcfg-<interface>.<VID>ifcfg-<anyname>两种VLAN配置文件,重启网络服务后生效。


由上可知SUSE支持三种interface及其ifcfg文件的命名方式,其中<interface>.<vid>的命名方式可以避免vlan<vid>命名方式产生的不同物理接口无法定义相同的VLAN ID的问题,<anyname>的方式最为灵活但并不直白,接口较多的情况下会让维护工作比较困难。

但无论哪种名称方式,ifcfg文件中都需要使用ETHERDEVICE指定所基于的物理interface,不像前两种方式在interface名称上就指明了VLAN ID<anyname>的方式还需要在ifcfg文件内使用VLAN_ID指定VID


/etc/sysconfig/network/ifcfg-int:

BOOTPROTO='static'
BROADCAST=''
ETHTOOL_OPTIONS=''
IPADDR='10.163.118.24/23'
MTU=''
NAME='82545EM Gigabit Ethernet Controller (Copper)'
NETWORK=''
REMOTE_IPADDR=''
STARTMODE='auto'
USERCONTROL='no'

/etc/sysconfig/network/ifcfg-vlan2022:

BOOTPROTO='static'
BROADCAST=''
ETHTOOL_OPTIONS=''
IPADDR='20.1.43.0/22'
MTU='9000'
NAME='VMXNET3 Ethernet Controller'
NETWORK=''
REMOTE_IPADDR=''
STARTMODE='auto'
USERCONTROL='no'
ETHERDEVICE='int'
VLAN='yes'

IPADDR_0='20.1.43.1/22'
LABEL_0='1'
IPADDR_1='20.1.43.2/22'
LABEL_1='2'
IPADDR_2='20.1.43.3/22'
LABEL_2='3'
IPADDR_3='20.1.43.4/22'

5.使用cat /proc/net/vlan/config命令查看当前VLAN配置。

hp:/etc/sysconfig/network # cat /proc/net/vlan/config
VLAN Dev name    | VLAN ID
Name-Type: VLAN_NAME_TYPE_PLUS_VID_NO_PAD
vlan2021       | 2021  | int
vlan2022       | 2022  | int
vlan2023       | 2023  | int
vlan2024       | 2024  | int

猜你喜欢

转载自blog.csdn.net/melancholy123/article/details/78427928