我有一个
- 本地计算机(在 NAT 之后)。
- 可公开访问并具有固定 IP 地址的中间服务器。
- 远程计算机(在 NAT 之后,与本地计算机不同)。
我想暂时通过本地计算机和使用 SOCKS/SSH 的中间服务器共享对本地网络上的网站的访问,以便远程计算机可以查看它。当远程计算机和本地计算机都在 NAT 之后,这可能吗?如果是,如何?
NAT - Static Public IP - NAT
Local Network <- Local Computer - Intermediate Server - Remote Computer
我知道我可以使用 ngrok 和类似的服务来做到这一点,但我想学习如何自己使用 SSH 和 SOCKS 来做到这一点。
赏金:我会优先选择带有示例代码的答案和如何做的解释。谢谢你。
假设:您的本地 Web 服务器在 IP 192.168.1.100 的单独主机上
运行您的中间服务器在 IP 2.3.4.5 上运行
您的本地主机通过 ssh 连接到您的中间服务器并进行一些远程端口转发:
您的远程主机通过 ssh 连接到您的中间服务器并进行一些本地端口转发:
书面:
本地机器使用带有远程端口转发的 ssh 隧道来“捕获”
lo
中间服务器接口上的端口 10080 和 10443。然后将两个远程端口转发到本地网络中 WebServer (192.168.1.100) 的端口 80 和 443。远程机器使用自己的 ssh 隧道“捕获”自己接口的端口 80 和 443,并将它们转发到中间服务器接口
lo
上的端口 10080 和 10443 。lo
因此,远程计算机上连接到内部端口 localhost:80 或 localhost:443 的任何应用程序都将转发到中间服务器的内部端口 :10080 或 :10443,然后通过本地计算机转发到端口 192.168.1.100:80 或192.168.1.100:443 在您的 Web 服务器的 lan 接口上。
希望有帮助。
编辑:重新设计了
lo
接口的 IP 地址。如果您想要/需要动态端口转发,您可以尝试以下配置:
l-user:我的本地计算机上
的用户 i-user:中间
中间的用户:中间主机的 IP 地址
在我的本地计算机上:
远程:
my-local-computer
和之间的远程端口转发intermediate
必须在启动连接之前存在the-remote
。在此配置
the-remote
中,充当端口 3456 上的 SOCKS5 代理,并通过 将流量转发intermediate
到my-local-comuter
它应该在本地局域网中结束的位置。