作者:邓聪聪

关于包的原路返回的问题:

  举个例子,比如如果一个linux服务器有三个口接三个不同的网络,假设对应的网络信息是如此

ens33是电信,ip地址为1.1.1.2/24,电信网关为1.1.1.1

ens224是联通,ip地址为2.2.2.2/24,联通网关为2.2.2.1

ens256是移动,ip地址为3.3.3.2/24,移动网关为3.3.3.1

 

  传统情况下,如果是为了从内向外访问获得更好的速度,让访问电信走电信,访问联通走联通,那么配置是网关只能够配置一个,比如以电信为主的,那么网关就只设置电信的1.1.1.1,而针对联通和移动设置不同的路由,路由下一跳指向联通和移动对应的网关。如果这样做的目的只是实现内部访问外面,那么是没问题了,但是如果是为了让外面的用户能够正常访问到服务器上的服务就会出问题。比如电信用户会无法访问联通和移动的ip,联通用户会无法访问电信和移动的ip。要解决这个问题,思路就是由哪个网口进来的流量希望全部就由哪个回去。用lartc里面提到的方法就是来源的口不同,走不同的路由表。在默认的路由表基础上再建立两个路由表。

  echo ''102 Chinacnc'' >> /etc/iproute2/rt_tables

  echo "103 Chinacmcc" >> /etc/iproute2/rt_tables

之后建立这两个路由表的内容,因为这两个路由表的只是用来响应来自不同接口的,而不是用来相应从哪个接口出去的,所以只需要路由表里面建立默认网关即可。

  ip route add default via 3.3.3.1 dev eth2 table Chinacmcc

之后再加上两条规则,使来自不同的口的走不同的路由表

  ip rule add from 2.2.2.2 table Chinacnc

  ip rule add from 3.3.3.2 table Chinacmcc

至此无论是电信还是联通还是移动用户,访问三个ip的任意一个地址都能够连通了。

查看路由信息:ip route show / route -n

 

目的地址选择出口使用静态路由的方式:

1,手动添加目的地址静态路由的方式

  route add -net x.x.x.x/24 gw x.x.x.x

2,增加目的地址路由的配置文件,网卡重启立即生效

  vi /etc/sysconfig/network-scripts/route-ens224 #联通,移动方法同理,设置正确的网卡信息

    x.x.x.x via 2.2.2.1