本教程前提:多台服务器在同一个VPC同一个安全组下(必须内网互通才可以)
SNAT:实现没有公网IP的ECS实例借助有公网的ECS访问外网,但是外网无法访问到内网IP;(本教程)
DNAT:实现外网通过端口映射访问到内网服务器,但是不能实现内网ECS访问到外网。(可参考:https://blog.tag.gg/showinfo-3-36322-0.html)
说明:SNAT和DNAT结合后可以实现,无公网ip的服务器既可以通过有公网ip的服务器访问公网,也可以实现通过有公网ip服务器的ip+端口访问到无公网ip服务器的端口。
服务器信息如下:
服务器1(有公网IP):8.134.0.0 私网IP:172.19.219.123
服务器2(无公网IP):172.19.219.126
配置方法:
1、参考如图步骤在控制台设置。 点击如图,找到ECS服务器的专有网络ID,将右侧的ip段复制备用。
例如本次教程是:172.16.0.0/12 2、在有公网ip的的服务器中打开“ /etc/sysctl.conf ”文件,在文件结尾增加如下规则:
然后执行命令“sysctl -p”刷新设置。net.ipv4.ip_forward = 1
然后在有公网ip的服务器执行如下命令:
说明:iptables -t nat -I POSTROUTING -s 172.16.0.0/12 -j SNAT --to-source 172.19.219.123
- 172.16.0.0/12 为 VPC的私网IP段,参考上面截图获取。
- 172.19.219.123 是有公网IP服务器的私网ip,可以在控制台查看。
题外话:
如果在无公网ip的服务器中ping任何域名都返回有公网ip的私网ip,则是只参考上面截图添加了路由条目后没执行上面命令转发,则会出现如下提示。
执行上面第二步骤中的iptables命令就可以了。ping blog.tag.gg
PING blog.tag.gg (8.137.15.1) 56(84) bytes of data.
From 172.19.219.123 (172.19.219.123): icmp_seq=128 Redirect Host(New nexthop: gateway (172.19.223.253))
From 172.19.219.123 (172.19.219.123): icmp_seq=129 Redirect Host(New nexthop: gateway (172.19.223.253))
From 172.19.219.123 (172.19.219.123): icmp_seq=130 Redirect Host(New nexthop: gateway (172.19.223.253))
From 172.19.219.123 (172.19.219.123): icmp_seq=131 Redirect Host(New nexthop: gateway (172.19.223.253))
From 172.19.219.123 (172.19.219.123): icmp_seq=132 Redirect Host(New nexthop: gateway (172.19.223.253))
From 172.19.219.123 (172.19.219.123): icmp_seq=133 Redirect Host(New nexthop: gateway (172.19.223.253))
From 172.19.219.123 (172.19.219.123) icmp_seq=134 Time to live exceeded
From 172.19.219.123 (172.19.219.123) icmp_seq=135 Time to live exceeded
From 172.19.219.123 (172.19.219.123) icmp_seq=136 Time to live exceeded
问题很简单,记录一下,好记性不如烂笔头,防止自己忘记。
文章评论 本文章有个评论