Forzar la resolución del DNS para que ocurra fuera de la VPN

5

Estoy ejecutando Mojave (10.14) y tengo un Cisco AnyConnect VPN sobre el cual se envía el tráfico para las rutas seleccionadas (determinado por el perfil VPN, fuera de mi control).

El enrutamiento del tráfico funciona bien, el problema es que la resolución de DNS se está realizando a través de la VPN para los nombres de host que son no en la red interna.

La salida de 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

Además, 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)

Eso significa que cuando abro www.apple.com, veo a través de la VPN:

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

Y no quiero que esto suceda. Más bien, quiero que la resolución de DNS se produzca entre mi ISP y yo (o entre yo y 1.1.1.1 o 8.8.8.8 ) y luego si la resolución falla, consultar con la VPN.

¿Cómo actualizo el resolutor para usar Cloudflare / Google primero para DNS, usando la línea de comandos en Mac?

    
pregunta Craig Otis 29.11.2018 - 20:12

2 respuestas

3

Tengo una situación similar en la que tengo que usar una conexión Wi-Fi de portal cautivo con mano muy dura con muy mano dura, muy espeluznante de firewall virtual. No solo busca en las conexiones seguras, suplanta las direcciones IP del servidor DNS, utilizando DPI (cuando detecta la solicitud).

Lo único que funciona para mí es pasar por encima de VPN / firewall en lugar de intentar colarse debajo de él, usando dnscrypt-proxy utilizando solo DNS sobre HTTPS, ya que puede detectar el protocolo dnscrypt. En este momento, no tiene conocimiento de DNS sobre HTTPS en absoluto.

Lo implemento usando un LaunchAgent que observa /etc/resolve.conf para detectar cambios, y cuando detecta un cambio, reinicia dnscrypt-proxy, luego ejecuta networksetup -setdnsservers Wi-Fi 127.0.0.1 .

Aparte: he estado usando Quad9 por un tiempo, y lo prefiero a Google y CloudFlare.

Editar: Después de jugar un poco más con esto, me doy cuenta de que (de alguna manera, ni siquiera he descubierto dónde está el tráfico desde / hacia), las direcciones IPv6 se resuelven de alguna manera con ::1 como servidor DNS , incluso si no hay otros servidores DNS establecidos. Probablemente sea mejor simplemente deshabilitar IPv6 si puedes.

Edit 2:

Sí, creo que ser capaz de dividir esa ruta podría ser demasiado para hacer con la nueva implementación de VPN a nivel de sistema; Creo que el proxy DNS es probablemente su mejor apuesta. Podría ser posible eliminar ipsec0 como la ruta predeterminada y luego volver a agregarla para un rango de IP restringido ... pero cada vez que intento esto (con IKEv2, no con AnyConnect, pero asumo que están usando la misma API) simplemente ... se detiene.

En cuanto al tráfico residual, ¿tal vez es Rendezvous? sudo killall -HUP mDNSResponder; sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist ?

Además, ¿quizás podrías usar una aplicación como Shimo? Está disponible con Setapp! No sé exactamente cómo funciona AnyConnect, pero dice que lo admite, y tiene opciones de configuración disponibles que son exactamente lo que está buscando para otros protocolos, incluido IKE, así que ... ¿quizás?

    
respondido por el Geoff Nixon 03.12.2018 - 12:44
2

La respuesta corta es que probablemente no puedas hacer este cambio.

Esta es una situación muy típica donde la configuración administrada no permite una situación de túnel VPN dividido . Literalmente, cuando se conecta a la puerta de enlace VPN, garantiza que ya no podrá alcanzar ningún destino de red, excepto el DNS y la configuración que se encuentran en el otro extremo de la red donde termina la VPN.

Para solucionar esto, necesitas:

  • cambia la configuración de tu VPN para permitir un túnel dividido , posiblemente necesitando que los administradores de la red bendigan este cambio / lo hagan efectivo.
  • No activar la VPN en absoluto
  • Configura una máquina virtual para que puedas mantener el control de tu sistema operativo y solo permitir que el sistema operativo invitado se conecte a la VPN
  • convencer al administrador de la red para que cambie el DNS en el otro extremo para satisfacer sus necesidades (una configuración de DNS secundaria que tenga antes de conectarse a la VPN, cambiar los reenviadores, etc.)
  • use una configuración de cliente o cliente diferente para evitar el perfil que ejecuta en Cisco (suponiendo que el cisco no le permita cambiar la configuración) - Force DNS server ip mientras está conectado a VPN

(esta es una pregunta común que nunca obtiene una respuesta que no sea VPN, pero espero que haya una manera para usted)

respondido por el bmike 03.12.2018 - 01:55

Lea otras preguntas en las etiquetas