Resolver: resolução de nomes de LAN, VPN e WAN

1

Eu li as man pages no resolv.conf e resolvconf e resolvconf.conf, mas não entendo tudo e sinto que estou um pouco perdido em como eu poderia (ahem) resolver esse problema:

Cenário:

Eu tenho uma LAN com um roteador que atua como DHCP e nameserver. O servidor de nomes resolve todos os dispositivos nesta LAN sem TLD ou com o TLD .lan. Por exemplo, posso resolver com nslookup, ping e quaisquer outros nomes de ferramentas como "nas" e "nas.lan" que atinjam o meu servidor NAS (servidor de armazenamento acessível pela rede). Qualquer outro nome encaminha o pedido para os DNSs do meu ISP.

Meu resolv.conf, portanto, é assim:

# Generated by resolvconf
domain lan
nameserver 192.168.0.1

Eu obtenho boa resolução de todos os nomes de LAN e WAN.

Agora me conecto a uma VPN da Cisco no trabalho e o resolvconf atualiza o resolv.conf para:

# Generated by resolvconf
domain myworkplace.com
search myworkplace.com lan
nameserver 192.168.1.10
nameserver 192.168.1.11
nameserver 192.168.0.1

E agora não consigo mais acessar "nas" ou "nas.lan" na minha LAN, mas posso acessar "nas" e "nas.myworkplace.com" na VPN. Os nomes de WAN agora são resolvidos pelos nomes atribuídos da VPN, por exemplo, 192.168.1.10, e o NAS que eu alcance dessa forma está na VPN, não na minha LAN (um servidor diferente).

Além disso, eu não tenho nenhum conflito com esse nome, mas eu o forneço no exemplo apócrifo, porque uma solução precisa claramente supri-lo.

Agora, o que eu gostaria de alcançar é algo assim:

"nas.lan" resolve para meu NAS de LAN "nas.myworkplace.com" resolve para o VPN NAS "nas" resolve para um ou outro baseado em config (dicas de ndots do resolv.conf configurando aqui mas não tem certeza).

Minhas perguntas:

  1. Isso é possível com o resolvconf?
  2. Se não, existe alguma outra maneira de fazê-lo (exemplo usando dnsmaq em vez de libc como um resolvedor na minha caixa?).

Eu aprecio todos os ponteiros aqui, pois estou achando que as man pages não são fáceis de digerir e decifrar com uma necessidade específica como essa em mente. Eu pesquisei on-line por um bom tempo agora e, curiosamente, só encontrei outros fazendo a mesma pergunta (sem resposta) em outros fóruns!

Este não é um problema exclusivo para mim ou minha descoberta claramente. Qualquer um em uma rede local com dispositivos que eles querem ver lá, conectando-se a outra rede local através de uma VPN, provavelmente se deparará com essa questão de poder resolver apenas nomes na VPN e não na LAN enquanto estiver conectada, precisando fechar a VPN para resolver Nomes de LAN novamente.

    
por Validator 25.04.2018 / 13:28

2 respostas

2

Eu acho que o motivo pelo qual você não pode usar seu DNS da LAN ao usar a VPN é que o resolvedor só faz duas tentativas por padrão:

Do manual do resolv.conf:

attempts:n sets the number of times the resolver will send a query to its name servers before giving up and returning an error to the calling application. The default is RES_DFLRETRY (currently 2, see ). The value for this option is silently capped to 5.

Portanto, está tentando os dois servidores DNS fornecidos pela VPN da sua empresa primeiro e que retorna um erro. Você pode definir tentativas como 3 para que seu DNS da LAN também seja levado em consideração.

A desvantagem disso é que isso atrasa suas solicitações de DNS, aguardando que o último servidor finalmente responda. E você está enviando toda a sua solicitação de DNS para a sua empresa - isso também causa impacto no desempenho e na sua privacidade.

Eu recomendaria usar o dnsmasq.

Você pode adicionar servidor DNS a montante por domínio em um dnsmasq conf com um domínio especificado como este:

server=/lan/192.168.0.1

E, por padrão, o dnsmasq pesquisa os servidores upstream do /etc/resolv.conf.

Na seção de anotações da página man do dnsmasq :

... By default, dnsmasq reads /etc/resolv.conf to discover the IP addresses of the upstream nameservers it should use, since the information is typically stored there. Unless --no-poll is used, dnsmasq checks the modification time of /etc/resolv.conf (or equivalent if --resolv-file is used) and re-reads it if it changes. This allows the DNS servers to be set dynamically by PPP or DHCP since both protocols provide the information. ...

Então, se o seu cliente VPN mudar o resolv.conf, você poderá usar ambos, se puder manter o dnsmasq no topo do resolv.conf.

Mas eu acho que não é assim que a VPN está editando o arquivo resolv.conf, então eu tentaria desabilitar os recursos de DNS da VPN e adicionar manualmente os servidores DNS da sua empresa à sua configuração do dnsmasq:

server=/myworkplace.com/192.168.1.10
server=/myworkplace.com/192.168.1.11
server=192.168.0.1

Neste caso, todas as suas consultas para a internet e lan, que vão para 192.168.0.1 e todas as consultas para myworkplace.com, estão indo para o DNS da sua empresa.

    
por FSchndr 25.04.2018 / 14:02
0
git clone https://github.com/timebandit1969/resolvchange.git

link e baixe a versão de demonstração do linux PureBasic x64, não se preocupe, eu não acho que as limitações irão parar você compilou, eu verifiquei. Compile (Make Executable) resolvchange.pb     chmod + x resolvchange inicie a vpn se estiver executando uma e execute imediatamente o resolvchange com o seguinte:     ./resolvchange

    
por Joe Pisco 28.04.2018 / 10:40