更新:我现在需要尽快解决这个问题。我有点明白我可能会iptables
为 NAT 和端口转发设置一些东西,但我对这个工具或其语法知之甚少,无法提出我自己的规则。
- 我的本地网络上有一台具有静态 IP 的机器:
192.168.1.166
. (运行 Debian 10 的 Hyper-V 虚拟机) - 该机器运行 Cisco AnyConnect 以连接到我的工作 VPN。
这个 VPN 客户端设置了第二个网络接口,所以我有两个:(
eth0
我的 LAN)和cscotun0
- 我希望能够
192.168.1.166
在我的个人桌面上放入 RDP 客户端,并让它通过 VM 连接到我工作的远程桌面。
我真正需要回答的唯一问题:
如何将端口 3389 上的 TCP 和 UDP 连接从我的个人桌面(通过 VM)路由到工作中的远程系统?
我猜VM需要“伪装”RDP连接,就好像来自VPN客户端一样,它在工作网络上获得一个动态IP,所以我知道我需要NAT。masquerade
是否也需要该工具?
原始问题:
我需要通过 Cisco AnyConnect 全隧道 VPN 使用 RDP 来在家工作。
我工作的 IT 部门尚未将 VPN 服务器配置为仅支持 RDP 的拆分隧道,而且我可能会发现自己在工作中需要其他网络服务,所以我想解决使用全隧道连接的问题。但是,我不想在我的个人计算机上使用 AnyConnect VPN 客户端,因为我的印象是我的所有互联网流量也会通过 VPN 进行路由。
我已经设置了一个运行 VPN 客户端的 Debian 10 虚拟机。我想让这个虚拟机伪装成我局域网上的远程 RDP 服务器。这样我就可以避免在我的个人计算机上运行 VPN 客户端,而只需将 RDP 客户端连接到 VM,然后通过 VPN 将 RDP 连接转发到实际的 RDP 服务器。
那么,我该如何实现呢?
我只有管理权限:
- 我在家里的 Windows 10 桌面。
- 我的“代理”虚拟机
- 我家的路由器
- 我的 Windows 10 桌面在工作。(尽管 IT 可以阻止/撤消我所做的任何更改,如果它们存在安全风险)
我目前正在使用 VNC 和 RDP 的组合来通过 VM 进行远程桌面跳转,但它的分辨率受到 VM 管理程序的限制,并且结合了这两种协议的缺点。
如果您的 VM
192.168.1.166
可以访问两个网络(您的本地网络和通过 VPN 的公司网络),则使用socat
在您的 VM 和公司 RDP 服务器之间建立双向“隧道”:这将在您的 VM 上打开端口
3389
,并且任何到达那里的流量都将通过隧道传输到remote-addr:3389
.Socat 还支持 UDP。
Socat 会在连接终止后退出,因此为了确保它始终存在,请创建一个在无限循环中运行此命令的脚本:
通过这种方式,您可以在个人桌面上指定
192.168.1.166
为 RDP 服务器,并且流量将通过隧道传输到公司服务器。