ufw portforwarding到virtualbox客人

我的目标是能够使用桌面计算机上的远程桌面连接到运行在我的Linux服务器上的virtualbox上的windows xp。

我的设置:

  • 服务器= debian挤压,64位,与公共IP地址(主机)
  • virtualbox-ose 3.2.10(来自debian回购)
  • 作为一个客户在VBox内部运行的Windows XP; VBox中的桥接networking模式,ip = 192.168.1.100
  • ufw作为debian上的防火墙,打开3个端口:22 / ssh,80 / apache和3389用于远程桌面

我的问题:如果我尝试在家用电脑上使用远程桌面,我无法连接到Windows来宾。 如果我首先“ssh -X -C”进入debian服务器,然后运行“rdesktop 192.168.1.100”,我可以连接没有问题。 Windows防火墙被configuration为允许远程桌面连接,我甚至closures(因为这是多余的),看看这是否是问题,但没有什么区别。

由于我能够从本地子网内连接,我怀疑我没有正确设置我的debian防火墙来处理来自外部局域网的连接。 这是我所做的…

首先我的ufw状态:

ufw status Status: active To Action From -- ------ ---- 22 ALLOW Anywhere 80 ALLOW Anywhere 3389 ALLOW Anywhere 

我编辑了/etc/ufw/sysctl.conf并添加了:

 net/ipv4/ip_forward=1 

编辑/ etc / default / ufw并添加:

 DEFAULT_FORWARD_POLICY="ACCEPT" 

编辑/etc/ufw/before.rules并补充说:

 # setup port forwarding to forward rdp to windows VM *nat :PREROUTING - [0:0] -A PREROUTING -i eth0 -p tcp --dport 3389 -j DNAT --to-destination 192.168.1.100 -A PREROUTING -i eth0 -p udp --dport 3389 -j DNAT --to-destination 192.168.1.100 COMMIT # Don't delete these required lines, otherwise there will be errors *filter <snip> 

重新启动防火墙等,但没有连接。

我在debian主机上的日志文件显示这(我公开的IP地址已被删除这张贴,但在实际日志中是正确的):

 Feb 6 11:11:21 localhost kernel: [171991.856941] [UFW AUDIT] IN=eth0 OUT=eth0 SRC=aaa.bbb.ccc.dd DST=192.168.1.100 LEN=60 TOS=0x00 PREC=0x00 TTL=45 ID=27518 DF PROTO=TCP SPT=54201 DPT=3389 WINDOW=5840 RES=0x00 SYN URGP=0 Feb 6 11:11:21 localhost kernel: [171991.856963] [UFW ALLOW] IN=eth0 OUT=eth0 SRC=aaa.bbb.ccc.dd DST=192.168.1.100 LEN=60 TOS=0x00 PREC=0x00 TTL=45 ID=27518 DF PROTO=TCP SPT=54201 DPT=3389 WINDOW=5840 RES=0x00 SYN URGP=0 Feb 6 11:11:24 localhost kernel: [171994.856701] [UFW AUDIT] IN=eth0 OUT=eth0 SRC=aaa.bbb.ccc.dd DST=192.168.1.100 LEN=60 TOS=0x00 PREC=0x00 TTL=45 ID=27519 DF PROTO=TCP SPT=54201 DPT=3389 WINDOW=5840 RES=0x00 SYN URGP=0 Feb 6 11:11:24 localhost kernel: [171994.856723] [UFW ALLOW] IN=eth0 OUT=eth0 SRC=aaa.bbb.ccc.dd DST=192.168.1.100 LEN=60 TOS=0x00 PREC=0x00 TTL=45 ID=27519 DF PROTO=TCP SPT=54201 DPT=3389 WINDOW=5840 RES=0x00 SYN URGP=0 Feb 6 11:11:30 localhost kernel: [172000.856656] [UFW AUDIT] IN=eth0 OUT=eth0 SRC=aaa.bbb.ccc.dd DST=192.168.1.100 LEN=60 TOS=0x00 PREC=0x00 TTL=45 ID=27520 DF PROTO=TCP SPT=54201 DPT=3389 WINDOW=5840 RES=0x00 SYN URGP=0 Feb 6 11:11:30 localhost kernel: [172000.856678] [UFW ALLOW] IN=eth0 OUT=eth0 SRC=aaa.bbb.ccc.dd DST=192.168.1.100 LEN=60 TOS=0x00 PREC=0x00 TTL=45 ID=27520 DF PROTO=TCP SPT=54201 DPT=3389 WINDOW=5840 RES=0x00 SYN URGP=0 

虽然这是当前的设置/configuration,但我也尝试了几个变种。 我想也许ISP会阻止3389出于某种原因,并试图使用不同的端口,但再次没有连接。

有任何想法吗…? 我忘了修改一些文件的地方?

我真的没有这样做,但你需要做一些比UFW更好的IPTAbles“防火墙”pipe理。

这对于桌面使用来说很好,但它仅仅是为了“服务器级”的使用而devise的。

我强烈build议坐下来花费一些时间学习NetFilter / IPTables的工作方式,并直接使用这些命令。 如果担心会破坏某些东西,在更改之前备份IPTablesconfiguration,或者甚至是基本的“Git”版本控制设置将帮助您尝试并获得信心。

这为我解决了这个问题:

 sudo ufw allow proto tcp from 192.168.1.100 to any port 22 

问题在于响应被阻止。 希望它可以帮助别人。

不知道你是否仍然需要帮助。 我有完全相同的问题,问题是相当基本的。 目标服务器没有默认网关条目,并且没有将这些应答返回到网关。 设置默认网关后,一切都很好。 您可以通过inputroute -n (使用-n避免每个条目耗时的DNS查找)来检查您的路由。

我只是做了:ufw允许[虚拟机IP地址]