Rede usando apenas um DNS quando conectado a VPN

9

Minha empresa tem uma VPN que eu preciso conectar. No OSX, faço isso usando openvpn com a seguinte configuração:

client
dev tun
proto udp
remote <GATEWAY_ADDRESS> <PORT>
resolv-retry infinite
nobind
user nobody
group nobody
persist-key
persist-tun
ca /Users/Tommy/.openvpn/dev/ca-dev.crt
cert /Users/Tommy/.openvpn/dev/tommy.brunn-20131122-dev.crt
key /Users/Tommy/.openvpn/dev/tommy.brunn-20131122-dev.key
ns-cert-type server
tls-auth /Users/Tommy/.openvpn/dev/ta-dev.key 1
cipher BF-CBC
comp-lzo
verb 3
auth-nocache
;daemon
;writepid openvpn.pid

No Ubuntu, instalei network-manager-openvpn e adicionei uma nova conexão VPN (tentando importar o arquivo de configuração causado uma falha) com as mesmas opções de configuração definidas: Capturas de tela das minhas configurações

Depois de me conectar à VPN, não consigo resolver nenhum domínio.

Se eu editar /etc/NetworkManager/NetworkManager.conf , comente a linha dns=dnsmasq e reinicie network-manager , posso resolver domínios internos da minha empresa, mas outros domínios como o google.com não serão resolvidos. Certifiquei-me de definir meu "Método" para "Somente endereços automáticos (VPN)" nas guias IPv4 e IPv6 do gerenciador de rede para minha conexão VPN, mas não parece fazer nenhuma diferença.

Eu também tentei reativar o dnsmasq e modificar /etc/resolvconf/resolv.conf.d/base para conter nameserver 127.0.1.1 e, em seguida, executar sudo resolveconf -u , mas nenhum domínio será resolvido novamente.

O que eu gostaria é poder conectar-me à minha VPN para que os domínios enviados pelo servidor DNS da minha empresa sejam resolvidos dessa maneira e todos os outros domínios sejam resolvidos normalmente.

EDIT: Acontece que o dnsmasq não foi realmente instalado, o que eu pensei que seria por padrão. No entanto, se eu instalá-lo, reative-o em /etc/NetworkManager/NetworkManager.conf , adicione o endereço do servidor de nomes local em /etc/resolvconf/resolv.conf.d/base , reinicie todos os serviços e conecte-se à VPN, posso resolver domínios do DNS da empresa, mas não consigo resolver quaisquer outros domínios. Então basicamente a mesma situação de quando eu desativei o dnsmasq completamente.

EDIT: conteúdo de /etc/dnsmasq.conf : link

    
por Tommy Brunn 18.04.2014 / 13:37

2 respostas

3

A partir da sua configuração, a instalação do dnsmasq está obtendo a lista de servidores DNS a serem usados em /etc/resolv.conf . Por padrão, o dnsmasq tenta favorecer o uso de servidores DNS ativos, mas só envia uma solicitação para um único servidor DNS. Isso pode causar problemas se você tiver vários servidores DNS que podem / só servirão determinadas consultas.

Acredito que você possa resolver esse problema certificando-se de ter um servidor DNS em sua LAN (aquele que você usa quando não está conectado à VPN) configurado em /etc/resolv.conf , bem como o servidor DNS em a rede corporativa que você deseja usar na VPN.

Em seguida, você precisará editar /etc/default/dnsmasq e adicionar ou editar a linha DNSMASQ_OPTS= para incluir --all-servers .

Se você ainda não conseguir obter consultas DNS com essa configuração, copie o arquivo resolv.conf criado durante as etapas acima para outro local, como ~/resolv.conf , defina /etc/resolv.conf com nameserver 127.0.0.1 e defina o seguinte opção em /etc/dnsmasq.conf :

resolv-file=/home/your_username/resolv.conf

Isso deve configurar seu sistema para consultar sua instalação do dnsmasq para DNS, e ele, por sua vez, usará seu servidor DNS local e o servidor DNS da VPN para cada consulta.

Editar : você pode encontrar os servidores DNS que você está usando atualmente para uma conexão específica usando a ferramenta nmcli . Para encontrar os servidores DNS usados pela minha conexão sem fio, usei a seguinte sintaxe:

nmcli dev list iface wlan0 | grep IP4.DNS

Se você executar esse comando enquanto não estiver conectado à sua VPN e, novamente, quando estiver conectado e puder resolver seus endereços corporativos, deverá desativar sua lista de servidores DNS na VPN. Espero que isso ajude.

Editar 2 : Olhando para as suas tabelas de roteamento, parece que o seu administrador VPN configurou você para rotear todo o seu tráfego através da VPN enquanto você está conectado (seu gateway padrão muda para um endereço VPN ). Como os dois servidores DNS são endereços públicos e nenhum deles tem uma rota específica configurada enquanto você está na VPN, você está tentando realizar pesquisas normais de DNS por meio da VPN e isso é o que está falhando.

Você pode ter algumas maneiras de fazer isso funcionar, dependendo da sua configuração de VPN:

  • Se a VPN permitir que você acesse a Internet através da rede corporativa, mas não realize consultas DNS a servidores na Internet, adicione rotas a seus servidores DNS da seguinte forma: sudo route add -host 83.255.245.11 gw 192.168.0.1 e sudo route add -host 193.150.193.150 gw 192.168.0.1 após conectando-se à VPN.

  • Se a VPN não permitir que você acesse a Internet através da rede corporativa, você precisará alterar as configurações padrão do gateway no seu computador para apontar para 192.168.0.1 depois de se conectar à VPN. Nesse caso, você desejará configurar seu gateway padrão usual e adicionar rotas de rede para acessar equipamentos somente VPN.

Você pode precisar reduzir sua tabela de roteamento no caso conectado à VPN mostrado em sua segunda pasta de pastejo para o seguinte:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     1      0        0 eth0
10.100.0.0      10.100.0.105    255.255.255.0   UGH   0      0        0 tun0
10.100.0.105    0.0.0.0         255.255.255.255 UH    0      0        0 tun0

Em seguida, adicione rotas conforme necessário para acessar o equipamento corporativo. Na tabela de roteamento mostrada acima, assumi uma rede / 24 na VPN, que pode estar incorreta. Você terá que definir a máscara adequadamente.

    
por jkt123 22.04.2014 / 06:10
0

Existem algumas lacunas que não posso preencher para você relacionadas a como fazer com que o NetworkManager coordene as coisas para você. Vou tentar esclarecer como as coisas que coordena precisam funcionar. Não é uma resposta perfeita, mas esperançosamente útil. Na verdade, dado que esta é uma questão antiga, isso é realmente para a posteridade.

Você provavelmente não deseja usar a VPN corporativa, exceto as conexões com a rede corporativa. Sendo esse o caso, seria melhor se a configuração da sua VPN apenas direcionasse os intervalos de rede apropriados para a VPN e mantivesse a rota padrão apontando para o roteador local, como antes. Seria bom se as empresas configurassem suas VPNs apenas para rotear o tráfego ou suas redes, mas infelizmente isso parece ser raro. Felizmente você pode configurar as rotas em sua configuração local.

Isso ainda deixa você com um possível problema de DNS. Os comentários do jtk123 sobre o que o dnsmasq faz com o DNS não são específicos do dnsmasq - é assim que o DNS funciona. Se um cliente DNS, ou um resolvedor intermediário, obtiver uma resposta de que uma entrada DNS não existe, então não é um comportamento normal voltar a perguntar a outro servidor DNS. Isso significa que você precisa de um resolvedor de dns que responda como deseja se a solicitação estiver relacionada à rede da empresa ou não.

Talvez a rede da sua empresa atenda a consultas DNS relacionadas à Internet mais ampla. Nesse caso, você só precisa usá-las, e provavelmente está tudo bem. Caso contrário, você precisa de um servidor DNS local que encaminha solicitações de domínios associados à empresa para seu servidor DNS e encaminha outras solicitações em outro lugar, conforme apropriado.

O dnsmasq pode ser instruído a encaminhar solicitações de domínios específicos para servidores DNS específicos. por exemplo. veja a opção --server como descrito na página do manual dnsmasq.conf. Não estou claro como fazer com que o networkmanager seja legal com isso (que é o que estou procurando atualmente).

    
por mc0e 13.01.2015 / 19:08