我希望能够通过 rdp 进入 squid3 代理(在 ubuntu 上)后面的服务器。
这是 Windows 2000 服务器,用于测试。我需要它位于代理后面,这样它就脱离了我的正常网络,因为它是测试服务器。
我的程序员需要能够登录测试服务器来测试我们使用的软件的更新。
如何让 RDP 端口通过代理转发到我的 virtualbox win2k 服务器客户机?
答案1
我假设代理后面的机器,其唯一通往互联网的路径是通过代理。因此您无法接收传入连接,只能通过 HTTP 代理进行传出连接。
这有点复杂,但通过 OpenVPN 设置 VPN 可能会有所帮助。OpenVPN 客户端有 HTTP 代理选项,可以让它连接到您在网络外操作的 OpenVPN 服务器。
您要通过 RDP 进入的系统必须设置为 OpenVPN 客户端。使用http-proxy
以下选项这里。
在服务器端,你需要做这个(这将要求您设置服务器和客户端证书 -使用 xca这样做可能比按照OpenVPN 文档) 以确保客户端(即您想要通过 RDP 进入的系统)始终接收相同的 VPN IP。
一旦客户端和服务器都处于活动状态并建立连接,从该网络之外的服务器计算机,您应该能够mstsc /v:{VPN-IP}
从 Windows“运行”对话框中访问它。
如果您不想直接在 Win2k 服务器上安装 OpenVPN,请将其安装在同一个网络上代理后面的另一个系统上,然后一旦您通过 RDP 进入这个中间系统,就可以从那里通过 RDP 连接到 WIn2k 服务器。在我看来,Windows 7 和 8 处理“级联”RDP 比 XP 要好一点。
答案2
如果您使用 Squid 作为透明代理并且不需要 IPSec,则可以使用 iptables 执行 DNAT。
假设 win2k 服务器具有该地址10.10.10.10
并使用标准 RDP 端口,则此规则应传递 RDP 流量:
iptables -t nat -A PREROUTING -p tcp --dport 3389 -j DNAT --to 10.10.10.10:3389
如果您想要额外的安全性,您还可以指定允许连接哪些接口/客户端/网络。
例子:
仅允许 eth0
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 3389 -j DNAT --to 10.10.10.10:3389
仅允许 IP 10.10.100.100
iptables -t nat -A PREROUTING -p tcp -s 10.10.100.100 --dport 3389 -j DNAT --to 10.10.10.10:3389
同样,只允许来自特定网络的连接
iptables -t nat -A PREROUTING -p tcp -s 10.0.0.0/8 --dport 3389 -j DNAT --to 10.10.10.10:3389
万一您的 win2k 服务器没有静态 IP,您还需要添加此规则:
iptables -t nat -A POSTROUTING -p tcp --dport 3389 -j MASQUERADE
阅读这里对 NAT 和 DNAT 进行了非常通俗易懂的解释