阿里云ECS CentOS7 无公网IP的情况下如何访问外网

How to access the network when Alibaba Cloud ECS CentOS7 has no public IP

Posted by alovn on May 22, 2020

今天公司扩充了几台阿里云的ECS服务器,由于内部所有的服务器都在内网环境中,所以不需要公网IP,但是阿里云的ECS无公网IP的机器默认是连接不到公网的。难道是为了让用户购买阿里云的NAT网关?价格死贵的。那么还有其它方式让这些内网服务器访问道外网的网络吗?

需要准备一台有公网IP的ECS服务器(可以访问到公网)作为路由器(跳板)

一、有公网网络的机器上执行

1
2
3
4
5
6
7
8
9
10
11
12
13
#打开端口转发
echo “1” > /proc/sys/net/ipv4/ip_forward
#重新加载配置,使配置生效
sysctl -p

#配置iptables做SNAT,设置转发规则
iptables -t nat -I POSTROUTING -s 10.2.12.0/24 -j SNAT --to-source 10.2.12.228

#保存更改
service iptables save

#重启防火墙
service iptables restart

这里需要注意改成自己的IP,将10.2.12.0网段的网络请求转发到10.2.12.228。 若没有iptables可使用以下命令安装

1
yum install iptables-services

配置VPC路由规则

阿里云ECS若要路由成功,还需要配置VPC路由规则,打开阿里云VPC控制台,添加路由表,新增一条0.0.0.0/0(默认路由)的规则

tensor

这里要吐槽一下阿里云不能按照普通网关一下配置,必须要结合VPC配置0.0.0.0/0来进行下一跳,不然你在ECS怎么设置都无法成功,在这一步奏耽误了点时间。

非ECS环境可参考,直接配置网关: https://www.cnblogs.com/EasonJim/p/10206728.html

测试网络

可以直接 ping 一个外网的ip进行测试,或者 curl https://myip.ipip.net/