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

10

O Preâmbulo

Eu configurei uma conexão VPN do meu Macbook e parece que ela se conecta com sucesso.

Noentanto,nãoconsigoacessarmeucomputadordetrabalhoporqueonomedohostnãoéresolvido:

$pingmyusernameping:cannotresolvemyusername:Unknownhost

Anovasoluçãoalternativa

Depoisdetentartudoquepude,descobriqueessecomandotornaaredeVPNeainternetdisponíveisparamim:

sudorouteadd-net192.168.7.218192.168.7.117255.255.0.0

OsservidoresDNSdaempresasãoacessíveisporseusIPs.Comofaçoparaconfigurararedeparausá-losparatudooquecomeçaapartirde192.168?

Asoluçãoantiga

EuencontreiumasoluçãotemporáriaquemepermiteacessararedeviaVPN,modificandoduasopções:

EucolocoumamarcadeseleçãoemEnviartodootráfegopelaconexãoVPN:

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

Realizar estes dois passos é suficiente para fazer o meu computador funcionar:

$ 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, ao sintonizar todo o tráfego para passar por 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 configurar corretamente a rede para que ela entenda quando passar pela VPN e quando usar a conexão normal? Eu preciso disso para resolver os nomes dos servidores Windows corretamente.

Se eu precisar postar qualquer saída de comando do console, estou disposto a fazer isso se você me informar exatamente o que. Qualquer ajuda é muito apreciada, já que este é um tipo de show para mim agora.

Obrigado!

    
por Dan 28.05.2011 / 22:43

4 respostas

3

Você pode querer olhar para o resolver manpage

Para citar uma solução:

The configuration for a particular client may be read from a file having the format described in this man page. These are at present located by the system in the /etc/resolv.conf file and in the files found in the /etc/resolver directory. However, client configurations are not limited to file storage. The implementation of the DNS multi-client search strategy may also locate client configuratins in other data sources, such as the System Configuration Database. Users of the DNS system should make no assumptions about the source of the configuration data.

AFAIK, é necessário colocar um arquivo chamado example.com in /etc/resolver com os IPs dos servidores de nome desse domínio, se você quiser nameservers especiais para example.com - eles podem usar a sintaxe resolv.conf , posso ' Não me lembro. Mas você deve ser capaz de descobrir isso:)

EDIT: Quanto a automatizar o processo, eu tenho certeza que isso é possível com o AppleScript ou Automator. Mas eu nunca me preocupei com isso, então uma segunda pergunta sobre esse tópico pode ajudar.

    
por 19.06.2011 / 00:20
3

Parece haver um problema com o OSX ao configurar a netmask incorretamente. Essa foi a minha experiência usando uma VPN PPTP no Snow Leopard e no Mountain Lion, e é suportada por esse 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.

    
por 16.11.2012 / 19:50
1

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-]+) *//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.]+) *//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 reset_dns em uma janela de terminal

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

Execute o comando reset_dns novamente depois de desconectar a forma da sua VPN para remover as entradas e restaurar a configuração original do servidor DNS. No entanto, isso é opcional, já que geralmente não atrapalha nada manter apenas os servidores DNS associados.

    
por 17.01.2015 / 18:05
0

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

    
por 16.05.2013 / 21:53