国内公有云的宽带真的很贵,也许是受限于三大商的卡脖子。
总之在多数企业服务器集群不可能为每个服务器都开通外网IP、带宽这类的,一方面是成本,还有的是为了安全等因素。
但是往往有时候一个纯内网的服务器想要部署服务或者有其他需要和互联网连接的时候,就要解决这个问题了。
参考内容:三步搭建VPC专有网络NAT网关,配置SNAT和DNAT规则-阿里云开发者社区 (aliyun.com)
实现无公网IP的实例也能够访问外网
第一步:开启ECS的ip转发功能
这步只在有公网的ECS上操作:
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
应用一下
第二步:设置iptables 的NAT转发规则
1、设置SNAT规则
就一条命令搞定,别直接复制啊,需要根据你的实际情况改一下IP地址:
iptables -t nat -I POSTROUTING -s 172.16.0.0/16 -j SNAT --to-source 172.16.128.171
可以这样理解 iptables -t nat -I POSTROUTING -s VPC的IP段 -j SNAT --to-source 有公网IP的ECS内网IP
回车执行后要永久生效,还需要保存在iptables配置文件中:
service iptables save #这里没做
查看下我们添加的规则
iptables -L -n -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT all -- 172.16.0.0/16 0.0.0.0/0 to:172.16.128.171
第三步:配置阿里云控制台
这一步也是我在部署中最迷惑的。
首先我是根据上面连接一步步操作,但是在进行到 路由表条目添加下一跳时 死活找到不ECS实例。
完全没有可选项。不能理解,找到阿里人工,分析半天也没解决,最后我在交换机功能栏里添加的,直接解决这个困惑。
2023年5月6日
找到专有网络 交换机
路由管理
添加路由条目
然后起个名字,添加即可
和我图中记得保持一致基本就搞定了。
第四步:测试结果
连接到内网服务器上
ping个网站瞧瞧
end