场景如下:
我有一台运行 Windows 7 Ultimate 的台式机。该台式机上有 VMware Workstation,还有一台运行自定义 Linux 的虚拟机,其中安装并运行着 OpenSSH。
桌面通过路由器获取互联网,路由器为其分配 IP 192.168.4.50(始终使用 DHCP 地址保留)。虚拟机设置为使用桥接网络,并获取 IP 192.168.4.200(同样始终如此)。
外界无法访问此桌面,路由器并不是将其与具有真实 IP 的调制解调器分开的唯一东西。因此,我使用专有 VPN 程序 (TeamViewer),它允许我从任何地方连接到此桌面。
问题如下:
运行屏幕共享程序(RDP 或 TeamViewer)以便能够向基于文本的虚拟机中输入命令,速度很慢,浪费带宽,而且很麻烦。如果我可以直接通过 SSH 进入虚拟机,那就容易多了,因此 VPN 的流量将只是 SSH 的流量。
VPN 为我分配一个 IP,为桌面分配一个 IP。假设桌面的 IP 是 7.7.7.7
我的问题是,如何通过 SSH 进入 7.7.7.7:22,并让桌面正确地将传入的 SSH 连接转发到虚拟机?
我认为这应该这样做:
netsh interface portproxy add v4tov4 listenport=22 connectport=22 connectaddress=192.168.4.200
但事实并非如此。有人知道为什么吗?
有人能建议别的吗?也许是一个简单的程序,可以在 Windows 机器上的不同接口之间进行正确的端口转发?
如果有帮助的话,我确实有一台具有真实 IP 的 Linux 机器,我可以使用它从 VM 到它创建一个隧道,然后从那里进行 SSH,对于如何设置的任何帮助,我都会表示感谢,但如果可能的话,我宁愿避免这样做。
答案1
据我所知,TeamViewer VPN 只能连接到运行 TeamViewer 的主机,并且不会将流量路由到 LAN 上的其他主机(例如虚拟主机,因为它具有桥接接口)。因此,仅使用 TeamViewer VPN 无法访问 LAN 上的任何主机。请参阅 TeamViewer 手册第 21 页:
注意:如果您通过 TeamViewer VPN 将本地计算机连接到远程计算机,则只有这两台计算机会在虚拟专用网络中连接在一起。任何一台计算机的 LAN 中的其他计算机都无法访问。
我想知道在 Windows 7 工作站上手动设置路由是否有帮助,以便它可以在 TeamViewer VPN(7.7.7.7 网络)适配器和其 LAN(例如 192.168.4.0/24)适配器之间路由流量。在 Windows 7 中设置路由和远程访问服务的说明可在此处找到: http://answers.microsoft.com/en-us/windows/forum/windows_7-networking/how-to-enable-ip-routing-in-windows-7/8970e722-e947-460d-80d5-fd6ffc850f3f
或者,您可以尝试设置其他 VPN 解决方案(我建议OpenVPN),然后通过 TeamViewer VPN 访问它,最后直接通过 SSH 连接到虚拟主机。
当然,如果您可以访问互联网和 Win7 工作站之间的路由器和其他 NAT 和防火墙设备,您可以直接转发必要的端口以直接使用 OpenVPN 并跳过 TeamViewer VPN。
答案2
对于这类事情我总是使用港口隧道
这是 PortTunnel v1.6.10.197 的链接(我从我的实用程序档案中上传了此版本,据我所知,这是最后一个免费版本) PortTunnel v1.6.10.197
无论如何,我不明白 VPN/Temaviewer 的事情:
- 是 teamviewer 创建了 VPN 吗?
- 或者您有一个 VPN(由其他软件创建),并使用 VPN 通过 teamviewer 连接到桌面?
- 7.7.7.7 IP 是您计算机上的 VPN 端点吗?那么它就像安装在您计算机上的另一块网卡?
检查事项:
- 创建 VPN 的软件是否强制执行任何类型的连接过滤?
- 也许是 Windows 防火墙做了一些奇怪的事情...您是否尝试过禁用 Windows 防火墙?
- 您是否检查过 Windows 如何识别 VPN 网络?(也许 Windows 认为 VPN 网络是公共网络,然后阻止任何未明确允许的连接...)
您可以尝试做的事情:
- 尝试创建一个特定的端口隧道,监听 7.7.7.7 并转发到 192.168.4.200(您可以尝试使用 PortTunnel...但即使使用 netsh 也应该可以工作)