NB: Sono un noob di networking quindi supponiamo di non sapere nulla e di spiegare le cose di conseguenza (o di fornire collegamenti a maggiori informazioni).
Sto provando a configurare un server OpenVPN in modo tale che tutto il traffico client (incluso il traffico web) venga instradato attraverso la VPN. Sto seguendo l'OpenVPN HOWTO e ho ottenuto fino alla sezione "Instradare tutto il traffico del client (incluso il traffico web) attraverso la VPN" ( https://openvpn.net/index.php/open-source/documentation/howto.html#redirect ).
La mia configurazione è:
Server OpenVPN (BeagleBone Black (BBB) su rete privata IP 10.240.233.2) connesso al mio router a banda larga a home (sulla rete privata IP 10.240.233.1).
Client (laptop che esegue Xubuntu GNU / Linux) connesso a una rete esterna.
Posso con successo:
Avvia il server OpenVPN sul BBB all'avvio
Connetti client a VPN
Ping OpenVPN server (10.8.0.1) dal client (10.8.0.6) e vice versa
Effettua il ping del router (10.240.233.1) dal client
Quest'ultimo è stato raggiunto da:
Aggiunta della seguente direttiva al file di configurazione del server:
push "route 10.240.233.0 255.255.255.0"
Abilitazione dell'inoltro IP sul server OpenVPN mediante modifica
/etc/sysctl.conf
(Ecco la modifica:# Uncomment the next line to enable packet forwarding for IPv4 net.ipv4.ip_forward=1
, dopo di che il comandosudo sysctl net.ipv4.ip_forward
i rendimentinet.ipv4.ip_forward = 1
)Abilitare il tun forwarding usando i seguenti comandi (da questa guida: https://nikinuryadin.wordpress.com/2010/04/16/step-by-step-setting-up-openvpn-in-debian-with-routing-tun-connection/ ):
sudo iptables -A INPUT -i tun+ -j ACCEPT
esudo iptables -A FORWARD -i tun+ -j ACCEPT
Ora per il bit di reindirizzamento ...
Ho aggiunto le seguenti direttive al file di configurazione del server (da OpenVPN HOWTO):
push "redirect-gateway def1"
push "dhcp-option DNS 10.240.233.1"
NB: l'IP DNS inviato è quello del mio router a banda larga, che posso eseguire il ping con successo dal client quando connesso alla VPN e che il server sta segnalando come server dei nomi ( cat /etc/resolv.conf
sul rendimento del server nameserver 10.240.233.1
)
Ho quindi utilizzato il seguente comando per NAT il traffico del client VPN su Internet (dall'OpenVPN HOWTO):
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
(Sì, la mia connessione dal server OpenVPN al router a banda larga è segnalata dal server come eth0
(usando ifconfig
))
Infine, ho eseguito i seguenti comandi per salvare l'iptables e riavviare la VPN (dal Niki Nuryadin collegato sopra):
sudo iptables-save
sudo /etc/init.d/networking restart
sudo /etc/init.d/openvpn restart
Posso eseguire il ping con successo su www.google.com e www.bbc.co.uk dal server OpenVPN. (Posso anche eseguire il ping dal portatile mentre non connesso alla VPN, obv!). Tuttavia, quando connesso alla VPN, non posso eseguire il ping di questi siti dal client.
Di solito, se provi a eseguire il ping di qualcosa che non è disponibile (ad es. ping 192.168.7.2
), ottieni un risultato come questo:
PING 192.168.7.2 (192.168.7.2) 56(84) bytes of data.
e poi si blocca. Tuttavia, in questo caso, quando il client è connesso al server OpenVPN e provo a eseguire il ping su Google o BBC, non ottengo alcun output.
Non riesco a trovare la risposta ovunque su serverfault.com o altrove. L'unico indizio che ho è che l'OpenVPN HOWTO dice:
[Usando `push" dhcp-option DNS 10.240.233.1 "] configurerà i client Windows (o client non Windows) con alcuni script di scripting extra sul lato server ) per utilizzare [10.240.233.1] come server DNS.
Quindi, ho bisogno di uno script aggiuntivo sul lato server? O c'è qualche altro problema?
Inoltre, una volta che posso eseguire il ping dei siti Web e navigare in Internet, come posso verificare che tutto il traffico stia effettivamente attraversando il tunnel di OpenVPN e non solo bypassarlo come faceva prima di eseguire questi passaggi?