如何为多网卡Linux服务器配置策略路由
问题描述
当一台云服务器ECS实例(Linux系统)有多张网卡,并且每张网卡都绑定了弹性公网IP时,只有主网卡绑定的弹性公网IP可以正常访问,辅助网卡的弹性公网IP无法访问。
说明
此现象在配置有多网卡的物理服务器上同样存在
解决方法
说明
通过配置策略路由让访问主网卡的流量从主网卡发出,访问辅助网卡的流量从辅助网卡发出。
- 编辑
/etc/iproute2/rt_tables
,添加一个路由表(例如nic_eth1
),保存退出
1 | 255 local |
说明
Linux系统中,可以自定义从1-252个路由表。其中,Linux系统维护了4个路由表:
0 unspec:系统保留表;
253 defulte table:没特别指定的默认路由都放在该表;
254 main table:没指明路由表的所有路由放在该表;
255 local table:保存本地接口地址、广播地址、NAT地址,由系统维护,用户不得更改;
- 执行以下命令,在
nic_eth1
表中添加默认路由
1 | ip route add default via <辅助网卡网关> dev <辅助网卡名称> table <路由表名> |
- 执行以下命令,添加策略路由
1 | ip rule add from <辅助网卡IP地址> lookup <路由表名> prio <1~32765,优先级高于main表> |
至此,云服务器所有的弹性公网IP就都可以访问了。如果要持久化这个规则,可以将上述命令添加到开机脚本/etc/rc.d/rc.local
中
1 | cat >> /etc/rc.d/rc.local << EOF |