OpenVPN non è un gateway predefinito per tutto il traffico


21

Sto cercando di fare in modo che il mio client inoltri tutto il traffico attraverso un VPS che esegue OpenVPN. Come puoi vedere, consentirà il ping sia per i domini che per gli indirizzi IP non elaborati, ma non consentirà il traffico come quello fatto attraverso curl e traceroute non produce nulla. Il traffico funziona correttamente quando non è connesso alla VPN.

Tutte le informazioni sono qui: https://pastebin.com/tGspNefn

Grazie.

Configurazioni di lavoro grazie alla soluzione seguente:

Server:

port <integer>
proto udp
dev tun
ca ca.crt
cert vpnserver.crt
key vpnserver.key  # This file should be kept secret
dh dh4096.pem
tls-auth ta.key 0
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway autolocal"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
cipher AES-256-CBC
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3

Cliente:

client
dev tun
proto udp
remote x.x.x.x <port number>
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert vpnclient.crt
key vpnclient.key
tls-auth ta.key 1
ns-cert-type server
cipher AES-256-CBC
comp-lzo
verb 3

/sbin/route add -net 0.0.0.0 netmask 128.0.0.0 gw 10.8.0.5 perché netmask 128.0.0.0?
Antony Gibbs,

Grazie DrDinosaur per aver segnalato serverfault.com/questions/312860/…
Antony Gibbs il

3
La prossima volta estrarre le informazioni pertinenti e includerle nella domanda. Gli snippet di Pastebin hanno una durata limitata.
MLu,

Risposte:


34

Ci sono due parti nella soluzione:

1. Reindirizzare tutto il traffico nel tunnel

La soluzione più semplice: usa l' --redirect-gateway autolocalopzione OpenVPN (o inseriscila nel file di configurazione come redirect-gateway autolocal.

2. Gestire il traffico sul server OpenVPN

Ora che il tunnel è attivo, tutto il traffico entra nel tunnel e si apre all'interfaccia del server alla fine del server tun0.

È necessario configurare due cose per farlo funzionare:

un. Abilita l'inoltro di pacchetti

Per impostazione predefinita nella maggior parte delle distribuzioni l'inoltro di pacchetti è disabilitato, quindi i pacchetti dall'interfaccia tunnel non arrivano mai all'interfaccia pubblica. È necessario abilitare l'inoltro con:

~ # sysctl net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1

Una volta testato, rendere permanente la modifica /etc/sysctl.conf

Assicurati anche che iptablesnon blocchi il traffico inoltrato:

~ # iptables -I FORWARD -j ACCEPT

Questo è abbastanza buono per i test: in produzione vorrai rendere le regole del firewall un po 'più specifiche, ma questo è fuori portata qui.

b. NAT i pacchetti in uscita dal tunnel

Con l'inoltro abilitato, i pacchetti vengono inoltrati di default con il loro indirizzo di origine invariato, nel tuo caso 10.8.0.6- tali pacchetti vengono rilasciati sul gateway ISP o anche se arrivano alla destinazione la risposta non trova mai la via di ritorno. Questi indirizzi privati ​​non sono instradabili su Internet.

La soluzione è di NAT il traffico in uscita, ovvero sostituire l' 10.8.0.6indirizzo privato con l'IP pubblico del server VPN. Ciò garantirà che le risposte raggiungano il server VPN e lì verranno inoltrate nuovamente nel tunnel.

~ # iptables -t nat -I POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

3. Provalo

Ora prova ping 8.8.4.4dal tuo client VPN. Dovresti vedere una risposta. Facci sapere se no :)


Ora funziona perfettamente. Mille grazie per la risposta di alta qualità.
DrDinosaur,

Sul lato client aggiungi aggiungi pull al file client.conf oppure aggiungi l'opzione --pull alla riga di comando, in modo che il client accetti la configurazione inviata dal server. Inoltre, se il client viene eseguito in Windows Vista o UAC disabilitato, il servizio openpn in esecuzione sul client non sarà in grado di impostare rotte.
Viktor,

> b. NAT i pacchetti in uscita dal tunnel Questo mi è stato utile.
FelikZ,

Prendi davvero in considerazione che la regola FORWARD -j ACCEPT rende il Server un router aperto tra tutte le sue interfacce. Non deve essere utilizzato su sistemi di produzione. Ma per un HowTo far funzionare velocemente in pratica un ottimo set di istruzioni.
Sprinterfreak il

Il Redirect all the traffic into the tunnelpassaggio nella configurazione del client?
aereo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.