因项目需求,需要配置一台Nginx反向代理服务器,为运行在不同网段的机器提供代理转发服务。见下图
因此,此台Nginx服务器需要配置双网卡,以访问不同网段的机器。
虽然配置了10和20的双网卡,但是服务器无法自动选择哪个网关与不同网段进行通信。假设服务器默认网关为10网段,虽然配置了双网卡,当服务器ping20网段时,也默认走10网段的网关。因此,需要设置静态路由,指定服务器访问20网段时走20网关。
此处贴了其他人的代码段,仅为说明操作流程
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