aws-ec2-双网卡问题

本文介绍了解决AWS EC2实例中多网卡环境下路由配置不当的问题,通过手动设置策略路由确保不同网卡间的数据包正确转发,避免了因默认路由导致的数据包丢失。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

在已存在的EC2上新添加网卡后发现,凡是和eth0在同一个网段的只能通过eth0访问,不能通过eth1。同样的,在eth1网段的只能通过eth1访问,不能通过eth0访问。 如果既不在eth0也不再eth0 默认走eth0(在没有修改路由表的前提下,默认路由是eth0)

问题分析

之所以出现您列出的网络访问现象,是因为目前的实例当中有两块网卡,而发生故障的时候,路由的走向是从网卡2进来的数据包从网卡1发送出去,或者从网卡1进来的数据包从网卡2发送出去,AWS底层会把这样的数据包丢弃。

因此需要手动定义策略路由,在响应网卡1进来的数据包时通过网卡1发送,响应网卡2进来的数据包时通过网卡2发送。

解决方案

关于这个现象和解决方案,可以参考这遍文档:

http://www.linuxjournal.com/article/7291

该文档较长,这里介绍一个配置路由策略的事例,可以按照此事例的方法结合具体网络环境进行配置:

1、首先为网卡1和2创建各自的路由表:

ip route add [子网1网段] via [您子网的网关IP] dev eth0 tab 1

ip route add [子网2网段] via [您子网的网关IP] dev eth1 tab 2

可以通过ip route show table 1和ip route show table 2查看您刚刚完成的配置是否正确
2、然后创建策略路由

ip rule add from [eth0的IP]/32 tab 1 priority 500

ip rule add from [eth1的IP]/32 tab 2 priority 600

这个配置的意思是,将原地址为eth0的IP的包按照路由表1发送,将原地址为eth1的IP的包按照路由表2发送

3、查看并刷新

可以通过 ip rule命令查看已经配置的路由策略。一个示例的策略如下:


$  ip rule

0:  from all lookup local

500:    from 172.31.30.238 lookup 1

600:    from 172.31.22.112 lookup 2

32766:  from all lookup main

32767:  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-eth0

echo “[子网2网段] via [您子网的网关IP] dev eth1 table 2″ > /etc/sysconfig/network-scripts/route-eth1

echo “from [eth0的IP]/32 table 1″ > /etc/sysconfig/network-scripts/rule-eth0

echo “from [eth1的IP]/32 table 2″ > /etc/sysconfig/network-scripts/rule-eth1

最后重启network service


service network restart

需要注意的是,如果在重启服务的时候不成功,可以尝试关闭Network Manager。这个服务和默认的网络服务启动脚本经常有冲突,导致配置无法应用。


chkconfig NetworkManger off
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值