CentOS为双网卡配置静态路由
CentOS为双网卡配置静态路由
背景及需求
因项目需求,需要配置一台Nginx反向代理服务器,为运行在不同网段的机器提供代理转发服务。见下图
因此,此台Nginx服务器需要配置双网卡,以访问不同网段的机器。
问题
虽然配置了10和20的双网卡,但是服务器无法自动选择哪个网关与不同网段进行通信。假设服务器默认网关为10网段,虽然配置了双网卡,当服务器ping20网段时,也默认走10网段的网关。因此,需要设置静态路由,指定服务器访问20网段时走20网关。
解决方法
此处贴了其他人的代码段,仅为说明操作流程
查看ip地址
root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:d3:6c:ea brd ff:ff:ff:ff:ff:ff
inet 192.168.37.128/24 brd 192.168.37.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet 192.168.37.130/24 brd 192.168.37.255 scope global secondary dynamic ens33
valid_lft 1233sec preferred_lft 1233sec
inet6 fe80::20c:29ff:fed3:6cea/64 scope link
valid_lft forever preferred_lft forever
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:d3:6c:f4 brd ff:ff:ff:ff:ff:ff
inet 192.168.37.129/24 brd 192.168.37.255 scope global noprefixroute ens34
valid_lft forever preferred_lft forever
inet 192.168.206.138/24 brd 192.168.206.255 scope global dynamic ens34
valid_lft 1336sec preferred_lft 1336sec
inet6 fe80::20c:29ff:fed3:6cf4/64 scope link
valid_lft forever preferred_lft forever
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:9b:e4:3c brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
5: virbr0-nic: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
link/ether 52:54:00:9b:e4:3c brd ff:ff:ff:ff:ff:ff
查看路由表
注:如此命令无法运行,则需安装 net-tools包,yum install net-tools.x86_64
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.37.254 0.0.0.0 UG 0 0 0 ens33
0.0.0.0 192.168.206.254 0.0.0.0 UG 101 0 0 ens34
192.168.37.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
192.168.206.0 0.0.0.0 255.255.255.0 U 0 0 0 ens34
Flags:总共有多个旗标,代表的意义如下:
U (route is up):该路由是有效的;
H (target is a host):目标是一部主机 (IP) 而非网域;
G (use gateway):需要透过外部的主机 (gateway) 来转递封包(一般指向默认网关)
添加静态路由
添加静态路由有多种方法。在编辑ip地址时,我个人习惯编辑 /etc/sysconfig/network-script/里的文件,因此在编辑路由表的时候,我个人也倾向于通过编辑该文件夹下的文件,实行路由表的永久添加。通过查看路由表 route -n 或者 查看ip地址 ip addr ,我们得知,网卡名称为ens33和ens34。则可通过编写 route-ens33文件,实现路由的永久添加。
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
vim route-ens33
192.168.20.0/24 via 192.168.37.254 dev ens33
192.168.37.0/24 via 192.168.37.254 dev ens33
:wq!
此步骤,dev ens33 可以忽略
重启网络 查看路由表是否更新
[root@localhost ~]# systemctl restart network
[root@localhost ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 0 0 0 ens33
default gateway 0.0.0.0 UG 0 0 0 ens34
192.168.20.0 192.168.37.254 255.255.255.0 UG 0 0 0 ens33
192.168.37.0 192.168.37.254 255.255.255.0 UG 0 0 0 ens33
发现显示的默认网关同时走ens33和ens34,接下来需要配置ens33的网卡,把之前配置的ens33网卡的网关禁用
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# vim ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=none
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.37.128
NETMASK=255.255.255.0
#GATEWAY=192.168.37.254
DNS=8.8.8.8
:wq!
重启网卡 再次检查
[root@localhost network-scripts]# systemctl restart network
[root@localhost ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 0 0 0 ens34
192.168.20.0 192.168.37.254 255.255.255.0 UG 0 0 0 ens33
192.168.37.0 192.168.37.254 255.255.255.0 UG 0 0 0 ens33