iptables 语法将远程桌面请求转发到 CentOS 主机上的虚拟机

iptables 语法将远程桌面请求转发到 CentOS 主机上的虚拟机

我可以从托管机器上 rdesktop 到托管在我的 CentOS 5.4 机器上的运行 Windows XP 的 VM,并且使用私有地址 (192.168.122.65) 正常工作,但我现在需要允许从其他计算机(而不仅仅是托管 VM 的机器)进行远程桌面访问。

我只需要允许访问一天左右,所以不想添加 NIC(出于 XP 激活的原因)。

有人能帮我iptables句法?

VM 位于私有/虚拟网络上:192.168.122.65,而我的 CentOS 机器位于物理网络上,地址为 10.1.3.38(192.168.122.1 作为虚拟网络的 GW)。

我发现了一个关于转发 Windows 远程桌面连接的 iptables 规则的问题但没有答案似乎工作,我有点不敢盲目尝试变化。我的 FORWARD 规则如下所列。

# iptables -L FORWARD
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             192.168.122.0/24    state RELATED,ESTABLISHED 
ACCEPT     all  --  192.168.122.0/24     anywhere            
ACCEPT     all  --  anywhere             anywhere            
REJECT     all  --  anywhere             anywhere            reject-with icmp-port-unreachable 
REJECT     all  --  anywhere             anywhere            reject-with icmp-port-unreachable 
RH-Firewall-1-INPUT  all  --  anywhere             anywhere

如果我确实“盲目”玩,有没有简单的方法可以重置 CentOS 上的设置(服务网络重启)?

答案1

在执行任何操作之前,请先执行service iptables save。这会将所有 iptables 规则复制到/etc/sysconfig/iptables。从这里,您可以复制该文件,然后根据自己的喜好进行测试。要恢复到您保存的规则集,请确保规则集位于同一文件中(如果您没有保存任何其他 iptables,那么应该没问题)并执行service iptables resart。您保存时所拥有的规则集现已恢复原位。

现在我有时间了,就更新一下:我认为语法会起作用:iptables -t nat -A PREROUTING -p tcp --dport 3389 --to-destination 192.168.122.65 ; echo 1 > /proc/sys/net/ipv4/ip_forward。请注意,这意味着进入该主机的任何 RDP 流量都将被转发。

答案2

它应该可以很好地与您链接的帖子中的示例配合使用。必须在 iptables 表中完成nat,如下所示:

iptables -t nat -I PREROUTING -p tcp -d 10.1.3.38 --dport 3389 -j DNAT --to-destination 192.168.122.65

然后使用您的 RDP 客户端远程连接到 10.1.3.38 端口 3389。

答案3

我宁愿将虚拟机上的网卡与主机上的网卡桥接起来,以便虚拟机从为主机提供服务的 DHCP 服务器获取 10.1.3.X 范围内的 IP 地址(或者,如果您使用静态 IP 地址,请设置您自己的 IP 地址)。

这是否可以接受取决于您的情况,但如果您使用的是单独的物理机而不是虚拟机,如果您只是将其粘贴到您的网络上,那么对您的虚拟机执行相同的操作。

相关内容