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