rinetd使用代理工具实现外网连接

前提条件
如果您需要从本地PC端访问Redis实例进行数据操作,可以通过在ECS上配置端口映射或者端口转发实现。但必须符合以下前提条件:

若Redis实例属于专有网络(VPC),ECS需与Redis实例属于同一个VPC。
若Redis实例属于经典网络,ECS实例需为与Redis实例在同一地域的经典网络实例。
已将访问数据库的ECS服务器私网地址加到目标Redis实例的白名单中。详情请参见设置IP白名单。
已在ECS服务器的安全组中添加安全组规则,允许本地PC的公网地址和Redis实例的私网地址对ECS服务器的访问。详情请参见添加安全组规则。
说明 如果连接遇到问题,请参见Redis连接问题排查与解决。
ECS Windows篇
目前云数据库Redis版需要通过ECS的内网进行连接访问,如果您需要本地通过公网访问云数据库Redis版,可以在ECS Windows云服务器中通过netsh进行端口映射实现。

登录ECS Windows服务器,在cmd执行以下命令:
netsh interface portproxy add v4tov4 listenaddress=<ECS服务器的私网IP地址> listenport=6379 connectaddress=<云数据库Redis版的连接地址> connectport=6379
![image](https://yqfile.alicdn.com/080196e8db1dd2a49733c49e794cda049e4cfc7d.png)

如果需要查看当前服务器存在的映射,可用netsh interface portproxy show all命令。

设置完成后在本地进行验证测试。


在本地通过redis-cli连接ECS Windows服务器。假设ECS Windows服务器的IP是1.1.1.1,即telnet 1.1.1.1 6379。
连接上ECS windows服务器后,输入连接Redis的密码:auth <Redis的连接密码>。
进行数据写入及查询验证。
通过上述步骤即可实现本地PC或服务器通过公网连接ECS Windows服务器的6379端口,对云数据库Redis版进行访问。

注意
因portproxy由微软官方提供,未开源使用,您如果配置使用过程中遇到疑问,可参看netsh的portproxy使用说明或向微软官方咨询确认。或者您也可以考虑通过其他的方案实现,比如通过portmap配置代理映射。

完成相关操作后,如需删除公网转发,可用netsh interface portproxy delete v4tov4 listenaddress=<ECS服务器的私网IP地址> listenport=6379删除不需要的映射。
ECS Linux 篇
目前云数据库Redis版需要通过ECS进行内网连接访问。如果您本地需要通过公网访问云数据库Redis,可以在ECS Linux服务器中安装rinetd进行转发实现。

在云服务器ECS Linux中安装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
注意 rinetd安装包下载地址不确保下载可用性,您可以自行搜索安装包进行下载使用。
打开配置文件rinetd.conf。
vi /etc/rinetd.conf
在配置文件中输入如下内容:
0.0.0.0 6379 <Redis的连接地址> 6379
logfile /var/log/rinetd.log
说明 您可以使用cat /etc/rinetd.conf命令来检验配置文件是否修改正确。


执行如下命令启动rinetd。
rinetd
您可以通过echo rinetd >>/etc/rc.local将rinetd设置为自启动。

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

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

在本地进行验证测试。
您可以在本地通过redis-cli连接ECS Linux服务器后进行登录验证,比如安装了rinetd的服务器的IP是1.1.1.1,即redis-cli -h 1.1.1.1。或者通过telent连接ECS Linux服务器后进行操作验证。假设ECS Linux服务器的IP是1.1.1.1,即telnet 1.1.1.1 6379。
连接上ECS Linux服务器后,输入连接Redis的密码:auth <Redis的连接密码>。
进行数据写入及查询验证。

通过上述步骤即可实现本地的PC或服务器通过公网连接ECS Linux服务器的6379端口,对云数据库Redis版进行访问。

注意 您可以通过该方案进行测试使用,因rinetd为开源软件,如在使用过程中存在疑问,您可以参看其官方文档或与rinetd官方进行联系确认。

转载文章:源文是阿里云帮助文档。

猜你喜欢

转载自www.cnblogs.com/nanxiang/p/12345276.html