Глобальное изменение DNS

Как я изменяю свой сервер DNS глобально, не имея необходимость делать это вручную через администратора сети для каждого соединения, которое я имею.

Я хочу использовать OpenDNS, звонит ли дома, университет, точка доступа Wi-Fi, привязи...

Я использую Ubuntu 13.10, но я предполагаю, что это будет то же на более новых версиях.

4
задан 29 April 2015 в 08:33

4 ответа

МЕТОД № 1: сценарии

Как можно знать, можно изменить DNS для конкретного использования соединения nm-connection-editor (который является тем, что открывается, когда Вы поражаете Соединения Редактирования в значке сети). Это - графический путь.

На терминальном основанный путь состоял бы в том, чтобы отредактировать каждое соединение в /etc/NetworkManager/system-connections/ папка, путем добавления строк dns=xxx.xx.xxx.xxx; и ignore-auto-dns=true после [ipv4] и method=auto. Вот файл примера от /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

Теперь, что, если мы могли бы автоматизировать добавление этих двух строк в каждый файл конфигурирования соединений? С grep и awk это возможно! Мой рев сценария делает точно это.

#!/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

И вот снимок экрана сценария на работе:

enter image description here

Примечание: поскольку 15,04 этих сценариев, кажется, не работают, но складываются nmcli добавил опцию, которая позволяет изменять настройки подключения. Альтернатива сценарию выше является следующим сценарием:

#!/bin/bash
set -x
for file in /etc/NetworkManager/system-connections/*; do
    file=$(echo $file | cut -d'/' -f5-)
    nmcli connection modify id "$file" +ipv4.dns "" +ipv4.dns 208.67.220.220 +ipv4.ignore-auto-dns yes
done

МЕТОД № 2 Мой любимый должен использовать /etc/dhcp/dhclient.conf, не прокомментировать строку supersede domain-name-servers строка и добавляет Ваши серверы DNS там, разделенный запятой. Рев снимка экрана от сети, принадлежит debian, однако это одинаково используется в человечности. Я использую этот точно тот же прием и в монетном дворе 17 и в человечности 14.04. Среди прочего я предложил бы комментировать строку dns=dnsmasq в /etc/NetworkManager/NetworkManager.conf но это не требуется.

supersede опция в основном заменяет любой DNS, который Вы получаете от своей точки доступа (иначе маршрутизатор). Для меня, nm-tool отчеты тот же dsn, который я поместил в ту строку для любого соединения Wi-Fi. prepend с другой стороны, только добавляет, что Вы указываете как вторичный DNS в дополнение к тому, что обеспечивает маршрутизатор. Таким образом, это может быть немного более оптимальным вариантом.

enter image description here

1
ответ дан 1 December 2019 в 10:20

Вы можете добавлять , строка в /etc/resolvconf/resolv.conf.d/head как

nameserver 8.8.8.8

не боится редактировать его даже при том, что существует строка, 'НЕ РЕДАКТИРУЮТ ЭТОТ ФАЙЛ рукой'

, Этот файл используется resolvconf ( страница справочника ) для генерации/etc/resolv.conf, который используется NetworkManager

После этого, необходимо работать, однажды

sudo resolvconf -u
2
ответ дан 1 December 2019 в 10:20

Можно добавить этот файл, таким образом, администратор сети обновит resolv.conf каждый раз соединение устанавливается:

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

(Я предложил бы DNS 85.214.20.141 (FoeBud)),

Оценка:

watch cat /etc/resolv.conf

Затем перезапустите networkmanager в другой консоли с

service network-manager restart

... следите за изменением resolv.conf файл.

Недостаток:

Локальный DNS, кэширующийся на Вашей машине dnsmasq больше не будет доступно.


Я также попробовал:

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

который казался несколько более чистым, или более короткая опция будет:

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

Но обе опции, кажется, не работают, потому что Администратор сети действительно запускает свой собственный экземпляр dnsmasqкоторый не использует их стандартный dnsmasq conf файлы.

Решение этого состояло бы в том, чтобы отсоединить dnsmasq от NetworkManager и установить dnsmasq самостоятельно (см. https://superuser.com/a/809716/160420), но я лично не хочу изменяться так в моей системе Ubuntu по умолчанию.

4
ответ дан 1 December 2019 в 10:20

Можно сделать это путем простого конфигурирования dns в модеме/маршрутизаторе самом впредь, все соединения будут использовать это dns по умолчанию. Тип 192.168.0.1 в Вашей странице браузера для доступа к странице маршрутизатора/модема. 208.67.222.222 208.67.220.220 два opendns сервера.

-5
ответ дан 1 December 2019 в 10:20

Другие вопросы по тегам:

Похожие вопросы: