Bom dia!
Estou migrando meu laptop do Windows para Debian e as coisas estão indo bem. Trabalho remotamente e a empresa para a qual trabalho usa um cliente VPN personalizado (Fortinet) para se conectar à sua rede corporativa. Felizmente, há um cliente para Linux, até um arquivo deb que instalei. A configuração também correu bem, consigo conectar à rede remota sem problemas.
O que não está funcionando é o DNS. Quando ligo o computador, meu servidor DHCP local me fornece um IP com o servidor DNS local e consigo resolver nomes de domínio. O arquivo /etc/resolve.conf lista o DNS correto e a linha de comentários no topo diz que o arquivo é gerenciado pelo “NetworkManager”. Quando conecto à VPN, esse arquivo é alterado e os DNS da empresa são adicionados a ele. Nesse ponto, você já deve saber qual é o problema: não consigo resolver os nomes de domínio da empresa, pois meu servidor local ainda está listado primeiro em /etc/resolv.conf.
Não quero editar o arquivo toda vez que conecto à VPN. Meu objetivo é poder resolver domínios *.company.com usando seus servidores DNS, e qualquer outro domínio com meu servidor local. Li que o arquivo /etc/resolv.conf não tem opção para especificar qual servidor DNS usar para qual(s) domínio(s). Também li que devo usar dnsmasq (parece que já está instalado durante a instalação do Debian) para ouvir localmente as resoluções de DNS e “rotear” para cada servidor dependendo do domínio.
Mas antes de mudar qualquer coisa, gostaria de perguntar à comunidade se há uma solução mais simples que eu ainda não tenha encontrado. Não quero me aprofundar na configuração do dnsmasq, a menos que seja a melhor solução.
Obrigado por lerem e pelas dicas!
Ah, eu tinha esse problema exatamente assim, estou usando openfortivpn pessoalmente, supondo que você também esteja?
Tenho 99% de certeza de que instalei o systemd-resolved. Poderia usar o comando resolvectl depois disso, e o openfortivpn funcionaria automaticamente com ele e eu não tive problemas depois. O resolvectl também mostraria ambas as opções de DNS quando conectado, indicando que funcionou.
Espero que ajude, minha memória não é ótima.
Você tem alguma outra opção de cliente? Se o software VPN acrescenta ao resolv.conf ao invés de substituí-lo temporariamente, você terá problemas enquanto usar esse cliente.
Há duas maneiras de resolver o problema de DNS. Escolha a que preferir.
-
Modifique o arquivo /etc/systemd/resolved.conf e reinicie o serviço systemd-resolved.
vi /etc/systemd/resolved.conf
[Resolve]
Alguns exemplos de servidores DNS que podem ser usados para DNS= e FallbackDNS=:
Google: 8.8.8.8#dns.google 8.8.4.4#dns.google 2001:4860:4860::8888#dns.google 2001:4860:4860::8844#dns.google
DNS=10.1.1.4 8.8.8.8 8.8.4.4
FallbackDNS=10.1.1.4
…
ReadEtcHosts=yes
…
sudo systemctl restart systemd-resolved.service
-
Crie o seguinte script e execute-o após conectar-se com sucesso à VPN.
vi /usr/local/bin/fortinect_dns_fix.sh
#!/bin/bash
export VPN_INTERFACE=$(resolvectl | grep fctvpn | sed ‘s/[()]//g’ | cut -d’ ’ -f3)
sudo resolvectl domain $VPN_INTERFACE ~.
sudo resolvectl dns $VPN_INTERFACE <IP(s) do servidor DNS separado por espaço>
chmod 755 /usr/local/bin/fortinect_dns_fix.sh
Faça login no Forticlient VPN normalmente
#Em um terminal execute:
/usr/local/bin/fortinect_dns_fix.sh
resolvectl deve mostrar algo como:
...
Link 11 (fctvpn6b5ab556)
Escopos Atuais: DNS
Protocolos: -DefaultRoute -LLMNR -mDNS -DNSOverTLS DNSSEC=não/não suportado
DNS atual:
Servidores DNS: 10.1.1.4 10.1.1.5 8.8.8.8 8.8.4.4
Domínio DNS: ~.10.1.1.4
Fonte:
https://community.fortinet.com/t5/Support-Forum/DNS-settings-on-Ubuntu-22-04-and-FortiClient-VPN-7-0-0-0018/td-p/209184/page/4
HTH