Linux 实例通过端口转发来访问内网服务
概述
–
通过端口映射的方式,通过具有公网的 ECS 实例访问用户名下其它未购买公网带宽的内网 ECS 实例上的服务。端口映射的方案有很多,比如 Linux 下的 SSH Tunnel、rinetd,Windows 下的 portmap 等,本文简要介绍 rinetd,和 ssh tunnel 的配置方法。
详细信息
提示:本文相关配置和说明仅用于示例和操作指引,阿里云不对相关操作结果及由此产生的问题负责。
rinetd 配置方法
安装 rinetd
-
如果是 Ubuntu 系统,可以直接执行如下命令安装。
apt-get install rinetd -y
-
也可以按照如下介绍使用源代码安装和配置。
-
执行如下命令,下载并解压 rinetd 软件包。
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
rinetd 启动后,就已经可以通过云服务器的 3306 端口连接到处于内网模式的 example RDS 数据库了。除了这个场景,其它的内网端口转发配置也类似。不过,由于 FTP 协议端口是随机的,所以无法通过此方法实现转发。另外,配置文件中可以对某个 IP 或者 IP 段进行允许或拒绝,藉此提高内网端口的安全性。
SSH Tunnel 配置方法
通过 putty 和有公网 IP 的 ECS 之间建立 SSH 隧道,然后通过本地端口转发,实现在客户 PC 终端上对内网 ECS 和 RDS 的直接访问,为客户的远程管理提供了巨大的方便。其数据流向如下示意图。
前置条件
-
客户 PC 终端可以 ssh 登录有公网的 ECS 服务器。
-
有公网的 ECS 服务器可以通过内网访问其他内网 ECS 服务器。
-
有公网的 ECS 服务器可以通过内网访问 RDS(ECS 的内网 IP 在 RDS 的白名单中)。
客户端配置
- 客户端使用 putty,填写有公网 ECS 的 IP 及 ssh 端口。
- 设置 SSH Tunnel:Source Port 是 PC 本地监听的端口,**Destination ** 填写内网 ECS 服务器的内网地址及端口。然后单击 Add,就会生成一个端口转发记录,然后单击 **Open ** 会打开 SSH 连接。
- 在弹出的窗口中输入正常 SSH 登录有公网 IP 的 ECS 服务器。
- 这时在客户 PC 终端上使用
netstat –na
命令应该可以看到一个 127.0.0.1 的 22 端口的本地监听。 - 通过连接这个本地端口就可以连接到内网的 ECS 服务器上。
- 这个方法同样适用于 Windows 系统,为了不与客户 PC 终端的端口冲突,这里使用 33389 端口作为本地监听端口。
- 内网的 RDS 也可以实现。
- 可以在客户 PC 终端直接使用数据库客户端程序来连接 RDS 中的数据库,非常方便。
- 另外,在 SecureCRT 中这个功能叫做 ** 端口转发 **,进行类似的配置后也可以实现同样的功能。
本文内容由互联网用户自发贡献,版权归作者所有,本社区不拥有所有权,也不承担相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:jaagool@sina.cn 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。