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


10

El preámbulo

Configuré una conexión VPN desde mi Macbook, y parece conectarse con éxito.

VPN de trabajo

Sin embargo, no puedo acceder a mi computadora 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 probar todo lo que pude, descubrí que este comando pone a mi disposición tanto la red VPN como Internet:

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 IP. ¿Cómo configuro la red para usarlos en todo lo que comienza en 192.168?

La vieja solución

Encontré una solución temporal que me permite acceder a la red a través de VPN modificando 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

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

ingresar el nombre de dominio en las opciones de VPN

Realizar estos dos pasos es suficiente para hacer que mi computadora funcione con ping:

$ 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, cuando hice un túnel en 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 entienda 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 avisas cuál es exactamente.
Cualquier ayuda es muy apreciada, ya que este es un tipo de espectáculo para mí ahora.

¡Gracias!


¿Cuál es su máscara de subred VPN? Si es 255.255.255.0, no puede comunicarse con el servidor DNS 192.168.10.x porque su subred es 192.168.7.x.
hsmiths

ifconfigla salida ppp0es flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1396 inet 192.168.7.232 --> 192.168.7.117 netmask 0xffffff00así que supongo que es 255.255.255.0. ¿Cómo lo cambio? Gracias.
Dan

@shsmith, consulte la sección Nueva solución alternativa. Tenías razón, los servidores DNS no eran accesibles. Solía routeponerlos a disposición porque no encontraba la manera de cambiar la máscara de red. ¿Cómo los marco como "DNS para todo lo relacionado con 192.168"?
Dan

No sé qué servidor VPN tiene en el extremo remoto, pero creo que es allí donde debería buscar solucionar el problema. Parece que la VPN es una configuración de túnel dividido, lo que significa que tanto el acceso al extremo de la VPN es a través de VPN, pero otro acceso (a Internet) es a través de su puerta de enlace normal. El servidor VPN debe configurarse para especificar los servidores de nombres y los dominios para los que deben usarse. Además, su pregunta sobre cómo marcar los servidores DNS para ser utilizados para consultas relacionadas con 192.168. es incorrecta: es la parte del nombre de dominio que debe 'marcarse', para usar con el servidor DNS interno, no la IP.
barryj

@barryj, muchas gracias por tu aporte. Preguntaré a los administradores, pero creo que soy el único con este problema, así que no quiero tomarme su tiempo si puedo hacerlo por mi cuenta. En cuanto a DNS, yo sólo quiero usar VPN para acceder a otros ordenadores de la red de Windows, por ejemplo, mi equipo de trabajo para RDC, servidor de base de datos para el desarrollo, etc.
Dan

Respuestas:


3

Es posible que desee ver la página de manual de resolución

Para citar una solución:

La configuración para un cliente en particular puede leerse desde un archivo que tenga el formato descrito en esta página de manual. Actualmente, el sistema los ubica en el archivo /etc/resolv.conf y en los archivos que se encuentran en el directorio / etc / resolver. Sin embargo, las configuraciones del cliente no se limitan al almacenamiento de archivos. La implementación de la estrategia de búsqueda multicliente de DNS también puede ubicar configuraciones de clientes en otras fuentes de datos, como la Base de datos de configuración del sistema. Los usuarios del sistema DNS no deben hacer suposiciones sobre la fuente de los datos de configuración.

Que yo sepa lo que necesita para poner un archivo con el nombre example.comde /etc/resolverlas direcciones IP de los servidores de nombres de dominio para que si quieres servidores de nombres especiales para example.com- Podría ser que utilizan resolv.confla sintaxis, no puedo recordar. Pero deberías poder resolverlo :)

EDITAR: en lo que respecta a la automatización del proceso, estoy bastante seguro de que es factible con AppleScript o Automator. Pero nunca pienso en eso, así que una segunda pregunta sobre ese tema podría ayudar.


¡Gracias! Funcionó bien. La sintaxis para el archivo en / etc / resolver es como resolv.conf, por ejemplo, "nameserver 1.2.3.4" funcionó de fábrica para mí.
Según Lundberg el

3

Parece que hay un problema con OSX que configura la máscara de red de forma incorrecta. Esta fue mi experiencia usando una VPN PPTP en Snow Leopard y Mountain Lion, y es compatible con este hilo aquí .

Encontré 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.


2

Las resoluciones DNS de Mac OSX son divertidas. Aquí está la solución rápida.

  1. Ponga el siguiente código 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 'MI VPN' con el nombre de su conexión VPN.

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

Mac OSX solo usa servidores DNS asociados con su conexión de red 'Primaria'. El código anterior agrega los servidores DNS de su conexión VPN a la conexión de red primaria (es decir, generalmente Wi-Fi o Ethernet) para que sus servidores DNS VPN se usen primero, luego sus servidores DNS de conexión primaria en segundo lugar.

Ejecute el reset_dnscomando nuevamente después de desconectar su VPN para eliminar las entradas y restaurar la configuración original del servidor DNS. Sin embargo, esto es opcional, ya que generalmente no hace daño nada solo mantener asociados los servidores DNS.


0

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 doméstico a un rango diferente pude conectarme.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.