O DHCP substitui o Cisco VPN resolv.conf no Linux
Pergunta
Estou usando uma máquina Ubuntu 8.04 (x86_64) para conectar-me à Cisco VPN do meu empregador.(O cliente não compilou imediatamente, mas descobri patches para atualizar o cliente para compilar em kernels lançados nos últimos dois anos.) Tudo isso funciona muito bem, até que meu cliente DHCP decida renovar seu aluguel e atualizar o /etc/resolv.conf, substituindo os servidores de nomes específicos da VPN pelos meus servidores de rede geral.
Existe uma boa maneira de impedir que meu cliente DHCP atualize /etc/resolv.conf enquanto minha VPN estiver ativa?
Solução
Se você estiver usando o Ubuntu padrão com NetworkManager, tente remover o cliente CiscoVPN e usar o plugin NetworkManager vpnc para conectar-se ao Cisco VPN.Isso deve evitar todos os problemas, já que o NetworkManager saberá sobre sua conexão VPN.
Outras dicas
Se você estiver executando sem o NetworkManager manipulando as conexões, use o pacote resolvconf para atuar como intermediário para ajustes de programas /etc/resolv.conf: sudo apt-get install resolvconf
Se você estiver usando o NetworkManager, ele cuidará disso para você, então livre-se do pacote resolvconf: sudo apt-get remove resolvconf
Eu descobri isso ao configurar o vpnc no Ubuntu na semana passada.Uma busca por vpn resolv.conf
em ubuntuforums.org tem 250 resultados, muitos dos quais estão muito relacionados!
Aconselho seguir o conselho de @Sean, mas se isso falhar por qualquer motivo, deve ser possível configurar o dhclient para não solicitar servidores DNS em /etc/dhcp3/dhclient.conf
chattr +i /etc/resolv.conf deve funcionar.(-i para desfazer)
Mas o melhor é configurar seu dhclient.conf:https://calomel.org/dhclient.htmlVeja os servidores de nomes de domínio e nomes de domínio anteriores.
Veja também "Send HostName;" Se funcionar no seu local de trabalho, você terá um nome de host legal para o seu PC e não um nome estranho que os servidores DHCP atribuem.
O vpnc parece estar fazendo a coisa certa para o concentrador Cisco do meu empregador.Eu entro e saio da VPN e parece atualizar tudo sem problemas.
O daemon DHCPclient pode ser instruído a não atualizar o resolv.conf com uma opção de linha de comando.(-r eu acho, dependendo do cliente)
Isso é menos dinâmico, porque você teria que reiniciar/reconfigurar o DHCP ao se conectar, mas não muito difícil.Da mesma forma, você poderia simplesmente interromper o serviço, mas nesse meio tempo você poderia perder seu IP, então eu realmente não recomendaria isso.
Alternativamente, você pode executar o dhcpclient a partir de um cron job, adicionando as verificações de processo apropriadas.
Esse problema é muito mais perceptível em redes com prazos de concessão de DHCP baixos.Há um bug arquivado na barra de lançamento do pacote dhcp3 do Ubuntu:
https://bugs.launchpad.net/ubuntu/+source/dhcp3/+bug/90681
Que inclui este patch na descrição:
--- /sbin/dhclient-script.orig 2007-03-08 19:19:56.000000000 +0000
+++ /sbin/dhclient-script 2007-03-08 19:19:46.000000000 +0000
@@ -13,6 +13,10 @@
# The alias handling in here probably still sucks. -mdz
make_resolv_conf() {
+ # don't overwrite resolv.conf at RENEW time, since a VPN/PPTP tunnel may
+ # have updated it with remote DNS servers
+ [ "$reason" = "RENEW" ] && return
+
if [ -n "$new_domain_name" -o -n "$new_domain_name_servers" ]; then
# Find out whether we are going to mount / rw
exec 9>&0 </etc/fstab
Esta mudança para /sbin/dhcp-script
impede que o cliente DHCP substitua /etc/resolv.conf
quando renovar o seu contrato de arrendamento.