场景一:有一个EIP,多台ECS,需要通过绑定EIP的机器让其他机器上网
阿里云VPC配置SNAT
1,将EIP绑定到某台ECS上,然后测试通过eip登陆ssh,测试成功
2,开启ip转发功能,并使之生效
sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf
sysctl –p
3,iptables添加SNAT转换
172.16.3.0是内网网段,3.2是绑定了EIP的这台机器的内网IP
iptables -t nat -I POSTROUTING -s 172.16.3.0/24 -j SNAT --to-source 172.16.3.2
4,添加VPC路由
5,测试是否可以访问了
EIP绑定在3.2那台上
关闭ip_forward再次测试
没反应了
测试成功!
场景二:用户需要将后端的服务映射出去
阿里云VPC配置DNAT
1, 将EIP绑定到某台ECS上,然后测试通过eip登陆ssh,测试成功
2,开启ip转发功能,并使之生效
sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf
sysctl –p
3,iptables 添加DNAT转换
添加转发规则 访问80端口的请求转给3.1
iptables -t nat -I PREROUTING -p tcp --dport 80 -j DNAT --to 172.16.3.1
(另一台机器的ECS IP)
使转发数据包实现“双向通路”,给数据包设置一个正确的返回通道:
iptables -t nat -I POSTROUTING -p tcp --dport 80 -j MASQUERADE
4,测试是否可以访问了
访问自己
访问EIP
DNAT测试成功!
PS:目前阿里云已经推出了NAT网关,控制台点点就能用,详见
https://www.aliyun.com/product/nat