一、 问题背景:
在5GC厂商上天翼云的项目中,有的厂商部署的5GC网元,需要有一个对外IP来下发license、配置5GC等操作。在云管上创建EIP,并绑定VM后,该EIP默认绑定eth0,该EIP做为外部访问VM所用没有问题,但不宜做为5GC网元对外的IP。此时,需要额外再创建一个EIP,并将该EIP与另一个网口绑定,实现5GC对外的IP。
二、环境信息:
VM上的网口信息如下:
VM上两个网口绑定的EIP信息如下,其中EIP 192.168.192.155绑定eth0,192.168.192.158绑定eth5。
在不配置策略路由的情况下,从跳板机/外部,可以ping通192.168.192.155,但无法ping通192.168.192.158。原因为VM默认EIP走eth0,如果要实现外部同时访问两个EIP,需要配置策略路由。
三、解决办法:
策略路由设置,指定IP路由的走向。
1. 把路由表序号(11、3)和路由表名字(net_11、net_3)添加到/etc/iproute2/rt_tables中,这里的路由表序号和名字,可以自定义,比如两个网卡的IP分别为172.20.10.11和172.20.15.3,所以选择最后的IP段数字,将路由表序号和名字命名为(11、3)和(net_11、net_3)。
对文件etc/iproute2/rt_tables增加以下内容:
echo "11 net_11 " >> /etc/iproute2/rt_tables
echo "3 net_3 " >> /etc/iproute2/rt_tables
2. 增加策略路由:
(1)ip route add default via 172.20.10.1 dev eth0 src 172.20.10.11 table net_11
从172.20.10.11发送到 172.20.10.1/24网段的数据从eth0发出,把该路由项添加到路由表net_11中
(2)ip rule add from 172.20.10.11 table net_11
添加路由策略,来自172.20.10.11 的路由要求使用net_11
(3)ip route add default via 172.20.15.1 dev eth5 src 172.20.15.3 table net_3
从172.20.15.3发送到 172.20.13.1/24网段的数据从eth5发出,把该路由项添加到路由表net_3中
(4)ip rule add from 172.20.15.3 table net_3
添加路由策略,来自172.20.15.3 的路由要求使用net_3
(5) ip route flush cache
把新添加的路由策略和路由表刷新到缓存中,即时生效,该命令加与不加均可
3. 查看策略路由表:
ip rule
4. 测试连通性:
ping
四、遗留的问题
按上述方法,可以实现单VM的多EIP同时对外通信,但VM重启后,192.168.192.158又无法ping通了,需要再次添加策略路由才可以。该问题尝试各种办法,比如写入/etc/rc.local,或者手动增加/etc/sysconfig/network-scripts/route-eth5,均无法解决。如果有其它同学解决了该问题,可以留言。