Usando VirtualBox su Ubuntu, voglio connettere due VM Linux (debian 9) insieme, in modo che la prima funga da router per la seconda (VM2), il cui traffico viene completamente instradato attraverso la prima (VM1). VM1 (gateway) è connesso a un servizio VPN e quindi tutto il traffico proveniente da VM2 è connesso alla VPN.
Sono riuscito a fare in modo che il VM2 esegua correttamente il ping di IP esterni come 8.8.8.8. Ma tutte le altre reti falliscono. Penso che il problema sia la risoluzione DNS, che per qualche ragione a me sconosciuta non è stata risolta dal VM1.
Ecco cosa ho fatto finora:
Su VirtualBox, VM1 è collegato a un'interfaccia NAT e a una seconda interfaccia, che è una rete interna denominata "testvpn". VM2 è connesso solo a questa rete interna, non al NAT.
VM1 ha la seguente configurazione / 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
VM2 ha la seguente configurazione / 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
/Etc/resolv.conf di VM2 punta a VM1:
nameserver 10.152.152.10
Con questa semplice configurazione, VM2 può eseguire il ping di VM1, ma non ha accesso a Internet esterno. Per questo devo consentire l'inoltro ip e configurare iptables su 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
Nota che uso apposta tun0 per l'interfaccia di rete VPN, ma i risultati sono esattamente gli stessi con enp0s3 invece di tun0 senza il tunnel VPN attivato. Ora posso eseguire il ping degli indirizzi esterni su VM2, ma tutte le altre connessioni di rete falliscono:
$ curl google.com
curl: (6) Could not resolve host: google.com
Dopo alcune letture online, ho provato ad aggiungere regole iptables apparentemente correlate al DNS sulla prima macchina virtuale 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
Non funziona Si noti che la rete funziona perfettamente su VM1, con o senza VPN.
Non ho sperimentato molto con iptables e non so davvero cosa fare dopo. Ho provato a cercare online soluzioni online ma non sono riuscito a trovare una soluzione. Non vorrei usare le soluzioni dhcp / dnsmasq poiché sono abbastanza sicuro che iptables dovrebbe essere sufficiente.
T