rtcp.py 利用 Python 的 Socket 端口进行转发

发布于 2021-12-25 22:55:05 字数 781 浏览 906 评论 0

利用 python 的 socket 端口转发,用于远程维护。如果连接不到远程,会 sleep 36s,最多尝试 200 即两小时。

@usage:
./rtcp.py stream1 stream2
stream 为:l:port 或 c:host:port
l:port 表示监听指定的本地端口
c:host:port 表示监听远程指定的端口

使用场景

A 服务器在内网,公网无法直接访问这台服务器,但是A服务器可以联网访问公网的B服务器(假设IP为 222.2.2.2)。
我们也可以访问公网的B服务器。我们的目标是访问A服务器的22端口。那么可以这样:
1. 在 B 服务器上运行:

./rtcp.py l:10001 l:10002

表示在本地监听了 10001 与 10002 两个端口,这样,这两个端口就可以互相传输数据了。

2. 在A服务器上运行:

./rtcp.py c:localhost:22 c:222.2.2.2:10001

表示连接本地的 22 端口与 B 服务器的 10001 端口,这两个端口也可以互相传输数据了。

3. 然后我们就可以这样来访问A服务器的 22 端口了:

ssh 222.2.2.2 -p 10002

原理很简单,这个命令执行后,B 服务器的 10002 端口接收到的任何数据都会传给 10001 端口,此时,A服务器是连接了 B 服务器的 10001 端口的,数据就会传给A服务器,最终进入A服务器的22端口。

不用更多举例了,rtcp.py 的 l 与 c 两个参数可以进行灵活的两两组合,多台服务器之间只要搞明白数据流方向,那么就能满足很多场景的需求。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文