运维服务小笔记

If not now,when?If not me,who?

十月 26th, 2013

linux-如何同时访问阿里云RDS的内外网-ssh-tunnel/snat/dnat

2,459 views, Server, by 川望.
需求一: 之前介绍了windows下如何通过公网IP代理访问内网的RDS数据库,本文将介绍linux下如果通过公网IP来访问内网的RDS。

近期发现使用rinetd相对会更简单和稳定,所以若有此需求可点此移步

需求二:也有客户内网服务器想通过公网服务器上外网的需求(SNAT/VPN/PROXY)
这两个需求在普通网络环境下很容易实现,开启ipnet.ipv4.ip_forward 之后

需求一:

公网服务器执行iptables命令:iptables -t nat -I PREROUTING -p tcp –dport 3306  -j DNAT –to RDSIP:3306
即可实现访问公网IP的3306端口即可转发到RDSIP的3306端口。
需求二:
公网服务器执行iptables命令:iptables -t nat -I POSTROUTING -s LANIP -j SNAT –to WANIP
内网服务器网关设置为公网服务器的内网IP,即可将访问请求转换为WANIP访问出去。
————
由于阿里云的虚拟化网络有一些限制,所以以上的办法实现这两个需求有时候会不成功,所以这里分享一个应用层实现的肯定管用的转发利用ssh tunnel,如下:
需求一:
[root@test ~]# ssh -Nf -L 122.224.103.234:3433:192.168.131.51:1433192.168.131.219
或者配置sshd_config   GatewayPorts yes然后执行
ssh -Nf -R 122.224.103.234:3433:192.168.1.51:1433 192.168.1.219
即可实现访问103.234服务器的3433端口,会通过内网IP:1.219来跳转访问到内网服务器1.51的1433端口
内网IP:131.219可以公网VM自身的内网IP,也可以是公网VM和内网服务器都可以连接的一台跳板机
备注:
如果3433端口想在自身所有的IP(0.0.0.0)上监听需要配置sshd_config的gatewayports为yes
-N 告诉SSH客户端,这个连接不需要执行任何命令。仅仅做端口转发
-f 告诉SSH客户端在后台运行  (使用此命令后,ssh隧道会一直在后台监听,不会因终端推出而中断)
需求二
开启gatewayports后运行命令
[root@test ~]# ssh -Nf -D 0.0.0.0:1080 122.224.103.234
即可在1080端口上开启socket5 代理,内网服务器需要访问网络的程序只要支持socket5协议即可通过公网服务器代理访问跟公网(QQ,迅雷之类的都是支持的~~)


Back Top

发表评论

电子邮件地址不会被公开。 必填项已用*标注

注意: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。使用'@all ',将会将评论发送给之前所有其它评论者。请务必注意user必须和评论者名相匹配(大小写一致)。

无觅相关文章插件,快速提升流量