Como encaminhar porta pela VPN no Linux

1

Estou configurando um pequeno CTF (competição de hackers) e tenho uma máquina que hospeda VMs. Uma dessas VMs será o alvo.

A máquina host não pode ser acessada pela Internet, portanto, configurei uma máquina da Digital Ocean como um servidor OpenVPN e o host da VM como um cliente. O diagrama a seguir mostra a configuração:

Minha configuração OpenVPN permite o tráfego entre clientes e uma rota para a rede VM (virtnet) foi enviada. Esta parte funciona, e o host do Jump pode alcançar a máquina 192.168.160.12.

No host do Jump, adicionei as seguintes regras de firewall:

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

Na máquina VMHost eu fiz isso:

iptables -I FORWARD -o tun1 -j ACCEPT
iptables -I FORWARD -i tun1 -j ACCEPT

Acredito que isso seja o suficiente para direcionar o tráfego da Internet para a VM 192.168.160.12, mas não é.

Alcança a máquina VMHost, mas não é encaminhada para a VM. Ao fazer um netcat do host Jump ( nc 192.168.160.12 11000 ), tudo funciona bem. A VM é atingida e responde, mas quando eu faço o mesmo pela internet ( nc 178.62.XXX.YYY 11000 da máquina Me) o tráfego chega ao host Jump, é encaminhado para o VMHost, chega ao VMHost na interface tun1, mas é não é encaminhado para a interface do virbr0 como quando o host do Jump era o originador.

Por que essa diferença?

    
por Robert Larsen 20.06.2016 / 15:06

0 respostas