本文共 1506 字,大约阅读时间需要 5 分钟。
在已存在的EC2上新添加网卡后发现,凡是和eth0在同一个网段的只能通过eth0访问,不能通过eth1。同样的,在eth1网段的只能通过eth1访问,不能通过eth0访问。 如果既不在eth0也不再eth0 默认走eth0(在没有修改路由表的前提下,默认路由是eth0)
之所以出现您列出的网络访问现象,是因为目前的实例当中有两块网卡,而发生故障的时候,路由的走向是从网卡2进来的数据包从网卡1发送出去,或者从网卡1进来的数据包从网卡2发送出去,AWS底层会把这样的数据包丢弃。
因此需要手动定义策略路由,在响应网卡1进来的数据包时通过网卡1发送,响应网卡2进来的数据包时通过网卡2发送。
关于这个现象和解决方案,可以参考这遍文档:
该文档较长,这里介绍一个配置路由策略的事例,可以按照此事例的方法结合具体网络环境进行配置:
ip route add [子网1网段] via [您子网的网关IP] dev eth0 tab 1ip route add [子网2网段] via [您子网的网关IP] dev eth1 tab 2可以通过ip route show table 1和ip route show table 2查看您刚刚完成的配置是否正确
ip rule add from [eth0的IP]/32 tab 1 priority 500ip rule add from [eth1的IP]/32 tab 2 priority 600
这个配置的意思是,将原地址为eth0的IP的包按照路由表1发送,将原地址为eth1的IP的包按照路由表2发送
可以通过 ip rule命令查看已经配置的路由策略。一个示例的策略如下:
$ ip rule0: from all lookup local500: from 172.31.30.238 lookup 1600: from 172.31.22.112 lookup 232766: from all lookup main32767: from all lookup default
最后刷新路由策略的cache,之后您可以继续测试。
ip route flush cache
如果希望实例重启后ip route 和 ip rule所配置的规则还在,需要按照以下方式进行配置
echo “[子网1网段] via [您子网的网关IP] dev eth0 table 1″ > /etc/sysconfig/network-scripts/route-eth0echo “[子网2网段] via [您子网的网关IP] dev eth1 table 2″ > /etc/sysconfig/network-scripts/route-eth1echo “from [eth0的IP]/32 table 1″ > /etc/sysconfig/network-scripts/rule-eth0echo “from [eth1的IP]/32 table 2″ > /etc/sysconfig/network-scripts/rule-eth1
最后重启network service
service network restart
需要注意的是,如果在重启服务的时候不成功,可以尝试关闭Network Manager。这个服务和默认的网络服务启动脚本经常有冲突,导致配置无法应用。
chkconfig NetworkManger off
转载地址:http://njixx.baihongyu.com/