如何在Mac OS X中进行端口转发


36

我想将所有传入连接都连接到主机的端口1000(IP:200.234.XXX.XXX),以转发到主机10.211.55.5上的端口80

我该如何在主机上执行此操作?它正在运行Mac OS X 10.5.8


啊,您也正在运行并行处理,是否遇到与我相同的问题?:)
LearnCocos2D

Answers:


30

非常简单,首先,您需要在Mac上启用远程登录服务(“ 系统偏好设置” ->“ 共享” ->“ 远程登录”)。这将启动您的ssh服务器。

然后在OS X终端中运行以下命令:

ssh -L 200.234.XXX.XXX:10000:10.211.55.5:80 -N 127.0.0.1

您可能需要最初接受服务器指纹,并输入本地密码以进行ssh登录。(您还可以设置本地到本地的ssh公钥/私钥,以使其不提示输入密码,这将作为练习供读者使用。)

格式为:

ssh -L local_addr:local_port:remote_addr:remote_port -N 127.0.0.1

如果端口22未打开,我们可以这样做吗?
Afshin Moazami 2015年

1
您需要以某种方式连接。但是您总是可以在另一个端口上运行ssh……也许是http端口?或BIND(DNS)端口?这些大多在防火墙上打开。
马吕斯

10

使用多功能工具ncat非常简单:

sudo ncat --sh-exec "ncat 10.211.55.5 80" -l 1000 --keep-open

从官方网站获取Mac OS X的ncat / nmap的二进制文件:http ://nmap.org/download.html#macosx

编辑:添加了sudo以在<1024的受限端口上进行侦听


1
谢谢。这很简单,除了不需要重启!
verystrongjoe17年

另外,您无需在macOS上启动SSH服务器。
Tony Baguette


3

好吧,我可以告诉您如何在Mac OS X 10.5.8系统上执行此类操作。

我从关于NAT的答案开始,但是我认为您实际上是想要一个TCP转发器程序(您提到了“代理”和端口转发)。

有几种方法可以执行此操作,尽管您最喜欢的简短方法是Perl脚本tcpforward,但根据您的需要,甚至可以将“ SSH” 强制执行

如果您需要进行一些HTTP操作(您可能需要调整HTTP重定向,以便在请求URL时不带尾部'/'的情况下,您不会被重定向到真实的,不可访问的服务器),那么Apache可以反向代理的工作。您将要查看mod_proxy,尤其是ProxyPass和ProxyPassReverse。难道能够将ProxyRequests,这对前锋代理。如果您已经运行了Mac OS的Apache,则应该可以这样做。它确实带有mod_proxy,并且/etc/httpd/httpd.conf是要更新的配置文件。

即使使用Apache,您也需要确保真实服务器内容中的所有链接都是相对的,如果它们引用真实服务器,则可以尝试使用mod_proxy_html模块(我没有经验如何工作)。


对于tcpforward + 1,Perl永远不会停止有用。
史蒂夫·凯莱特

0

您的机器是否直接连接到Internet(IE-没有路由器)?通常,您在路由器上进行端口转发,但是如果您确实使用调制解调器直接连接,则iptables可能是最好的方法。


我不知道为什么这被否决,因为这是事实。
Hasaan Chop

4
@HasaanChop这被否决了,因为它没有帮助。如果它准确地详细说明了如何使用它iptables来完成所要提出的问题,那将很有用。
乔恩·埃里克

在Mac OS X上没有iptables。
Unname_1 2017年

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.