Instradamento di tutto il traffico tramite VPN su Ubuntu Linux


13

Dopo aver trascorso ore ore a risolvere i problemi, a esplorare potenziali soluzioni su questo sito e altri, e sono rassegnato a chiedere consiglio ai miei scommettitori. Sto lavorando per instradare tutto il traffico di rete su un'istanza di Ubuntu su una VPN Cisco in un'università. Utilizzando il gestore di rete integrato o vpnc, posso stabilire con successo una connessione alla VPN e instradare con successo il traffico verso qualsiasi IP universitario tramite la VPN. Tuttavia, a parte questi specifici intervalli IP, non riesco a evocare alcun percorso che mapperà con successo tutto il traffico di rete tramite la VPN.

Finora ho provato:

route add -net 0.0.0.0 gw homeportal dev tun0
route add -net 0.0.0.0 tun0
route add -net 0.0.0.0 gw 128.122.252.77 dev tun0
route add -net 0.0.0.0 gw 128.122.252.77 dev eth0
iptables -A AVANTI -o tun0 -j ACCETTA
iptables -A AVANTI -i tun0 -j ACCETTA
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

E molte altre cose sciocche, inefficaci, che non riesco a ricordare abbastanza bene da trascrivere accuratamente.

Inoltre, ho provato a instradare intervalli IP più piccoli e IP specifici, ognuno senza risultati. Non sono davvero sicuro di cosa stia andando storto, poiché l'entità degli effetti che sono stato in grado di osservare sono i guasti della risoluzione dei nomi e i guasti al traffico del traffico tramite la VPN. Cosa sto facendo di sbagliato qui?

Modificare-

Ecco l'output di ip route showdopo aver avviato la connessione VPN con VPNC:

impostazione predefinita tramite 192.168.1.254 dev eth0 proto statico 
10.0.0.0/8 link ambito dev tun0 
91.230.41.0/24 dev tun0 scope link 
Collegamento dell'ambito 128.122.0.0/16 dev tun0 
128.122.252.68 tramite 192.168.1.254 dev eth0 src 192.168.1.32 
128.122.253.46 link ambito dev tun0 
128.122.253.79 dev tun0 scope link 
172.16.0.0/12 dev tun0 scope link 
Collegamento ambito 192.168.0.0/16 dev tun0 
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.32 metrica 1 
193.175.54.0/24 dev tun0 scope link 
Collegamento dell'ambito 193.205.158.0/25 dev tun0 
Collegamento dell'ambito 193.206.104.0/24 dev tun0 
195.113.94.0/24 dev tun0 scope link 
203.126.200.0/24 dev tun0 scope link 
203.174.165.128/25 dev tun0 scope link 
Link ambito 212.219.93.0/24 dev tun0 
Link ambito scope 216.165.0.0/17 dev tun0

Maggiori informazioni-

Ho instradato correttamente il traffico arbitrario su questa VPN in MS Windows tramite il client Cisco AnyConnect con configurazione predefinita. Ecco come appare la tabella di routing quando il client AnyConnect funziona (questo è un computer diverso dietro lo stesso router a 192.168.1.254).

Tabella di instradamento IPv4
================================================== =========================
Percorsi attivi:
Metrica dell'interfaccia gateway maschera di rete di destinazione di rete
          0.0.0.0 0.0.0.0 192.168.1.254 192.168.1.13 30
         10.0.0.0 255.0.0.0 192.168.128.1 192.168.128.197 2
      91.230.41.0 255.255.255.0 192.168.128.1 192.168.128.197 2
        127.0.0.0 255.0.0.0 On-link 127.0.0.1 306
        127.0.0.1 255.255.255.255 On-link 127.0.0.1 306
  127.255.255.255 255.255.255.255 On-link 127.0.0.1 306
      128.122.0.0 255.255.0.0 192.168.128.1 192.168.128.197 2
   128.122.252.68 255.255.255.255 192.168.1.254 192.168.1.13 31
       172.16.0.0 255.240.0.0 192.168.128.1 192.168.128.197 2
      192.168.0.0 255.255.0.0 192.168.128.1 192.168.128.197 2
      192.168.1.0 255.255.255.0 On-link 192.168.1.13 286
     192.168.1.13 255.255.255.255 On-link 192.168.1.13 286
    192.168.1.254 255.255.255.255 On-link 192.168.1.13 31
    192.168.1.255 255.255.255.255 On-link 192.168.1.13 286
     192.168.31.0 255.255.255.0 On-link 192.168.31.1 276
     192.168.31.1 255.255.255.255 On-link 192.168.31.1 276
   192.168.31.255 255.255.255.255 On-link 192.168.31.1 276
    192.168.128.0 255.255.255.0 On-link 192.168.128.197 257
  192.168.128.197 255.255.255.255 On-link 192.168.128.197 257
  192.168.128.255 255.255.255.255 On-link 192.168.128.197 257
    192.168.203.0 255.255.255.0 On-link 192.168.203.1 276
    192.168.203.1 255.255.255.255 On-link 192.168.203.1 276
  192.168.203.255 255.255.255.255 On-link 192.168.203.1 276
     193.175.54.0 255.255.255.0 192.168.128.1 192.168.128.197 2
    193.205.158.0 255.255.255.128 192.168.128.1 192.168.128.197 2
    193.206.104.0 255.255.255.0 192.168.128.1 192.168.128.197 2
     195.113.94.0 255.255.255.0 192.168.128.1 192.168.128.197 2
    203.126.200.0 255.255.255.0 192.168.128.1 192.168.128.197 2
  203.174.165.128 255.255.255.128 192.168.128.1 192.168.128.197 2
     212.219.93.0 255.255.255.0 192.168.128.1 192.168.128.197 2
      216.165.0.0 255.255.128.0 192.168.128.1 192.168.128.197 2
        224.0.0.0 240.0.0.0 On-link 127.0.0.1 306
        224.0.0.0 240.0.0.0 On-link 192.168.1.13 286
        224.0.0.0 240.0.0.0 On-link 192.168.203.1 276
        224.0.0.0 240.0.0.0 On-link 192.168.31.1 276
        224.0.0.0 240.0.0.0 On-link 192.168.128.197 10000
  255.255.255.255 255.255.255.255 On-link 127.0.0.1 306
  255.255.255.255 255.255.255.255 On-link 192.168.1.13 286
  255.255.255.255 255.255.255.255 On-link 192.168.203.1 276
  255.255.255.255 255.255.255.255 On-link 192.168.31.1 276
  255.255.255.255 255.255.255.255 On-link 192.168.128.197 10000
================================================== =========================

Immagino che sarà chiaro che il routing di rete è abbastanza nuovo per me, quindi apprezzerei un livello abbastanza elevato di verbosità nelle risposte.
deftfyodor,

1
Sarebbe utile se tu potessi dichiarare se stai usando un client (anyconnect?) E se puoi pubblicare la tua tabella di routing, grazie.
MariusMatutiae,

Fallo usando ip route, a proposito.
user1686

2
Sì, non utilizzare comandi di routing obsoleti: utilizzare ip route show per la tabella di routing. I comandi obsoleti nascondono alcune delle complessità che sono possibili e utili anche con le VPN, per non parlare delle VLAN, ...
MariusMatutiae

@grawity, @MariusMatutiae - Certo, ho modificato la domanda con l'output del comando. Grazie per aver menzionato il ip routecomando, non l'avevo mai incontrato prima.
deftfyodor,

Risposte:


3

La tua rete locale è 192.168.1.0/24, come mostrato da questa linea nella tabella di routing:

 192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.32  metric 1

La tua rete VPN è 10.0.0.0/8, come mostrato da questa linea:

 10.0.0.0/8 dev tun0  scope link 

Attualmente, il router predefinito è:

 default via 192.168.1.254 dev eth0  proto static 

che è ovviamente ciò che non vuoi, perché appartiene alla tua LAN locale: quindi tutte le tue cose vengono instradate attraverso il tuo gateway locale, come se la VPN non esistesse.

 You do have however, the all-important statement

 128.122.252.68 via 192.168.1.254 dev eth0  src 192.168.1.32  

quale è il percorso verso il tuo provider VPN.

MODIFICARE:

Non mi ero reso conto che la tabella di routing è semplicemente quella ottenuta dalla tua VPN, senza il tuo intervento. Ciò può indicare (indirettamente) che il tuo fornitore di servizi è disposto a inoltrare solo il traffico esplicitamente consentito nella tabella tramite l'interfaccia tun0 e potrebbe aver preso ulteriori misure per bloccare tutto il resto del traffico, nel qual caso i tuoi sforzi saranno inutili.

Tuttavia, supponendo che il tuo provider sia disposto a inoltrare tutto il tuo traffico, ciò che devi fare è il seguente.

Innanzitutto, devi scoprire se esiste un gateway disposto ad accettare la tua connessione dall'altra parte, perché abbiamo bisogno del suo indirizzo IP. Ti darò quattro metodi per farlo.

1) Con il PC collegato alla VPN, provare il seguente comando:

   sudo dhclient -v tun0

Se tutto va bene, dovresti vedere una risposta contenente questa riga:

 DHCPOFFER of a.b.c.d from x.y.w.z

xywz è l'indirizzo IP del gateway locale. Potrebbe essere necessario arrestare la VPN dopo questo test e forse anche riavviare il PC, perché avremo appena incasinato la tabella di routing abbastanza bene.

2) In alternativa, puoi provare a navigare verso uno dei siti consentiti (quelli che appaiono nella tabella di routing come attraverso l' interfaccia tun0 ), quindi emettere il comando:

  ip neigh show

Dovresti ottenere un elenco di PC contattati tramite il protocollo ARP, con indirizzo MAC e IP; molto probabilmente riceverai zero o una risposta. Se ricevi una sola risposta, questo è il tuo router.

3) Se non ricevi tale risposta, puoi provare con

  sudo nmap -sn 10.0.0.0/8

(che sarà molto lento). Il gateway sarà uno dei PC elencati, molto probabilmente quello con indirizzo che termina in .1 o in .254, se presente.

4) Utilizzare il comando tcpdump:

  sudo tcpdump -n -i tun0

e vedere gli indirizzi IP emessi dal comando.

Se non si ottiene una risposta adeguata a questo test, significa che qualcuno ha davvero stretto le viti nella sua rete.

Ma siate ottimisti e supponiamo che ora abbiate un indirizzo IP candidato xwyz per il router remoto. Dovrai eliminare il gateway predefinito, (come sudo!):

  ip route del default via 192.168.1.254

un aggiungi quello nuovo:

  ip route add default via x.w.y.z 

e prova a navigare.

Consentitemi di ripeterlo: dal momento che il vostro provider ha consentito il traffico solo a pochi indirizzi IP selezionati tramite la sua VPN, è possibile che abbia preso misure extra (= firewall) per impedire a un utente intelligente di forzare il suo traffico generico attraverso la sua VPN. In questo caso, non c'è niente che tu possa fare. Ma se non lo facesse, i passaggi precedenti dovrebbero aiutarti a trovare una soluzione.


Grazie per la risposta molto elaborata, comunque entrando nella seconda metà, provo un po 'di singhiozzo. l'output delle ip addr show dev tun0letture 10: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1412 qdisc pfifo_fast state UNKNOWN group default qlen 500 link/none inet 192.168.128.193/24 brd 192.168.128.255 scope global tun0 valid_lft forever preferred_lft forever, senza indirizzo peer da osservare. Inoltre, la tabella di routing che ho pubblicato in precedenza non è stata modificata da me, ma è stata generata interamente dal client VPN.
deftfyodor,

@deftfyodor Vedi la mia modifica.
MariusMatutiae,

Usando il comando tcpdump, sono stato davvero in grado di discernere il gateway e instradare il traffico predefinito ad esso. Sfortunatamente, funziona ancora solo per gli intervalli IP appositamente predisposti. Sono certamente propenso a credere che ci siano alcune misure di sicurezza aggiuntive in atto, tuttavia non ho alcun problema a instradare il traffico arbitrario sulla stessa VPN in MS Windows utilizzando il client AnyConnect, quindi sicuramente ci deve essere altro nella storia.
deftfyodor,

@deftfyodor Puoi verificare se la tua tabella di routing in Windos è diversa da quella in Linux?
MariusMatutiae,

È generalmente simile, anche se ci sono alcuni elementi che differiscono, in particolare, 0.0.0.0 è impostato per instradare tramite il mio router di rete come gateway, tenendo il gateway VPN come interfaccia. Ho modificato la domanda per mostrare la tabella di routing di Windows.
deftfyodor,

3

A tutti i tuoi routecomandi mancano le maschere di rete, quindi corrispondono solo 0.0.0.0all'indirizzo specifico , non all'intera Internet. Quindi sostituisci 0.0.0.0con 0.0.0.0/0nel primo comando che hai provato:

ip route add -net 0.0.0.0/0 gw homeportal dev tun0

Potrebbe esserci un avvertimento che non sono sicuro se il tuo client VPN risolve da solo: l'endpoint del tunnel deve essere escluso dall'instradamento tramite VPN, deve essere instradato tramite l' eth0interfaccia. Quindi se l'aggiunta di questa route predefinita interrompe la tua VPN, aggiungi una route specifica per il tuo endpoint VPN:

ip route add <ENDPOINT>/32 dev eth0


2
Penso che il secondo dovrebbe essere ip route, no? Inoltre, sebbene sia sempre una buona idea aggiungere maschere di rete, sembra che routeassume / 0 quando si aggiunge 0.0.0.0
user1686
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.