No se puede resolver el host a través de la conexión VPN desde Mac OS X

El preámbulo

He configurado una conexión VPN desde mi Macbook, y parece que se conecta correctamente.

Trabajo VPN

Sin embargo, no puedo acceder a mi equipo de trabajo porque el nombre de host no se resuelve:

$ ping myusername ping: cannot resolve myusername: Unknown host 

La nueva solución

Después de intentar todo lo que pude, he encontrado que este comando hace que la red VPN y el Internet a mi disposición:

 sudo route add -net 192.168.7.218 192.168.7.117 255.255.0.0 

Los servidores DNS de la empresa son accesibles por sus IPs. ¿Cómo configuro la red para usarlos para todo lo que empieza desde 192.168?

La vieja solución

He encontrado una solución temporal que me permite acceder a la red a través de VPN mediante la modificación de dos opciones:

Puse una marca de verificación en Enviar todo el tráfico a través de la conexión VPN :

Opciones de VPN

Introduzca manualmente el nombre de dominio de búsqueda en la configuración de DNS de la interfaz VPN:

Introducir nombre de dominio en las opciones de VPN

Realizar estos dos pasos es suficiente para hacer pingable mi computadora de trabajo:

 $ nslookup myusername Server: 192.168.10.16 Address: 192.168.10.16#53 Name: myusername.universe.mycompany Address: 192.168.11.56 $ ping myusername PING myusername.universe.mycompany (192.168.11.56): 56 data bytes 64 bytes from 192.168.11.56: icmp_seq=0 ttl=126 time=126.164 ms 

Sin embargo, como tunelé todo el tráfico para pasar por VPN, ya no puedo acceder a Internet:

 $ ping google.com PING google.com (74.125.232.48): 56 data bytes Request timeout for icmp_seq 0 Request timeout for icmp_seq 1 

La pregunta

¿Cómo configuro correctamente la red para que comprenda cuándo pasar por VPN y cuándo usar la conexión normal? Lo necesito para resolver los nombres de servidor de Windows correctamente.

Si necesito publicar cualquier salida de comando de consola, estoy dispuesto a hacerlo si me deja saber qué exactamente.
Cualquier ayuda es muy apreciada, ya que esta es una especie de tapón de espectáculo para mí ahora.

¡Gracias!

Es posible que desee ver la página de manual de resolver

Para citar una solución:

La configuración para un cliente en particular puede leerse desde un archivo con el formato descrito en esta página de manual. Éstos están actualmente localizados por el sistema en el archivo /etc/resolv.conf y en los archivos que se encuentran en el directorio / etc / resolver. Sin embargo, las configuraciones de cliente no se limitan al almacenamiento de archivos. La implementación de la estrategia de búsqueda de clientes múltiples de DNS también puede localizar configuraciones de cliente en otros orígenes de datos, como la base de datos de configuración del sistema. Los usuarios del sistema DNS no deben hacer suposiciones sobre el origen de los datos de configuración.

AFAIK necesitas poner un archivo llamado example.com en /etc/resolver con los IPs de los servidores de nombres para ese dominio si quieres nameservers especiales para example.com – Podrían usar la sintaxis resolv.conf , no puedo recordar . Pero deberías ser capaz de entender eso 🙂

EDIT: En cuanto a la automatización del proceso va, estoy bastante seguro de que es factible con AppleScript o Automator. Pero nunca a mi cabeza alrededor de ella así que una segunda pregunta sobre ese tema podría ayudar.

Parece que hay un problema con OSX que establece la máscara de red incorrectamente. Ésta era mi experiencia usando un PPTP VPN en Snow Leopard y Mountain Lion, y es apoyado por este hilo aquí .

He encontrado una solución aquí , que implica establecer una regla de enrutamiento para el tráfico ppp0.

Básicamente:

 $ sudo <your_text_editor_of_choice> /etc/ppp/ip-up #!/bin/sh /sbin/route add -net 192.168 -interface ppp0 $ sudo chmod 755 /etc/ppp/ip-up 

Esto establecerá la regla de enrutamiento cada vez que se conecte a la VPN.

Resoluciones de Mac OSX DNS es gracioso. Aquí está la solución rápida.

  1. Ponga este código siguiente en un nombre de archivo reset_dns .

     #!/bin/bash function get_pri_srvc_id () { cat <<EOF | scutil | \ grep 'PrimaryService' | \ awk -F': ' '{print $2}' show State:/Network/Global/IPv4 EOF } function get_srvc_name () { cat <<EOF | scutil | \ grep 'UserDefinedName' | \ awk -F': ' '{print $2}' show Setup:/Network/Service/$1 EOF } function get_srvc_ids () { cat <<EOF | scutil | \ sed -nEe ' /ServiceOrder/ { :ids n /[0-9]+ :/ { s/ *[0-9]+ : ([0-9A-Z-]+) */\1/p b ids } }' show Setup:/Network/Global/IPv4 EOF } function get_srvc_id_by_name () { local srvc_ids=$(get_srvc_ids) for srvc_id in $srvc_ids do local srvc_name=$(get_srvc_name "$srvc_id") if [[ "$srvc_name" == "$1" ]] then echo $srvc_id return fi done } function get_dns_ips () { local srvc_id=$(get_srvc_id_by_name "$1") cat <<EOF | scutil | \ sed -nEe ' /ServerAddresses/ { :ips n /[0-9]+ :/ { s/ *[0-9]+ : ([0-9.]+) */\1/p b ips } }' show $2:/Network/Service/$srvc_id/DNS EOF } function set_dns_ips () { networksetup -setdnsservers "$@" } vpn_srvc_name='MY VPN' ip_file='/tmp/setup_dns_ips' pri_srvc_id=$(get_pri_srvc_id) pri_srvc_name=$(get_srvc_name "$pri_srvc_id") if [[ ! -e "$ip_file" ]] then setup_dns_ips=$(get_dns_ips "$pri_srvc_name" "Setup") state_dns_ips=$(get_dns_ips "$pri_srvc_name" "State") setup_vpn_ips=$(get_dns_ips "$vpn_srvc_name" "Setup") state_vpn_ips=$(get_dns_ips "$vpn_srvc_name" "State") echo "set_dns_ips $pri_srvc_name $setup_vpn_ips $state_vpn_ips $setup_dns_ips $state_dns_ips" set_dns_ips "$pri_srvc_name" $setup_vpn_ips $state_vpn_ips $setup_dns_ips $state_dns_ips if [[ -z "$setup_dns_ips" ]] then setup_dns_ips="Empty" fi echo $setup_dns_ips >$ip_file else setup_dns_ips=$(cat $ip_file) echo "set_dns_ips $pri_srvc_name $setup_dns_ips" set_dns_ips "$pri_srvc_name" $setup_dns_ips rm $ip_file fi 
  2. Reemplace la palabra 'MY VPN' por el nombre de su conexión VPN.

  3. Una vez conectado a su VPN, ejecute reset_dns desde una ventana de terminal

Mac OSX sólo usa servidores DNS asociados con la conexión de red 'Primario'. El código anterior agrega los servidores DNS de su conexión VPN a la conexión de red primaria (es decir, normalmente Wi-Fi o Ethernet) para que los servidores DNS VPN se utilicen primero y, a continuación, los servidores DNS de conexión primaria en segundo lugar.

Ejecute el comando reset_dns nuevo después de desconectar la forma de su VPN para eliminar las entradas y restaurar la configuración del servidor DNS original. Esto es opcional, sin embargo, ya que por lo general no daña nada para mantener sólo los servidores DNS asociados.

Tuve el mismo problema. Resulta que mi enrutador doméstico estaba en el mismo rango de IP que mi sistema de trabajo. Una vez que cambié mi enrutador casero a un diverso rango yo podría conectar.