本文档以Centos7进行测试,配置NAT的ECS与需要访问外网的ECS 都是 Centos7。
第一步:开启ECS的ip转发功能(与原文档一致)
注:这一步只在有公网IP的ECS上进行操作
1.配置 sysctl.conf 文件
vi /etc/sysctl.conf
找到 net.ipv4.ip_forward = 1 这一条,确保后面的值为1就行,如果没有这一条,手动加进去。
保存退出,然后使用 sysctl -p 命令使上面的修改生效。
第二步:设置VPC路由条目
这一部需要在阿里云控制台操作,添加一条VPC的路由条目
详参官方文档:https://help.aliyun.com/zh/vpc/user-guide/create-and-manage-route-table
需要注意的是,路由表的绑定是以交换机为粒度的,绑定之前确定该交换机下的其他ECS不受路由表更替的影响。
其中目标网段一定要填0.0.0.0/0
ECS实例选择有公网IP的那个实例。
第三步:设置iptables 的NAT转发规则
注意:在 CentOS 系统中,保存 iptables
规则的方法取决于你使用的是 CentOS 的哪个版本。对于 CentOS 6 或更早版本,它们使用的是传统的 iptables
服务。而 CentOS 7 默认使用的是 firewalld
,但你仍然可以安装 iptables-services
来管理 iptables
规则。
下面我会提供两个版本的保存方法:
CentOS 6 或更早版本:
1.应用你的 iptables
规则:
iptables -t nat -I POSTROUTING -s 192.168.2.0/24 -j SNAT --to-source 192.168.1.1
可以这样理解 iptables -t nat -I POSTROUTING -s VPC的IP段 -j SNAT --to-source 有公网IP的ECS内网IP
2.回车执行后要永久生效,还需要保存在iptables配置文件中:
service iptables save
这将保存当前的 iptables
规则集到 /etc/sysconfig/iptables
文件。这些规则将在系统启动时自动加载。
CentOS 7 或更高版本:
1.安装 iptables-services
yum install iptables-services
2.应用 iptables 规则
iptables -t nat -I POSTROUTING -s 192.168.2.0/24 -j SNAT --to-source 192.168.1.1
3.保存规则
sudo service iptables save
4.查看规则
iptables -t nat -L POSTROUTING -n -v
5.服务加入开机启动项
sudo systemctl enable iptables
sudo systemctl start iptables
至此,配置完成。其他 DNAT 等配置参考原文即可。
https://developer.aliyun.com/article/607330
建议:
由于自建NAT受限于 ECS的性能,建议如果长期稳定使用 NAT 时可以参考阿里云产品 公网NAT网关,支持功能更多,也更加稳定。详参:
https://help.aliyun.com/zh/nat-gateway/user-guide/enhanced-nat-gateways