Loading
0

阿里云ECS自建DNAT实现外网通过公网IP端口映射访问到内网服务器

技术小学生微信公众号
腾讯云服务器大促销。
华为服务器
前言:之前文章介绍过阿里云ECS没有公网ip的服务器通过有公网ip访问网络方法,本教程介绍实现外网通过有公网IP的端口映射访问到内网无公网ip服务器的端口方法。希望对大家有帮助。
SNAT:实现没有公网IP的ECS实例借助有公网的ECS访问外网,但是外网无法访问到内网IP;(参考https://blog.tag.gg/showinfo-3-36321-0.html
DNAT:实现外网通过端口映射访问到内网服务器,但是不能实现内网ECS访问到外网。(本教程
说明SNAT和DNAT结合后可以实现,无公网ip的服务器既可以通过有公网ip的服务器访问公网,也可以实现通过有公网ip服务器的ip+端口访问到无公网ip服务器的端口。
服务器信息如下:
服务器1(有公网IP):8.134.0.0  私网IP:172.19.219.123
服务器2(无公网IP):172.19.219.126
实现目标:将8.134.0.0的811端口转发到172.19.219.126 的22端口,实现通过8.134.0.0:811端口访问到172.19.219.126 的22端口。
方法:(记得在安全组中放行811端口)需参考SNAT方法设置后再参考如下设置。
登录有公网ip的服务器执行如下命令即可:
格式:

iptables -t nat -A PREROUTING -p tcp --dport 有公网IP的ECS端口号 -j DNAT --to-destination 目标内网ECS的内网IP加端口号
iptables -t nat -I POSTROUTING -p tcp --dport 有公网IP的ECS端口号 -j MASQUERADE

命令如下:

iptables -t nat -A PREROUTING -p tcp --dport 811 -j DNAT --to-destination 172.19.219.126:22
iptables -t nat -I POSTROUTING -p tcp --dport 811 -j MASQUERADE

解释:将8.134.0.0的811端口转发到 内网ip172.19.219.126的22端口,具体端口可以根据自己情况修改。
设置后就可以通过8.134.0.0的811端口登录172.19.219.126 的22端口了,如图。


 

执行如下命令可以看到nat转发规则情况

iptables -L -n -v -t nat


题外话:
如果规则添加错了需要删除怎么办?
删除nat规则,可以用如下命令:
1、先执行如下命令查看规则的序号(--line-numbers)

iptables -L -n -v -t nat --line-numbers

2、例如我们要删除POSTROUTING中的第1条规则,可以执行如下命令

sudo iptables -t nat -D POSTROUTING 1

执行后就删除了这条规则。

 
技术小学生微信公众号
华为服务器
腾讯云服务器大促销。

声明:站长码字很辛苦啊,转载时请保留本声明及附带文章链接:https://blog.tag.gg/showinfo-3-36322-0.html
亲爱的:若该文章解决了您的问题,可否收藏+评论+分享呢?
上一篇:阿里云ECS自建SNAT实现无公网IP的ECS通过有公网IP的ECS访问网络
下一篇:解决:root切换普通用户su: failed to execute /bin/bash: 资源暂时不可用