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,masonmcli
adicionouumrecursoquepermitemodificarasconfiguraçõ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.