我有一台装有 RedHat 6.5 的服务器,它的 NIC eth2 连接到互联网的地址为 1.2.3.4。在此服务器上,我安装了 VirtualBox 4.3.2 并创建了一个装有 Windows Server 2012 SR2 的虚拟机,该虚拟机具有 NAT 连接和仅主机连接以及 IP 地址 192.168.56.101。仅主机连接在 Linux 级别定义为 vboxnet0,如下所示:ip 地址显示:
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 2c:76:8a:5a:b4:c2 brd ff:ff:ff:ff:ff:ff
inet 1.2.3.4/27 brd 1.1.1.1 scope global eth2
inet6 fe80::2e76:8aff:fe5a:b4c2/64 scope link
valid_lft forever preferred_lft forever
9: vboxnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
link/ether 0a:00:27:00:00:00 brd ff:ff:ff:ff:ff:ff
inet 192.168.56.1/24 brd 192.168.56.255 scope global vboxnet0
inet6 fe80::800:27ff:fe00:0/64 scope link
valid_lft forever preferred_lft forever
远程桌面已在 VM win 框上启用,我可以使用 Linux 框成功连接r桌面 192.168.56.101。
我想要做的是能够通过将请求转发到 192.168.56.101:3389,从互联网(即 1.2.3.4:3389)以 RDP 方式连接 vm win box。转发已启用,我正在使用以下 iptables 规则,但它不起作用。
iptables -A INPUT -p tcp --dport 3389 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -t nat -A PREROUTING -d 1.2.3.4 -p tcp --dport 3389 -j DNAT --to 192.168.56.101:3389
iptables -A FORWARD -p tcp --dport 3389 -d 192.168.56.101 -j ACCEPT
iptables -t nat -A POSTROUTING -p tcp --dport 3389 -d 192.168.56.101 -s 192.168.56.101 -j MASQUERADE
有人能帮忙吗?我被困住了。
谢谢你的帮助。
答案1
因此,我按照 Michael Hampton 的提示,使用 KVM 创建了一个虚拟机,并添加了以下 iptables 规则
iptables -t nat -I PREROUTING -p tcp -d 1.2.3.4 --dport 3389 -j DNAT --to-destination 192.168.122.1:3389
iptables -t nat -I PREROUTING -p udp -d 1.2.3.4 --dport 3389 -j DNAT --to-destination 192.168.122.1:3389
iptables -I FORWARD -m state -d 192.168.122.1 --state NEW,RELATED,ESTABLISHED -j ACCEPT
现在一切正常。iptables 规则是根据本文提供的规则改编的:
感谢和问候