我在家工作。
我需要访问办公室里的机器。办公室有一个私有局域网(例如 192.168.0.0/16),上面有 100 台机器。我希望能够从家里访问这些机器。
我们在 gateway.example.org 上有一个 SSH 堡垒(SSH 网关)主机,我们可以将其用于 SSH 隧道。
这是我想要做的:
- 从家里通过 SSH 连接到 gateway.example.org 。我需要以某种方式设置适当的隧道(SSH 隧道、SOCKS 代理等)
- 如果请求的是 192.168.0.0/16 上的 IP,则强制它通过隧道或代理。
- 如果请求的 IP 与 192.168.0.0/16 网络不匹配,则不要使用代理。有些人使用 ssh隧道传输所有 TCP 流量。但我只想将请求代理到 192.168.0.0/16 网络。
我可以使用 SSH 转发或代理来执行此操作吗?
我可以使用 SOCKS 代理SSH 动态端口转发使用 Linux/Unix 上的 OpenSSH(PuTTY 支持类似功能):
ssh -v -D 3333 gateway.example.org.
但这只适用于网络浏览器和其他一些支持 SOCKS 的应用程序。
我还想强制其他一些流量(VNC 端口 5900/5901)通过代理。具体来说,我正在尝试弄清楚如何让 Dell DRAC 和应用程序以及 Supermicro IPMI KVM-over-LAN 通过此 SSH 隧道工作。
我目前正在使用 Mac(Snow Leopard)笔记本电脑,但我正在寻找一种可以在多种操作系统上运行的更通用的网络概念。
答案1
我使用动态端口转发和智能代理的组合。
ssh -D 12345 我@工作
这将设置一个 SOCKS 代理,监听您本地机器的 12345 端口,并将流量代理到您的工作网络。
然后在 Firefox 上安装“FoxyProxy”。FoxyProxy 有规则允许它决定是否直接将 HTTP 请求发送到目的地,还是通过代理发送。
您想通过隧道运行 vnc。一些查看器(如 xvncviewer)具有“-via”选项,它将为该会话打开自己的 SSH 隧道。或者您可以通过“tsocks”等程序运行 vnc 查看器,它将使用我们上面设置的 12345 隧道。
答案2
我正在寻找一个可以在多种操作系统上运行的更通用的网络概念。
更通用的选项是设置 VPN。有许多不同的 VPN 技术。我强烈推荐 OpenVPN。
有多种方法可以通过 SSH 构建 VPN,但性能不佳,并且大多数方法往往需要大量模糊的配置,这些方法不能跨平台。