Alteração global de DNS

4

Como eu mudo meu servidor DNS globalmente sem ter que fazê-lo manualmente através do gerenciador de rede para cada conexão que eu tenho.

Eu quero usar o OpenDNS, seja em casa, na universidade, no hotspot de Wi-Fi, na ligação telefônica ...

Eu uso o Ubuntu 13.10, mas acho que será o mesmo em versões mais recentes.

    
por Abdul Hamdy 15.05.2014 / 02:13

4 respostas

4

Você pode adicionar este arquivo para que o gerente de rede atualize resolv.conf cada vez que uma conexão é estabelecida :

echo "echo 'nameserver 85.214.20.141'>/etc/resolv.conf"> /etc/NetworkManager/dispatcher.d/10-FoeBud-dns
chmod +x /etc/NetworkManager/dispatcher.d/10-FoeBud-dns

(Eu sugeriria o dns 85.214.20.141 ( FoeBud ))

Avaliação:

watch cat /etc/resolv.conf

Em seguida, reinicie o networkmanager em outro console com

service network-manager restart

... observe a alteração do arquivo resolv.conf .

Drawback:

O armazenamento em cache do DNS local em sua máquina por dnsmasq não estará mais disponível.

Eu também tentei:

echo "nameserver 85.214.20.141">/etc/resolv.dnsmasq.conf
echo "resolv-file=/etc/resolv.dnsmasq.conf" > /etc/NetworkManager/dnsmasq.d/FoeBud-dns

que parecia um pouco mais limpo ou uma opção mais curta seria:

echo "server=85.214.20.141" > /etc/NetworkManager/dnsmasq.d/FoeBud-dns

Mas as duas opções parecem não funcionar, porque o Network-Manager inicia sua própria instância de dnsmasq , que não usa esses arquivos padrão dnsmasqconf.

Uma solução para isso seria desanexar o dnsmasq do NetworkManager e instalar o dnsmasq sozinho (veja link ), mas eu pessoalmente não quer mudar muito no meu sistema Ubuntu padrão.

    
por rubo77 28.04.2015 / 22:13
2

Você pode anexar uma linha em /etc/resolvconf/resolv.conf.d/head like

nameserver 8.8.8.8

Não tenha medo de editá-lo, mesmo que haja a linha 'NÃO EDITAR ESTE ARQUIVO POR MÃO'

Este arquivo é usado pelo resolvconf ( man page ) para gerar o /etc/resolv.conf, que é usado pelo NetworkManager

Depois disso, você precisa executar uma vez

sudo resolvconf -u
    
por solsTiCe 28.04.2015 / 23:06
1

MÉTODO # 1: scripts

Como você deve saber, é possível alterar o dns para uma conexão específica usando nm-connection-editor (que é o que é aberto quando você clica em Editar conexões no ícone de rede). Essa é a maneira gráfica.

A maneira baseada em terminal seria editar cada conexão na pasta /etc/NetworkManager/system-connections/ , adicionando as linhas dns=xxx.xx.xxx.xxx; e ignore-auto-dns=true após [ipv4] e method=auto . Aqui está um arquivo de amostra de /etc/Network-Manager/system-connections/ :

[connection]
id=My College Connection
uuid=*******-******-****-a155-ca880ccf7ddb
type=802-11-wireless

[802-11-wireless]
ssid=My College Connection
mode=infrastructure
mac-address=00:0B:81:94:D3:08

[ipv6]
method=auto

[ipv4]
method=auto
dns=208.67.220.220;
ignore-auto-dns=true

Agora, e se pudéssemos automatizar a adição dessas duas linhas a cada arquivo de configuração de conexão? Com grep e awk é possível! Meu script abaixo faz exatamente isso.

#!/bin/bash
# Author: Serg Kolo
# Date: May 6, 2015
# Description: this script checks all settings for connections in 
# /etc/NetworkManager/system-connections/ , and if there's no custom
# dns set , this script sets it;
# NOTE: run sudo service network-manager restart after running this script

# set -x

for file in /etc/NetworkManager/system-connections/* ; do
        grep 'dns=208.67.220.220;' "$file"  || ( awk '{print;if ($1=="[ipv4]"){
getline; print "method=auto\ndns=208.67.220.220;\nignore-auto-dns=true"}}' "$fi
le" > .tmpfile && ( cat .tmpfile > "$file") )
done

E aqui está uma captura de tela do script no trabalho:

NOTA:para15.04estescriptparecenãofuncionar,masonmcliadicionouumrecursoquepermitemodificarasconfiguraçõesdeconexão.Aalternativaaoscriptacimaéoseguintescript:

#!/bin/bashset-xforfilein/etc/NetworkManager/system-connections/*;dofile=$(echo$file|cut-d'/'-f5-)nmcliconnectionmodifyid"$file" +ipv4.dns "" +ipv4.dns 208.67.220.220 +ipv4.ignore-auto-dns yes
done

MÉTODO # 2 Meu favorito pessoal é usar /etc/dhcp/dhclient.conf , descomentar a linha supersede domain-name-servers line e adicionar seus servidores dns lá, separados por vírgula. Screenshot abaixo é da web, pertence ao debian, no entanto, é igualmente usado no Ubuntu. Eu uso este mesmo truque tanto no mint 17 quanto no ubuntu 14.04. Entre outras coisas, sugiro comentar a linha dns=dnsmasq em /etc/NetworkManager/NetworkManager.conf , mas isso não é obrigatório.

A opção

supersede basicamente substitui o dns que você recebe do seu ponto de acesso (também conhecido como roteador). Para mim, nm-tool reporta o mesmo dsn que eu coloquei nessa linha para qualquer conexão wifi. prepend , por outro lado, apenas adiciona o que você especificar como DNS secundário, além do que o roteador fornece. Portanto, essa opção pode ser um pouco melhor.

    
por Sergiy Kolodyazhnyy 29.04.2015 / 18:24
-5

Você pode fazer isso simplesmente configurando o dns em seu próprio modem / roteador, portanto, todas as suas conexões usarão esse dns por padrão. Digite 192.168.0.1 na página do seu navegador para acessar sua página de roteador / modem. 208.67.222.222 208.67.220.220 são os dois servidores opendns.

    
por Sapnesh Naik 06.10.2014 / 19:19

Tags