问题现象:
将ECS内网IP加入RDS白名单后,在ECS内无法通过内网链接到RDS;但通过公网可以访问到。且内网DNS可以解析到RDS的IP地址。
可能原因:
100.64.0.0/10网段为新增加的RDS内网网段,某些ECS的路由表内可能没有这条记录;导致用户虽然可以PING通该IP地址,但访问数据库失败。如下:
解决办法:
请参照以下方法进行添加路由表:
- Windows系统
- 执行以下代码,查看私网网关
route print
- 执行以下代码,添加路由;并使其永久生效。(请将以下命令中的gateway_ip使用第一步查得的网关IP替换。)
route add 100.64.0.0 mask 255.192.0.0 gateway_ip -p
- 执行以下代码,查看私网网关
- Linux系统
- 执行以下代码,查看内网网关
cat /etc/sysconfig/network-scripts/route-eth0
- 手动添加静态路由规则(请将以下命令中的gateway_ip使用第一步查得的网关IP替换。)
ip route add 100.64.0.0/10 via gateway_ip dev eth0
- 将静态路由写入配置表,使其永久生效
centos/redhat/alios/suse/opensuse 系统
echo "100.64.0.0/10 via gateway_ip dev eth0” >> /etc/sysconfig/network-scripts/route-eth0
ubuntu/debian 系统:
echo "up route add -net 100.64.0.0 netmask 255.192.0.0 gw gateway_ip dev eth0" >> /etc/network/interfaces
gentoo 系统:
echo "routes_eth0=(\"100.64.0.0/10 via gateway_ip\")" >> /etc/conf.d/net
- 验证路由设置情况
ip route show | grep '100.64.0.0/10' 100.64.0.0/10 via gateway_ip dev eth0
- 执行以下代码,查看内网网关