我正在build立一个小型的CTF(黑客竞争),并且拥有一台托pipe虚拟机的机器。 其中一个虚拟机将成为目标。
主机无法通过互联网到达,所以我已经build立了一个数字海洋机器作为一个OpenVPN服务器和虚拟主机作为客户端。 下图显示了设置:
我的OpenVPNconfiguration允许客户端之间的stream量和到VMnetworking(virtnet)的路由被推送。 这部分工作,跳转主机可以到达192.168.160.12机器。
在Jump主机上,我添加了以下防火墙规则:
iptables -A FORWARD -d 192.168.160.12 -p tcp --dport 11000 -j ACCEPT iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 11000 -j DNAT --to-destination 192.168.160.12:11000
在VMHost机器上,我这样做了:
iptables -I FORWARD -o tun1 -j ACCEPT iptables -I FORWARD -i tun1 -j ACCEPT
我相信这应该足以将来自Internet的stream量路由到192.168.160.12 VM,但事实并非如此。
它到达VMHost计算机,但不会转发到VM。 当从主机( nc 192.168.160.12 11000 )做一个netcat时,一切正常。 VM到达并响应,但是当我通过互联网(来自Me机器的nc 178.62.XXX.YYY 11000 )执行相同操作时,stream量到达Jump主机,被转发到VMHost,到达tun1上的VMHost接口,但不会像Jump主机是发起者那样转发到virbr0接口。
为什么这个区别?