无公网IP的弹性云主机访问Internet

  上周我说过,周二拖着半条人命去配合电信做测试资源的申请,上周五下午终于给过来了。当时申请了4台弹性云主机,2个公网IP(共用一条100M共享带宽),也就意味着,如果什么都不做,只是绑定两个公网ip到云主机,最多只有2台机器能访问Internet,另两台就不行了。

  前两天也就是周末的时候,我其实想把这些主机都搞好能访问外网。我今天弄才发现,配置跟以前是有点不同,怪不得我弄不好。

  我参考的是这篇帮助文档:https://www.ctyun.cn/help2/10000053/10002300。这文档最近更新时间为今年4月份。

  先讲下具体实现,最后指出跟原来配置有啥不同。

同一网段,并且在同一安全组内。

为什么我的云服务只显示了私有ip 没有公网IP_云服务

   现在只有入口服务器绑有公网ip。

一、天翼控制台设置

  点击已绑定公网 ip 的服务器:

(1)关掉 “源/目的检查”     -------  我经常忘记这一步

弹性公网ip绑定的服务器,找到网卡,关掉 “源/目的检查

为什么我的云服务只显示了私有ip 没有公网IP_内网_02

 

、入口服务器设置

登陆弹性公网ip绑定的服务器

(1)确保能上网


为什么我的云服务只显示了私有ip 没有公网IP_云服务_03

(2)开启IP转发功能

# 临时设置

cat /proc/sys/net/ipv4/ip_forward   设置为1

# 永久

vim /etc/sysctl.conf

net.ipv4.ip_forward=1

重新加载:sysctl -p

 

(3)iptables 规则配置SNAT

使代理弹性云服务器所在的网段内其他弹性云服务器可通过代理弹性云服务器访问Internet。

假设这批服务器IP段为: 10.13.0.0/24

入口服务器IP为:10.13.0.14

iptables -t nat -A POSTROUTING -o eth0 -s  10.13.0.0/24  -j SNAT --to 10.13.0.14

 如果在iptables配置文件添加:

vim /etc/sysconfig/iptables

为什么我的云服务只显示了私有ip 没有公网IP_内网_04

 

 三、回到控制台设置

登录:天翼云管理控制台

“网络” ——》 “虚拟私有云”    ---- 新设置,以前没有的

为什么我的云服务只显示了私有ip 没有公网IP_云服务_05


(1) 添加自定义路由   --- 这步以前是没有的,是直接在内网服务器添加的

 

为什么我的云服务只显示了私有ip 没有公网IP_内网_06

 这样就行了~~~

  刚刚有说过,给了两个公网ip,有一个ip给了入口这机器。

现在做了路由设置后,如果另一台服务器绑定有另一个公网ip,那么出口ip会是谁呢?  

答:出口是会走绑定了公网ip的线路,而不是入口的ip

 

为什么我的云服务只显示了私有ip 没有公网IP_服务器_07

最后说下跟以前配置有啥不同,虽然两者有异曲同工之妙~~~

以前旧账号是不需要在天翼云控制台添加路由信息的,如下图:

 (a)以前:

为什么我的云服务只显示了私有ip 没有公网IP_云服务_08

但需要在内网服务器(没绑有弹性公网ip)加路由规则:

我接手前运维工作的时候,发现是直接把命令写到定时任务上的(估计是不稳定,所以每2分钟跑一次):

#!/bin/bash

#检查:route add -net 0.0.0.0/0 gw {入口服务器的内网ip}  是否存在,不存在自动添加默认路由

w=`sudo route -n |grep "{入口服务器的内网ip}"| wc -l`
if [ $w == "0" ]
then
    sudo route add -net 0.0.0.0/0 gw {入口服务器的内网ip}
fi

 (b)现在(虚拟私有云上的路由表添加):

为什么我的云服务只显示了私有ip 没有公网IP_服务器_09

 注意:现在直接在服务器加 route add 还不管用,必须得在控制台加,加了就不需要在每台内网服务器写脚本了,解放了人写脚本进行监控工作~~~东西也配置少了,所以还是挺好的