Recebi os arquivos de um mini linux
, que inicializa diretamente firefox
. Funciona para tudo o que deveria estar fazendo, só que eu não tenho conexão com a Internet.
Temos 3 servidores DNS na rede, todos funcionando. Eu também posso fazer ping. Mas ao tentar ping google.de
ou wget google.de
recebo um bad address
erro.
nslookup google.de
funciona por algum motivo.
Rastreei o problema até o meu resolv.conf
no sistema inicializado, sem o mesmo conteúdo resolv.conf
que coloquei no .iso
arquivo.
Tentei entender todos os fatores envolvidos na criação e modificação resolv.conf
. Não tenho certeza de ter conseguido tudo, mas definitivamente não encontrei minha solução lá.
Então, como último esforço, tentei tornar o resolv.conf
arquivo imutável usando
:~# chattr +i /etc/resolv.conf
Ao reconstruir e inicializar novamente para minha surpresa, meu arquivo foi renomeado resolv.conf~
e, em seu lugar, estava o mesmo arquivo padrão que me assombrava.
O conteúdo do arquivo me faz acreditar que obtém as informações da própria rede. Ao iniciar o .iso
Virtualbox sem acesso à Internet, meu arquivo está sendo mantido como está.
Tentei mudar /etc/dhcp/dhclient.conf
para não obter as informações da rede, excluindo domain-name-server
e domain-name-search
da request
parte do arquivo.
Infelizmente não funcionou.
Não tenho o NetworkManager instalado. O iso é baseado no Ubuntu 14.04.
Provavelmente faltam informações vitais. Estou feliz em fornecê-lo.
ATUALIZAR:
Acho que encontrei o arquivo que limpa resolv.conf
.
Parece ser /usr/share/udhcpc/default.script
#!/bin/sh
# udhcpc script edited by Tim Riker <[email protected]>
[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1
RESOLV_CONF="/etc/resolv.conf"
[ - n "$broadcast" ] && BROADCAST="broadcast $broadcast"
[ -n "$subnet" ] && NETMASK="netmask $subnet"
case "$1" in
deconfig)
/bin/ifconfig $interface 0.0.0.0
for i in /etc/ipdown.d/*; do
[ -e $i ] && . $i $interface
done
;;
renew|bound)
/bin/ifconfig $interface $ip $BROADCAST $NETMASK
if [ -n "$router" ] ; then
echo "deleting routers"
while route del default gw 0.0.0.0 dev $interface ; do
:
done
metric=0
for i in $router ; do
route add default gw $i dev $interface metric $((metric++))
done
fi
echo -n > $RESOLV_CONF # Start ----------------
[ -n "$domain" ] && echo search $domain >> $RESOLV_CONF
for i in $dns ; do
echo adding dns $i
echo nameserver $i >> $RESOLV_CONF
done
for i in /etc/ipup.d/*; do
[ -e $i ] && . $i $interface $ip $dns
done # End ------------------
;;
esac
exit 0
Faz parte do udhcpc
programa. Um pequeno cliente dhcp, que faz parte dobusybox
Irá investigar mais.
ATUALIZAÇÃO2 E SOLUÇÃO:
Comentei a parte (#Start to #End), que aparentemente sobrescreve o /etc/resolv.conf
arquivo e com certeza. Esse foi o culpado. Portanto, um script obscuro causou todo esse problema.
Alterei a pergunta para refletir, o que realmente precisava ser conhecido para resolver meu problema, para que fosse mais fácil encontrar pessoas com o mesmo problema e para que eu pudesse aceitar uma resposta.
Obrigado pela ajuda aqui para descobrir as coisas.
fonte
Respostas:
1) Você não deve atualizar manualmente o seu resolv.conf, porque todas as alterações serão substituídas pelos dados fornecidos pelo servidor DHCP local. Se você quiser que seja estático, execute
sudo dpkg-reconfigure resolvconf
e responda "não" a atualizações dinâmicas. Se você quiser adicionar novas entradas, editar/etc/resolvconf/resolv.conf.d/base
e executarsudo resolvconf -u
, ele acrescentará suas entradas e as entradas do servidor DHCP.2) Tente editar seu / etc / network / interfaces e adicione suas entradas, como
e depois reinicie
/etc/init.d/networking restart
ousudo ifdown -a
esudo ifup -a
3) Seu sistema usa udhcp, que é um programa cliente DHCP muito pequeno. O cliente udhcp negocia uma concessão com o servidor DHCP e notifica um conjunto de scripts quando uma concessão é obtida ou perdida. Você pode ler sobre o seu uso aqui ou apenas editar este script (como você fez).
fonte
/etc/resolvconf/resolv.conf.d/base
e executeiresolvconf -u
. Infelizmente não funcionou.dpkg-reconfigure resolvconf
. As entradas não estavam lá. E eu tenho entradas com ambosnameserver ip
esearch domain
.dpkg-reconfigure resolvconf
não adicionará entradas, mas você pode desativar as atualizações automáticas. Se você desativar as atualizações, poderá editar o resolv.conf manualmente e não deverá ser substituído.resolvconf -u
as entradas não foram adicionadas.Eu também encontrei isso. Comentar
domain-name-server
também não foi corrigido para mim.Além disso, eu não estou usando
resolvconf
, simplesmente/etc/resolv.conf
.Eu não tentei usar
chattr +i
para bloquearresolv.conf
porque parece muito hacky. Além disso, quero que o Puppet seja capaz de modificarresolv.conf
quando necessário.A melhor solução que encontrei substitui o comportamento padrão do
dhclient
uso de seus ganchos documentados.Crie um novo arquivo
/etc/dhcp/dhclient-enter-hooks.d/nodnsupdate
com o seguinte conteúdo:Em seguida, torne o arquivo executável:
Agora, quando o dhclient é executado - na reinicialização ou quando você é executado manualmente
sudo ifdown -a ; sudo ifup -a
- ele carrega esse scriptnodnsupdate
. Esse script substitui uma função interna chamadamake_resolv_conf()
que normalmente substituiriaresolv.conf
e, em vez disso, não faz nada.Isso funcionou para mim no Ubuntu 12.04.
fonte
/etc/resolv.conf
foi substituído após a reinicialização.Ubuntu 16.04
Se as interfaces de rede da instância do servidor forem controladas pelo DHCP, o programa dhclient substituirá seu/etc/resolv.conf
arquivo sempre que o serviço de rede for reiniciado.Você pode corrigir o problema editando o
/etc/dhcp/dhclient.conf
arquivo e adicionando declarações “substituem” para domain-name , domínio de pesquisa e domain-name-servers como segue:Nesse caso específico, o servidor de nomes está localizado em "192.168.56.103" e o nome do domínio é "local.com"
Observe que cada linha é terminada por ponto e vírgula e o nome do domínio é colocado entre aspas duplas.
fonte
/etc/resolv.conf
foi substituído por 127.0.0.53.dnsmasq
vá para este diretório:
Abra o arquivo chamado head e insira os IPs ou nomes DNS. Abra o arquivo chamado tail e coloque o domínio lá. Reinicie.
fonte
Nas VMs do Azure, o /etc/resolv.conf não é diretamente editável.
Tente adicionar todos os DNS nos arquivos de configuração de rede / etc / sysconfig / network-scripts / ifcfg-eth0 e assim por diante, como abaixo:
DOMAIN = example.com
DNS1 = 10. . . *
DNS2 = 10. . . *
DNS3 = 10. . . *
e reinicie o serviço de rede depois de salvar os arquivos. você verá que a configuração também será adicionada ao resolve.conf.
fonte
Para tornar as alterações relacionadas ao DNS
resolv.conf
permanentes, você precisa alterar o arquivo de configuração DHCP nomeadodhclient.conf
. Você pode encontrar o arquivo em/etc/dhcp/dhclient.conf
.Abra o arquivo para edição (não se esqueça de usar o sudo). Você verá linhas como estas:
Remova o "#" anterior e use os servidores de nome de domínio e / ou nome de domínio que você deseja. Salve isso. Agora as alterações relacionadas ao DNS serão permanentes.
Os créditos vão para: https://itsfoss.com/resolvconf-permanent-ubuntu/
fonte
Use o comando abaixo para impedir que o resolv.conf ou qualquer arquivo seja substituído após a reinicialização
nome do arquivo chattr -V + i, por exemplo, chattr -V + i /etc/resolv.conf
Para reverter a alteração Use o comando abaixo:
chattr -i filename - para reativar a inserção no arquivo
chattr (Change Attribute) é um utilitário Linux de linha de comando usado para definir / desabilitar certos atributos em um arquivo no sistema Linux para garantir exclusão ou modificação acidental de arquivos e pastas importantes, mesmo que você esteja logado como usuário root.
fonte
chattr
, mas obverveu que isso não teve efeito.No ubuntu 18.04, usando o NetworkManager. Você precisa remover o arquivo 'resolv.conf' e deixar o NetworkManager gerar um para você.
Para remover o arquivo no tipo de terminal
sudo rm -f /etc/resolv.conf
; isso excluirá o arquivo para você.Reinicialize o sistema e o NetworkManager gerará um arquivo resolv.conf para você.
fonte