通过端口映射的方式,通过具有公网的ECS实例访问用户名下其它未购买公网带宽的内网ECS实例上的服务。端口映射的方案有很多,比如Linux下的SSH Tunnel、rinetd,Windows下的portmap等,本文简要介绍rinetd,和ssh tunnel的配置方法。
提示:本文相关配置和说明仅用于示例和操作指引,阿里云不对相关操作结果及由此产生的问题负责。
apt-get install rinetd -y
wget http://www.boutell.com/rinetd/http/rinetd.tar.gz&&tar -xvf rinetd.tar.gz&&cd rinetd
sed -i ‘s/65536/65535/g’ rinetd.c
mkdir /usr/man&&make&&make install
cat >>/etc/rinetd.conf <>/etc/rc.local如下所示。
allow 192.168.2.# deny 192.168.1.# bindadress bindport connectaddress connectport0.0.0.0 3306 example.rds.aliyuncs.com 3306logfile /var/log/rinetd.logendecho rinetd >>/etc/
rinetd启动后,就已经可以通过云服务器的3306端口连接到处于内网模式的example RDS数据库了。除了这个场景,其它的内网端口转发配置也类似。不过,由于FTP协议端口是随机的,所以无法通过此方法实现转发。另外,配置文件中可以对某个IP或者IP段进行允许或拒绝,藉此提高内网端口的安全性。
通过putty和有公网IP的ECS之间建立SSH隧道,然后通过本地端口转发,实现在客户PC终端上对内网ECS和RDS的直接访问,为客户的远程管理提供了巨大的方便。其数据流向如下示意图。
netstat –na
命令应该可以看到一个127.0.0.1的22端口的本地监听。