连接多层内网redis
今天我的团队的hxd在打多层内网(有授权),有内网的redis密码,但是层数太多,所以探讨怎么连接过去,作为优秀的社会主义新青年,我立马给了俩方案:
- socks代理过去连接
- 端口转发,直接连接外网ip
分析思路如下:
首先我们要知道Redis底层网络通信协议其实是通过TCP来完成的,下面是一堆废话,可看可不看
- 状态回复(status reply)的第一个字节是
"+"
- 错误回复(error reply)的第一个字节是
"-"
- 整数回复(integer reply)的第一个字节是
":"
- 批量回复(bulk reply)的第一个字节是
"$"
- 多条批量回复(multi bulk reply)的第一个字节是
"*"
继续,既然是基于TCP协议,那就两个思路,一个是socks直接代理进去,另一个是端口转发,windows自带了个netsh,这玩意做端口转发还是挺香的,下面依旧是废话,可看可不看
添加一条转发:
netsh interface portproxyadd v4tov4 listenport=监听端口 listenaddress=监听地址 connectport=目标端口 connectaddress=目标地址
查看转发:
`netsh interface portproxyshow all`
删除转发:
`netsh interface portproxy delete v4tov4 listenport=3340 listenaddress=192.168.204.150`
继续,模拟的测试环境拓扑大概是这样的(别问我为啥没画专业的拓扑图,麻烦):
我的主机可以直连192.168.169.239,通过这个主机做netsh端口转发:
`netsh interface portproxyadd v4tov4 listenport=3340 listenaddress=0.0.0.0 connectport=6379 connectaddress=169.2 54.43.139`
redis服务器起个redis服务:
本地连接192.169.169.239的监听端口:
结果:
这个都好使了,那个应该也是好使的,我就不测试了,请原谅我是一个懒比,不原谅也无所谓,我不在乎