通过公网连接ECS代理以访问Tair实例

云数据库 Tair(兼容 Redis)实例不便于开启公网连接地址,但您需要从本地客户端访问Tair实例时,您可以在云服务器ECS上配置端口映射或者端口转发实现。

其中,本地客户端通过公网访问ECS,ECS通过专有网络与Tair实例进行数据交互。

说明

由于公网易受到外部攻击,网络性能、稳定性均较差,不建议在生产环境中使用。

本文档包含第三方产品信息,该信息仅供参考。阿里云对第三方产品的性能、可靠性以及操作可能带来的潜在影响,不做任何暗示或其他形式的承诺。

image

前提条件

  • ECSTair实例属于同一个专有网络(VPC)。

  • 已将ECS的私网地址添加Tair实例的白名单中。

  • 已将本地客户端的公网地址添加ECS的安全组,以允许本地客户端访问ECS6379端口。

ECS Windows

可以在ECS Windows云服务器中通过netsh进行端口映射。

重要

由于PortProxy是由微软官方提供且未开源,您在配置和使用过程中如遇疑问,请参考PortProxy文档,或向微软官方进行咨询确认。您也可以考虑其他方案,例如通过PortMap进行代理映射配置。

  1. 登录ECS Windows服务器,在cmd执行以下命令。

    netsh interface portproxy add v4tov4 listenaddress=<$ECS的私网连接地址> listenport=6379 connectaddress=<$Tair的专有网络连接地址> connectport=6379

    示例:netsh interface portproxy add v4tov4 listenaddress=172.*.*.1 listenport=6379 connectaddress=r-bp1zy*******f16pos.redis.rds.aliyuncs.com connectport=6379

  2. 执行netsh interface portproxy show all命令,查看当前服务器存在的映射。

    系统显示类似如下。

    C:\Users\Administrator>netsh interface portproxy show all
    
    侦听 ipv4:                 连接到 ipv4:
    
    地址            端口        地址            端口
    --------------- ----------  --------------- ----------
    172.*.*.1   6379           r-bp1zy*******f16pos.redis.rds.aliyuncs.com 6379
  3. 在本地客户端进行验证测试。

    1. 在本地通过redis-cli连接ECS公网地址。

      假设ECS 公网IP10.10.10.10,即redis-cli -h 10.10.10.10 -p 6379

    2. 连接成功后,输入Tair的账号密码。

      格式为auth Tair账号密码,例如:auth Passw***

    3. 进行数据写入及查询验证。

  4. 完成相关操作后,如需删除公网转发映射,可在cmd中执行如下命令。

    netsh interface portproxy delete v4tov4 listenaddress=<ECS服务器的私网IP地址> listenport=6379

ECS Linux

可以在ECS Linux服务器中安装Rinetd进行端口转发。

重要

Rinetd为开源软件,如在使用过程中存在疑问,您可以参见Rinetd文档或与Rinetd官方进行联系确认。

  1. 登录云服务器ECS Linux服务器,依次执行如下命令,安装Rinetd。

    wget https://github.com/samhocevar/rinetd/releases/download/v0.70/rinetd-0.70.tar.gz&&tar -xvf rinetd-0.70.tar.gz&&cd rinetd-0.70
    sed -i 's/65536/65535/g' rinetd.c
    mkdir /usr/man
    ./configure
    make&&make install
    说明

    若无法通过命令行中的地址下载Rinetd安装包,您也可以自行搜索安装包进行下载使用。

  2. 打开配置文件rinetd.conf。

     vim /etc/rinetd.conf
  3. 在配置文件中输入如下内容。

    0.0.0.0 6379 <$Tair的专有网络连接地址> 6379
    logfile /var/log/rinetd.log

    您可以使用cat /etc/rinetd.conf命令来检验配置文件是否修改正确。

  4. 执行rinetd命令启动Rinetd。

    • 您可以通过echo rinetd >>/etc/rc.local命令将Rinetd设置为自动启动。

    • 若遇到绑定报错,可以执行pkill rinetd命令结束进程,再执行rinetd命令启动Rinetd。

    • rinetd正常启动后, 执行netstat -anp | grep 6379命令确认服务是否正常运行。

  5. 在本地客户端进行验证测试。

    1. 在本地通过redis-cli连接ECS公网地址。

      假设ECS 公网IP10.10.10.10,即redis-cli -h 10.10.10.10 -p 6379

    2. 连接成功后,输入Tair的账号密码。

      格式为auth Tair账号密码,例如:auth Passw***

    3. 进行数据写入及查询验证。

  6. 完成相关操作后,如需停止公网端口转发,可执行pkill rinetd命令结束进程。