Forza la risoluzione del DNS ad accadere fuori dalla VPN

5

Gestisco Mojave (10.14) e dispongo di una VPN Cisco AnyConnect su cui viene inviato il traffico per le rotte selezionate (determinato dal profilo VPN, fuori dal mio controllo).

Il routing del traffico funziona bene, il problema è che la risoluzione DNS si sta verificando sulla VPN per i nomi host non sulla rete interna.

L'output di scutil --dns contiene:

craig@TBMBP:~$ scutil --dns
DNS configuration

resolver #1
  search domain[0] : a.mycompany.com
  search domain[1] : b.mycompany.com
  search domain[2] : c.mycompany.com
  search domain[3] : d.mycompany.com
  search domain[4] : hsd1.ma.comcast.net <-- (my ISP)
  nameserver[0] : 10.70.yy.yy

Inoltre, contiene:

DNS configuration (for scoped queries)

resolver #1
  search domain[0] : hsd1.ma.comcast.net
  nameserver[0] : 2601:184:497f:...     <-- (some ipv6 address)
  nameserver[1] : 192.168.1.1
  if_index : 10 (en0)
  flags    : Scoped, Request A records, Request AAAA records
  reach    : 0x00000002 (Reachable)

Questo significa che quando apro www.apple.com, vedo tramite VPN:

39  2.316879    10.70.xx.xx 10.70.yy.yy DNS 63  Standard query 0xefee A www.apple.com

E non voglio che ciò accada. Piuttosto, voglio che la risoluzione DNS avvenga tra me e il mio ISP (o tra me e 1.1.1.1 o 8.8.8.8 ) e poi se la risoluzione fallisce, per consultare la VPN.

Come faccio ad aggiornare il risolutore per utilizzare Cloudflare / Google prima per DNS, utilizzando la riga di comando su Mac?

    
posta Craig Otis 29.11.2018 - 20:12
fonte

2 risposte

3

Ho una situazione simile in cui devo usare una connessione Wi-Fi con captive portal molto pesante con un molto heavy-handed, molto creepy firewall virtuale. Non solo snoop su connessioni sicure, impersona gli IP del server DNS, utilizzando DPI (quando rileva la richiesta).

L'unica cosa che funziona per me è andare in cima della VPN / firewall piuttosto che cercare di intrufolarci sotto, usando dnscrypt-proxy utilizzando solo DNS-over-HTTPS, in quanto è in grado di rilevare il protocollo dnscrypt. Al momento, non è affatto a conoscenza di DNS-over-HTTPS.

Lo implemento utilizzando un LaunchAgent che controlla /etc/resolve.conf per le modifiche e quando rileva una modifica, riavvia dnscrypt-proxy, quindi esegue networksetup -setdnsservers Wi-Fi 127.0.0.1 .

A parte: ho usato Quad9 per un po 'di tempo e lo preferisco di gran lunga a Google e CloudFlare.

Modifica: dopo aver giocato un po 'di più con questo, sto notando che (in qualche modo, non ho nemmeno capito da dove viene il traffico), gli indirizzi IPv6 sono in qualche modo risolti con ::1 come server DNS , anche se non ci sono altri server DNS impostati. Quindi probabilmente è meglio disabilitare semplicemente IPv6 se possibile.

Modifica 2:

Sì, penso che essere in grado di suddividere quel percorso potrebbe essere troppo per fare con la nuova implementazione VPN a livello di sistema; Penso che il proxy proxy DNS sia probabilmente la soluzione migliore. Potrebbe essere possibile rimuovere ipsec0 come percorso predefinito e quindi aggiungerlo nuovamente per un intervallo IP limitato ... ma ogni volta che provo questo (con IKEv2, non AnyConnect, ma presumo che stiano usando la stessa API) solo ... si ferma.

Per quanto riguarda il traffico residuo, forse il suo Rendezvous? sudo killall -HUP mDNSResponder; sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist ?

Inoltre, potresti essere in grado di utilizzare un'app come Shimo? È disponibile con Setapp! Non so esattamente come funziona AnyConnect, ma dice che lo supporta e ha le opzioni di configurazione disponibili che sono esattamente ciò che stai cercando per altri protocolli, incluso IKE, quindi ... forse?

    
risposta data 03.12.2018 - 12:44
fonte
2

La risposta breve è probabile che tu non possa apportare questo cambiamento.

Questa è una situazione molto tipica in cui le impostazioni gestite non consentono una situazione di tunnel VPN divisa . Letteralmente, quando ci si connette al gateway VPN, si garantisce che non è più possibile raggiungere alcuna destinazione di rete tranne il DNS e le impostazioni che si trovano sull'altra estremità della rete in cui termina la VPN.

Per risolvere il problema, devi:

  • modifica la configurazione della VPN per consentire un tunnel diviso - eventualmente richiedere agli amministratori di rete di benedire questa modifica / renderla efficace.
  • Non coinvolgere affatto la VPN
  • Configura una macchina virtuale in modo da poter mantenere il controllo del tuo sistema operativo e consentire al SO guest di connettersi alla VPN
  • convincere l'amministratore di rete a cambiare il DNS dall'altra parte per soddisfare le tue esigenze (secondario un'impostazione DNS che hai prima di connetterti alla VPN, cambiare i server di inoltro, ecc.)
  • utilizzare impostazioni client o client diverse per evitare il profilo eseguito in Cisco (supponendo che Cisco non ti consenta di modificare la configurazione) - Forza l'IP del server DNS mentre sei connesso alla VPN

(questa è una domanda comune che non ottiene mai una risposta diversa da - non usare VPN, ma spero che ci sia un modo per te)

risposta data 03.12.2018 - 01:55
fonte

Leggi altre domande sui tag