场景一 多运营商线路


比较典型的一种场景:一台 Linux 服务器上有三个网口并接入三个不同运营商的网络,以实现不同运营商用户访问其对应的网络线路,来减少网络延时。

服务器及对应网络信息如下:

一台 Ubuntu 16.04 server,这里一共使用三块网卡。假定网络信息如下:

Linux下配置多网卡多网关_策略路由


这里 IP 只是为了区分各运营商线路做的示例,实际情况请以运营商给出的网络信息调整。



下面我们来看如何实现这样的需求:

在 Linux 下一台多网卡服务器不能同时配置两个及以上的默认网关,因为默认网关(Default Gateway)只能配置一个,通过 gateway 参数配置的网关在这里实际为默认路由。

这里通过配置 Linux 下策略路由来实现,通过原线路返回的策略路由可以实现多线多 IP 同时在线。让从同一运营商过来的请求由原运营商线路返回,比如:电信IP过来的请求按照电信路由返回,从网通IP过来的求从网通路由返回。

配置网络

首先配置三块网卡的基本网络信息。




$ vim /etc/network/interfaces

auto enp0s5
iface enp0s5 inet static
address 192.168.100.212
netmask 255.255.255.0

auto enp0s6
iface enp0s6 inet static
address 192.168.110.213
netmask 255.255.255.0

auto enp0s7
iface enp0s7 inet static
address 192.168.120.214
netmask 255.255.255.0

重启网络



$ /etc/init.d/networking restart

查看配置好的网络情况



$ ip a|grep enp0s
2: enp0s5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 192.168.100.212/24 brd 192.168.100.255 scope global enp0s5
3: enp0s6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 192.168.110.213/24 brd 192.168.110.255 scope global enp0s6
4: enp0s7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 192.168.120.214/24 brd 192.168.120.255 scope global enp0s7


查看各网卡当前路由


$ ip route show
192.168.100.0/24 dev enp0s5 proto kernel scope link src 192.168.100.212
192.168.110.0/24 dev enp0s6 proto kernel scope link src 192.168.110.213
192.168.120.0/24 dev enp0s7 proto kernel scope link src 192.168.120.214