从受限制的网络端口转发流量,家庭不受限制


0

这是一个场景:我有一个企业电子邮件,其SMTP服务器侦听端口2525.我可以在家中配置像thunderbird这样的电子邮件客户端,没有任何问题。我还有另一个工作,大多数出站端口都关闭,包括2525.但是,有一些端口可用于出站流量。

有没有办法让我使用我的家庭无限制网络和路由器(和那里的Linux系统24/7)重定向流量?我曾经做过类似的SSH隧道浏览,没有代理限制浏览互联网,但这是不同的。

我的想法:在受限制的网络中:在我找到的任何开放端口上将SMTP设置为我的家庭静态IP。在家中:将该端口重定向到(1)直接在2525(2)本地服务器上的真实SMTP,然后在2525上以某种方式重定向到SMTP

那么:我想要做的是什么名字?你怎么认为我能做到这一点?

谢谢

Answers:


1

我想要做的是什么名字?

TCP中继

你怎么认为我能做到这一点?

socat

...

socat TCP4-LISTEN:www TCP4:www.domain.org:www

安装一个简单的TCP端口转发器。使用TCP4-LISTEN,它会侦听本地端口“www”,直到连接进入,接受它,然后连接到远程主机(TCP4)并开始数据传输。它不接受第二个连接。


socat -d -d -lmlocal2 \
TCP4-LISTEN:80,bind=myaddr1,su=nobody,fork,range=10.0.0.0/8,reuseaddr \
TCP4:www.domain.org:80,bind=myaddr2

TCP端口转发器,每一侧绑定到另一个本地IP地址(绑定)。此示例通过在每个accept()之后分叉新进程来处理几乎任意数量的并行或连续连接。它在分叉后向用户提供了一点安全保障;它只允许来自私有10网络(范围)的连接;由于reuseaddr,它允许在主进程终止后立即重启,即使某些子套接字没有完全关闭。使用-lmlocal2,socat会记录到stderr,直到成功到达accept循环。进一步的日志记录将定向到具有local2设施的syslog。


socat TCP4-LISTEN:5555,fork,tcpwrap=script \
EXEC:/bin/myscript,chroot=/home/sandbox,su-d=sandbox,pty,stderr

一个简单的服务器,接受连接(TCP4-LISTEN),fork是每个连接的新子进程;每个孩子都充当单一接力。客户端必须匹配/etc/hosts.allow和/etc/hosts.deny中守护进程名称“script”的规则,否则将被拒绝访问(请参阅“man 5 hosts_access”)。对于EXEC'uting程序,子进程chroot到/ home / sandbox,su到用户沙箱,然后启动程序/ home / sandbox / bin / myscript。 Socat和myscript通过伪tty(pty)进行通信; myscript的stderr被重定向到stdout,因此它的错误消息通过socat传输到连接的客户端。


socat EXEC:"mail.sh target@domain.com",fdin=3,fdout=4 \
TCP4:mail.relay.org:25,crnl,bind=alias1.server.org,mss=512

mail.sh是一个与socat一起发布的shell脚本,它实现了一个简单的SMTP客户端。它被编程为在其FD(3)和4(out)上“说”SMTP。 fdin和fdout选项告诉socat使用这些FD与程序进行通信。因为mail.sh继承stdin和stdout而socat不使用它们,所以脚本可以从stdin读取邮件正文。 Socat使alias1成为您的本地源地址(bind),关心正确的网络线路终端(crnl)并且每个数据包发送最多512个数据字节(mss)。

...


精彩。来自socat的精彩报价。还要感谢指出技术的名称。有时候(特别是对于非英语使用者而言)只是缺少google工具。
alete
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.