Linux实例通过端口转发来访问内网服务

Linux实例通过端口转发来访问内网服务

贡献者:

KB小秘书

 · 

更新时间:2019-08-06 10:43:59

提示: 这是一篇由阿里云ACE开发者(Alibaba Cloud Engineer)贡献,针对特定用户问题发布的文章。文档的内容以原稿呈现,阿里云对于文档内容不做任何形式的承诺。阿里云有权在未经通知的情形下对文档内容做出任何形式的修改。

概述

通过端口映射的方式,通过具有公网的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的白名单中)。

 

客户端配置

  1. 客户端使用putty,填写有公网ECS的IP及ssh端口。
  2. 设置 SSH Tunnel:Source Port 是PC本地监听的端口,Destination 填写内网ECS服务器的内网地址及端口。然后单击 Add,就会生成一个端口转发记录,然后单击 Open 会打开SSH连接。
  3. 在弹出的窗口中输入正常SSH登录有公网IP的ECS服务器。
  4. 这时在客户PC终端上使用netstat –na命令应该可以看到一个127.0.0.1的22端口的本地监听。
  5. 通过连接这个本地端口就可以连接到内网的ECS服务器上。
  6. 这个方法同样适用于Windows系统,为了不与客户PC终端的端口冲突,这里使用33389端口作为本地监听端口。

  7. 内网的RDS也可以实现。

  8. 可以在客户PC终端直接使用数据库客户端程序来连接RDS中的数据库,非常方便。
  9. 另外,在SecureCRT中这个功能叫做 端口转发 ,进行类似的配置后也可以实现同样的功能。

 

适用于

  • 云服务器 ECS
  • 87

    发布KB

  • 596

    回答问题

  • 4

    粉丝数