同一子网的两块网卡均绑定弹性公网IP
问题描述
云服务器上两块相同子网的网卡,均绑定了弹性公网IP。其中,主网卡绑定的弹性公网IP可以正常访问,但是扩展网卡的弹性公网IP无法访问。
可能原因
CentOS操作系统的弹性云服务器默认开启了反向过滤技术(rpfilter),云服务器的默认路由是指向eth0的,而扩展网卡弹性公网IP的流量从eth1进入。系统此时判断,这个报文在发送时应该从eth0口送出,而报文实际是从eth1进入,即从错误的网卡收到报文,故判定非法而被系统丢弃。
处理方法
通过策略路由让访问扩展网卡的流量从扩展网卡发出,方法如下:
- 执行以下命令,编辑文件rt_tables。
添加一个route table的别名,如test。
- 保存后退出。
- 执行以下命令,在test表中添加路由。
ip route add default via 扩展网卡网关 dev eth1 table 步骤1中添加的表名
例如:
ip route add default via 192.168.166.1 dev eth1 table test
- 执行以下命令,添加策略路由。
ip rule add from 扩展网卡IP地址 lookup 步骤1中添加的表名 prio 低于32766,优先级高于main表
例如:
ip rule add from 192.168.166.22 lookup test prio 32000
至此,两块网卡上的公网IP应该都可以访问了。如果要持久化这个规则,可以将上述语句添加到开机脚本“/etc/rc.local”中。