Usando o VirtualBox no Ubuntu, quero conectar duas VMs do Linux (debian 9) juntas, para que a primeira atue como um roteador para a segunda (VM2), cujo tráfego é completamente roteado através da primeira (VM1) . O VM1 (gateway) é conectado a um serviço VPN e, portanto, todo o tráfego da VM2 é conectado à VPN.
Eu consegui fazer com que a VM2 pingue com êxito IPs externos, como 8.8.8.8. Mas todas as outras redes falham. Eu acho que o problema é a resolução de DNS, que por algum motivo desconhecido para mim não é resolvido pela VM1.
Aqui está o que eu fiz até agora:
No VirtualBox, a VM1 está conectada a uma interface NAT e a uma segunda interface, que é uma rede interna denominada "testvpn". A VM2 está conectada somente a essa rede interna, não ao NAT.
O VM1 tem a seguinte configuração de / etc / network / interfaces:
auto lo
iface lo inet loopback
allow-hotplug enp0s3
iface enp0s3 inet dhcp
allow-hotplug enp0s8
iface enp0s8 inet static
address 10.152.152.10
netmask 255.255.192.0
A VM2 tem a seguinte consolidação / etc / network / interfaces:
auto lo
iface lo inet loopback
allow-hotplug enp0s3
iface enp0s3 inet static
address 10.152.152.15
gateway 10.152.152.10
netmask 255.255.255.0
dns-nameservers 10.152.152.10
O /etc/resolv.conf da VM2 aponta para a VM1:
nameserver 10.152.152.10
Com essa configuração simples, a VM2 pode executar ping na VM1, mas não tem acesso à Internet externa. Para isso, devo permitir o encaminhamento de ip e configurar o iptables na VM1:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
iptables -A FORWARD -i tun0 -o enp0s8 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i enp0s8 -o tun0 -j ACCEPT
Note que eu uso propositadamente tun0 para a interface de rede VPN, mas os resultados são exatamente os mesmos com enp0s3 ao invés de tun0 sem o túnel VPN ativado. Agora posso fazer ping em endereços externos na VM2, mas todas as outras conexões de rede falham:
$ curl google.com
curl: (6) Could not resolve host: google.com
Após algumas leituras on-line, tentei adicionar regras iptables supostamente relacionadas ao DNS na primeira VM do gateway:
iptables -t nat -A PREROUTING -i enp0s8 -p udp --dport 53 -j REDIRECT
iptables -t nat -A PREROUTING -i enp0s8 -p tcp --dport 53 -j REDIRECT
Não funciona. Observe que a rede funciona bem na VM1, com ou sem VPN.
Eu não sou muito experiente com o iptables e realmente não sei o que fazer a seguir. Tentei pesquisar horas on-line em busca de soluções, mas não consegui encontrar uma solução. Eu não gostaria de usar as soluções dhcp / dnsmasq, pois tenho certeza que o iptables deve ser suficiente.
T