如何在我的 Mac 上转发可供全世界访问的端口?

如何在我的 Mac 上转发可供全世界访问的端口?

我知道关于端口转发有很多信息,但这是我的具体的情况。

我需要使用 Remote in(通过 VNC)连接到我的 Mac。默认情况下,Mac 远程共享服务器监听端口 5900。这很好,只是我的公司阻止了端口 5900 的传入连接!

但是,它允许端口 3389。所以我想做的是进行设置,以便我可以监听端口 3389 上的连接并将它们转发到 5900。

以下是我尝试过的: ssh 127.0.0.1 -L3389:127.0.0.1:5900

这并不能完全满足我的要求,因为只有来自 127.0.0.1 的连接才会被端口 3389 接受。

 netstat -an | egrep 'Proto|LISTEN'
Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)
tcp6       0      0  *.5900                 *.*                    LISTEN
tcp4       0      0  *.5900                 *.*                    LISTEN
tcp4       0      0  127.0.0.1.3389         *.*                    LISTEN

*我需要在端口 上监听世界3389。我该如何实现?

答案1

您的问题缺乏具体细节,如果不知道以下几点就很难直接回答:

  1. 您可以从外部(例如朋友家,您的工作不会阻止您)连接到默认 VNC 端口吗?如果可以,您可以将 VNC 监听的端口更改为 3389 并进行测试。 如何更改 Mac OS X 上的默认屏幕共享/VNC 端口号?

  2. 您提到的 ssh 命令需要从连接的机器而不是“服务器”运行。因此,您需要运行:

    ssh address.of.your.mac -L9999:127.0.0.1:5900
    

    然后将 VNC 连接到客户端计算机上的 localhost:9999。我使用 9999 作为示例,因为它可能未被使用,如果您的客户端是 Mac,则可能是 5900,如果您的客户端是 Windows,则可能是 3389。

要明确的是:您需要能够在工作时通过 ssh 进入您的 Mac,-L 后面的数字是您在连接机器 (localhost) 上连接的端口,127.0.0.1:5900 是 VNC 已经在您的 (远程) Mac 上监听的位置。

  1. 我还会考虑使用 VPN 来绕过工作限制(以及出于安全考虑)。OpenVPN 可以轻松在端口 443(HTTPS)上运行,该端口可能被允许,并且如果您的工作以这种方式限制 Web 访问,它甚至可以在代理服务器上工作。设置它并不太难,但超出了这个问题的范围。

答案2

launchd您可以更改监听 VNC 连接的端口,而不是进行端口转发。(launchd代表进行监听,并在连接尝试进入时screensharingd启动)。screensharingd

screensharingd是 OS X 中的默认 VNC 服务器。如果您使用 Apple Remote Desktop(又名 ARD,“远程管理”),则这些说明可能需要稍作修改。

编辑/System/Library/LaunchDaemons/com.apple.screensharing.plist

查找此键/值对:

<key>SockServiceName</key>
<string>vnc-server</string>

并将其改为:

<key>SockServiceName</key>
<string>3389</string>

然后您可能需要重新启动或强制launchctl重新launchd加载该 plist。

然后,在您的 VNC 客户端中指定 3389 端口。例如,OS X 的内置 VNC 客户端使用 URL,因此您可以将其交给。或者省略 ,以便系统提示您。vnc://username:[email protected]:3389/username:password

读者须知:我本人没有尝试过,因此请自行承担风险。在编辑 plist 文件之前,请考虑备份该文件,这样可以轻松将其恢复原状。

答案3

您可以尝试-D使用 ssh 选项,即动态端口转发。因此,这可能看起来像:ssh -D 3389 [email protected]

我昨天做了这个,现在从记忆中回想起来,但这就是它的基本原理。一旦此命令起作用,您只需输入密码并配置您的应用程序以监听指定的端口 - 在您的情况下为 3389,IP 地址为 127.0.0.1。

我认为这会使用 ssh 创建一种 SOCKS 代理。

:D

答案4

我认为你正在寻找类似的东西,iptables 的 Mac 版本。

我没有 Mac,所以无法亲自测试,但我建议尝试一下

sudo ipfw add fwd 127.0.0.1,5900 tcp from any to 127.0.0.1 dst-port 3389

请注意,似乎有各种不同的语法ipfw可以处理(127.0.0.1,3389而且127.0.0.1 3389从我找到的来看,它们似乎也能工作)。我会将您链接到 FreeBSD 页面,但作为新用户,我还没有足够的声誉 :whistle:。

或者由于ipfw已被弃用,您可能想尝试pfctl如下所述这里

相关内容