Não é possível resolver o host através da conexão VPN do Mac OS X [fechado]

10

O Preâmbulo

Eu configurei uma conexão VPN no meu Macbook e ele parece se conectar com sucesso.

VPN de trabalho

No entanto, não consigo acessar meu computador de trabalho porque o nome do host não é resolvido:

$ ping myusername
ping: cannot resolve myusername: Unknown host

A nova solução alternativa

Depois de tentar tudo o que pude, descobri que este comando disponibiliza a rede VPN e a Internet:

sudo route add -net 192.168.7.218 192.168.7.117 255.255.0.0

Os servidores DNS da empresa são acessíveis por seus IPs. Como eu configuro a rede para usá-los para tudo o que inicia a partir de 192.168?

A solução alternativa antiga

Encontrei uma solução temporária que me permite acessar a rede via VPN modificando duas opções:

Coloquei uma marca de seleção em Enviar todo o tráfego pela conexão VPN :

Opções de VPN

Entro manualmente o nome do domínio de pesquisa nas configurações de DNS da interface VPN:

digitando nome de domínio nas opções de VPN

A execução dessas duas etapas é suficiente para tornar meu computador em funcionamento:

$ 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

No entanto, como eu reduzi todo o tráfego para passar pela VPN, não consigo mais acessar 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

A questão

Como configuro corretamente a rede para que ela entenda quando passar pela VPN e quando usar a conexão normal? Preciso resolver os nomes dos servidores Windows corretamente.

Se eu precisar postar qualquer saída do comando do console, estou disposto a fazer isso se você me informar exatamente qual.
Qualquer ajuda é muito apreciada, pois é uma espécie de rolha para mim agora.

Obrigado!

Dan
fonte
Qual é a sua máscara de sub-rede VPN? Se for 255.255.255.0, não será possível acessar o servidor DNS 192.168.10.x porque sua sub-rede é 192.168.7.x.
Hsmiths #
ifconfigsaída para ppp0é, flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1396 inet 192.168.7.232 --> 192.168.7.117 netmask 0xffffff00então eu acho que é 255.255.255.0. Como eu mudo isso? Obrigado.
Dan
@shsmith, consulte a seção Nova solução alternativa. Você estava certo que os servidores DNS não estavam acessíveis. Eu costumava routedisponibilizá-los porque não encontrei uma maneira de alterar a máscara de rede. Como faço para marcá-los como "DNS para tudo relacionado a 192.168"?
Dan
Não sei qual servidor VPN você possui no lado remoto, mas acho que é nesse local que você deve procurar solucionar o problema. Parece que a VPN é uma configuração de túnel dividido, o que significa que o acesso ao final da VPN é via VPN, mas outro acesso (Internet) é via seu gateway normal. O servidor VPN deve ser configurado para especificar os servidores de nome e o (s) domínio (s) para o qual eles devem ser usados. Além disso, sua pergunta sobre a marcação de servidores DNS a serem utilizados para consultas relacionadas ao 192.168 é o caminho errado - é a parte do nome de domínio que precisa ser 'marcada', para uso com o servidor DNS interno, não com o IP.
barryj
@ Barryj, muito obrigado pela sua contribuição. Vou perguntar aos administradores, mas acho que sou o único com esse problema, por isso não quero demorar um pouco se puder fazer isso sozinho. Quanto DNS, eu só quero usar VPN para acessar outros computadores na rede do Windows, por exemplo, o meu computador de trabalho para RDC, servidor de banco de dados para o desenvolvimento, etc.
Dan

Respostas:

3

Você pode querer olhar para a página de manual do resolvedor

Para citar uma solução:

A configuração para um cliente específico pode ser lida a partir de um arquivo com o formato descrito nesta página de manual. Atualmente, eles estão localizados pelo sistema no arquivo /etc/resolv.conf e nos arquivos encontrados no diretório / etc / resolvedor. No entanto, as configurações do cliente não se limitam ao armazenamento de arquivos. A implementação da estratégia de pesquisa de vários clientes DNS também pode localizar as configurações do cliente em outras fontes de dados, como o Banco de Dados de Configuração do Sistema. Os usuários do sistema DNS não devem fazer suposições sobre a fonte dos dados de configuração.

AFAIK você precisa colocar um arquivo chamado example.comno /etc/resolvercom os IPs dos servidores de nomes para esse domínio se você quiser servidores de nomes especiais para example.com- Pode ser que eles usam resolv.confsintaxe, eu não me lembro. Mas você deve ser capaz de descobrir isso :)

EDIT: No que diz respeito à automação do processo, tenho certeza de que isso é possível com o AppleScript ou o Automator. Mas eu nunca estou pensando nisso, para que uma segunda pergunta sobre esse tópico possa ajudar.

Martin M.
fonte
Obrigado! Funcionou bem. A sintaxe para o arquivo em / etc / resolvedor é como resolv.conf, por exemplo, "nameserver 1.2.3.4" funcionou imediatamente para mim.
Por Lundberg
3

Parece haver um problema com o OSX configurando a máscara de rede incorretamente. Esta foi minha experiência usando uma VPN PPTP no Snow Leopard e no Mountain Lion, e é suportada por este segmento aqui .

Encontrei uma solução aqui , que envolve a definição de uma regra de roteamento para o tráfego ppp0.

Basicamente:

$ 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

Isso definirá a regra de roteamento sempre que você se conectar à VPN.

reitor
fonte
2

As resoluções de DNS do Mac OSX são engraçadas. Aqui está a solução rápida.

  1. Coloque este código a seguir em um nome de arquivo 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. Substitua a palavra 'MY VPN' pelo nome da sua conexão VPN.

  3. Uma vez conectado à sua VPN, execute a reset_dnspartir de uma janela do terminal

O Mac OSX usa apenas servidores DNS associados à sua conexão de rede 'Primária'. O código acima adiciona os servidores DNS da sua conexão VPN à conexão de rede Primária (ou seja, geralmente Wi-Fi ou Ethernet), para que seus servidores DNS VPN sejam usados ​​primeiro e depois os servidores DNS de conexão Primária depois.

Execute o reset_dnscomando novamente após desconectar a sua VPN para remover as entradas e restaurar a configuração original do servidor DNS. Porém, isso é opcional, pois geralmente não prejudica nada apenas para manter os servidores DNS associados.

parleer
fonte
0

Eu tive o mesmo problema. Acontece que meu roteador doméstico estava no mesmo intervalo de IP do meu sistema de trabalho. Depois que mudei meu roteador doméstico para um intervalo diferente, consegui conectar-me.

user174089
fonte