linux双网卡多vlan配置
最近在折腾linux多vlan,记录一下,整理整理混乱的头绪。
整体需求是双网卡配置,一张网卡(enp4s0f1)单独做管理,有单独的网络信息;另一张网卡(enp3s0f2)配置给kvm使用,kvm里分布多个vlan的虚拟机;为啥kvm就没有vmware那种方便的网络管理工具!
我也不知道为啥会有这个需求( ̄﹏ ̄;)
管理网段:192.168.1.200/24 gw 192.168.1.254
KVM网卡:172.16.12.100/25 gw 172.16.12.126 VlanID 1701;172.15.2.200/24 gw 172.15.2.254, VlanID 2309;
1.整体思路
enp4s0f1网卡配置192.168.1.0/24网段,并配置默认网关,按照正常网卡配置流程,本文不做赘述;
enp3s0f2网卡创建N个虚拟网卡,并根据vlan要求配置相关网络信息,但是不配置默认网关;
根据多valn情况分别创建路由表,写入策略路由,多vlan网络不走默认网关,直接查询路由表
!!!enp3s0f2网卡对应交换机网口必须配置trunk口模式
2.虚拟网卡创建
需要vconfig软件支持,yum进行安装
yum install vconfig
若是找不到vconfig安装包,直接下载rpm包安装;
安装完成后,确认vconfig命令是否可用,如果vc可以table出来,证明软件安装成功.
先进入802.1q模式
modprobe 8021q //需要加入开机启动
可以使用lsmod查看是否进入核心
lsmod | grep 8021q
如果看到以下输出,证明8021q核心载入成功
使用vconfig命令,增加子接口,VlanID不能错,如果ID有错,网络会不通,而且主网卡必须可用;
vconfig add enp3s0f2 1701
vconfig add enp3s0f2 2309
创建完成后,使用ifconifg命令会看到多出了虚拟网卡信息,也可以使用以下命令查看
ls /proc/net/vlan
创建好虚拟网卡后,进入/etc/sysconfig/network-scripts目录cp一个网卡配置文件
cp ifcfg-enp3s0f2 ifcfg-enp3s0f2.1701
cp ifcfg-enp3s0f2 ifcfg-enp3s0f2.2309
使用vim编辑编辑配置,推荐按照以下模板更改
TYPE=Ethernet
DEVICE=enp3s0f2.1701
BOOTPROTO=static
NAME="enp3s0f2.1701"
ONBOOT=yes
VLAN=yes
MACADDR=0C:C4:7A:52:2B:8C //虚拟网卡最好不要使用HWADDR,同时MAC地址不要重复
IPADDR=172.16.12.100
NETMASK=255.255.255.128
NM_COTROLLED=no
编辑好配置文件后,修改网卡的MAC地址,不知道什么原因,重启网络服务并不能修改虚拟网卡的MAC地址
ifconfig enp3s0f2.1701 hw ether 0C:C4:7A:52:2B:8C
之后重启网卡服务,ifconfig查看网卡信息,确认IP及MAC信息
3.创建路由
当前有两个vlan需要使用路由,创建两个路由表
vim /etc/iproute2/rt_tables
添加两个路由表
100 net1701 //100为路由表编号,net1701为路由表名字
101 net2309
配置策略路由
ip rule add from 172.16.12.100 table net1701 //所有请求 172.16.12.100 地址的请求查询路由表 net1701
ip route add default via 172.16.12.126 dev enp3s0f2.1701 src 172.16.12.100 tables net1701 // 添加路由策略,所有对172.16.12.100 地址的请求查询路由表 net1701,同时默认路由为 172.16.12.100 所在网关 172.16.12.126,默认物理出口enp3s0f2.1701
至此大体完成。
4.编写开机脚本
为了防止linux可能会偶尔抽风,建议将虚拟网卡创建及策略路由添加加入开机脚本,为了方便管理,分别以独立脚本存在
虚拟网卡部分,命名为vlan.sh
modprobe 8021q
ifconfig enp3s0f2 0.0.0.0
vconfig add enp3s0f2 1701
vconfig add enp3s0f2 2309
ifconfig enp3s0f2.1701
ifconfig enp3s0f2.2309
ifconfig enp3s0f2.1701 172.16.12.100 netmask 255.255.255.128 up
ifconfig enp3s0f2.2309 172.15.2.200 netmask 255.255.255.255 up
ifconfig enp3s0f2.1701 hw ether 0C:C4:7A:52:2B:8C
ifconfig enp3s0f2.2309 hw ether 0C:C4:7A:52:2B:9C
策略路由部分,命名route.sh
ip route flush table net1701 //刷新 net1701 路由表
ip route flush table net2309 //刷新 net2309 路由表
ip rule add from 172.16.12.100 table net1701
ip rule add from 172.15.2.200 table net2309
ip route add default via 172.16.12.126 dev enp3s0f2.1701 src 172.16.12.100 tables net1701
ip route add default via 172.15.2.254 dev enp3s0f2.2309 src 172.15.2.200 tables net2309
将以上两个脚本加入rc.local文件
至此所有配置全部完成。
文章为本博客原创作品,版权归本博客,未经许可禁止转载