РЕДАКТИРОВАТЬ МАЙ 6,2016
Я написал скрипт для обновления всех настроек системных подключений в /etc/Network-Manager/system-connections/
каталоге. GUI, который вы используете для редактирования отдельных соединений, редактирует определенный файл в этом каталоге. Сценарий обновляет все файлы - он просто ищет тех, у кого dns не установлен с помощью grep, и устанавливает его с помощью awk.
Поскольку для доступа к этим файлам требуется sudo
доступ, запустите этот сценарий, sudo
а затем - перезапустите сетевой менеджер.
#!/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"}}' "$file" > .tmpfile && ( cat .tmpfile > "$file") )
done
Скрипт в действии:
ОРИГИНАЛЬНАЯ ПОЧТА
Некоторые пользователи здесь отметили, что DNS каким-то образом контролируется dnsmasq
. Это действительно так. Я столкнулся с несколько меньшим вопрос, где независимо от того , как я изменил head
или body
в /etc/resolvconf/resolv.conf.d
мой компьютер не может на самом деле доступ интернирован доменного имени - работает только с IP - адресами.
Что я сделал, так это отредактировал /etc/NetworkManager/NetworkManager.conf
файл. Первоначально он сказал , dns=dnsmasq
но я изменил его: dns=208.67.222.222
. Хотя таким образом, nm-tool
не упоминая 208.67.222.222, я все же смог использовать доменные имена, а не только IP-адреса.
Вот NetworkManager.conf
как теперь выглядит мой файл:
[main]
plugins=ifupdown,keyfile,ofono
#dns=dnsmasq
dns=208.67.222.222
[ifupdown]
managed=false
ПРИМЕЧАНИЕ. Для получения более подробной информации о моей проблеме и ее решении см. Мой пост на сайте askubuntu.com .
ОБНОВЛЕНИЕ № 1
Вернувшись сегодня домой из университета, я обнаружил, что не могу подключиться к своему домашнему Wi-Fi. Я прочитал немного дальше, man NetworkManager.conf
и оказывается, что dns=
в[main]
действительности это строка для плагинов, поэтому строка dns=dnsmasq
, по-видимому, фактически добавляет плагин dnsmasq в NetworkManager.
Таким образом, мое решение все еще работало, но не так, как я ожидал. Вот выдержка из справочной страницы:
dns=plugin1,plugin2, ... List DNS plugin names separated by ','.
Подключаемые модули DNS используются для обеспечения функциональности локального сервера кэширования имен (что ускоряет запросы DNS) и передачи данных DNS приложениям, которые их используют.
Таким образом, установив, dns=208.67.222.222
я мог, в принципе, запретить NetworkManager использовать этот плагин, который в противном случае использовал бы локальный DNS-сервер (который, очевидно, не работает).