Как мне настроить мой статический DNS в интерфейсах?

60

Я использую Ubuntu 12.04.

Мой /etc/network/interfacesфайл состоит из:

# The loopback network interface  
auto lo  
iface lo inet loopback  


# The primary network interface  
auto eth0 
iface eth0 inet static  
address 192.168.1.58  
gateway 192.168.1.1
network 192.168.1.0  
broadcast 192.168.1.255
dns-nameservers 66.212.63.228 66.212.48.10  

Я запустил команду: /etc/init.d/networking restart

Который ответил:

*Running /etc/init.d/networking restart is deprecated because it may not enable again some interfaces  
*Reconfiguring network interfaces...  
RTNETLINK answers: File exists  
Failed to bring up eth0  
[ OK ]  

Затем я запустил ping google.com и получил:

ping: unknown host google.com

Я не уверен, обновились ли мои интерфейсы. Как правильно настроить мою сеть с моими статическими DNS-адресами?

dottedquad
источник
1
Перезагрузите компьютер. Не запускайте /etc/init.d/networking restart. Ошибка вызвана тем, что маршрут по умолчанию уже существует. Эта установка выглядит правильно для меня.
Мэтт Х
2
Как говорит Мэтт Н, /etc/network/interfacesтребователен к уже существующим вещам. Вы можете иметь идеальную настройку, но уже есть что-то там, и он будет жаловаться. Если это маршрут по умолчанию, на который он жалуется, вы можете удалить его, запустив, ip route del defaultчтобы привести компьютер в состояние, в котором вы можете передать управление этим материалом/etc/network/interfaces
Azendale
Сетевой менеджер забрал еще одну жертву. Просто удалите этот мусор.
Сова

Ответы:

24

Поскольку спрашивающий дает содержание своего заключения, /etc/network/interfacesя делаю вывод, что он использует ifup для настройки интерфейсов. Но так как он может фактически использовать NetworkManager, я также буду обсуждать это.

Если вы используете ifup, то настройки DNS входят /etc/network/interfaces. Для каждого интерфейса вы добавляете dns-*опции, соответствующие серверу имен, доступному через этот интерфейс. Например, если сервер имен по адресу 1.2.3.4 доступен через интерфейс eth0, добавьте dns-nameservers 1.2.3.4его в iface eth0раздел.

Если вы используете NetworkManager, настройки вводятся в Редакторе подключений (индикатор сети | Редактировать подключения ...) на вкладке Настройки IPv4.

Выполнение /etc/init.d/networking restartперенастройки интерфейсов не рекомендуется. Если вы используете, ifupто сначала ifdownкаждый активный сетевой интерфейс, а затем ifupкаждый интерфейс. Если вы используете NetworkManager, то сначала отключите сеть с помощью индикатора (вверху рабочего стола); затем откройте терминал и запустите

sudo /etc/init.d/network-manager restart

и затем включите сеть, используя индикатор.

Или вы можете просто перезагрузиться.

Что касается того, что /etc/init.d/networking restartпривело к

RTNETLINK answers: File exists
Failed to bring up eth0  

Это означает, что ifupdown считает, что eth0это уже произошло . Используйте, ifdown --force eth0чтобы заставить ifupdownперестать верить, что он уже настроил интерфейс.

Что касается «устаревшего» сообщения, это сообщение больше не печатается в Ubuntu 12.10, но вы все равно должны заметить, что initscripts «находятся на выходе». Чтобы перезапустить службу foo, используйте service foo restartили restart foo. Также обратите внимание, что если вы хотите перенастроить свои интерфейсы, лучше их отключить один за другим, чем полагаться на перезапуск «сети».

jdthood
источник
17

Если ничего из вышеперечисленного не работает, имейте в виду, что Ubuntu добавляет tailфайл к файлу resolv.conf, который он генерирует.

Попробуй это:

sudo nano /etc/resolvconf/resolv.conf.d/tail

Который откроет пустой файл resolv.conf.d в текстовом редакторе nano. Вам нужно будет поместить адрес своего DNS-сервера в первую строку этого файла и не забывать завершать строку возвратом каретки (нажмите ввод), как показано ниже:

nameserver 10.20.1.2

Редактирование хвостового файла вместо фактического файла resolv.conf предотвратит потерю ваших изменений при перезагрузке системы.

Вам нужно будет запустить, sudo resolvconf -uчтобы активировать изменения. После этого вы сможете пинговать google.com. Удачи!

Шон Хагганс
источник
Звучит хорошо, но моя система Ubuntu 14.04 не использовала этот хвостовой файл. Так что это не решение в моем случае. Спасибо хоть.
Джеймс Т Снелл
11

Версия командной строки:

Вы должны добавить свой сервер имен в /etc/resolvconf/resolv.conf.d/baseфайл следующим образом:

nameserver 66.212.63.228 
nameserver 66.212.48.10
pl1nk
источник
Мне придется попробовать этот метод через несколько часов и вернуться к вам. Знаете ли вы, почему я получаю устаревшее сообщение и не смог вызвать сообщение eth0?
dottedquad
1
Вы можете использовать это: $ ifdown eth0 && ifup eth0Узнайте больше об этой проблеме здесь .
pl1nk
1
@dottedquad Что вы измените файл / etc / network / interfaces на этот: auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.1.58 gateway 192.168.1.1 network 192.168.1.0 broadcast 192.168.1.255Позаботьтесь о том, чтобы это: auto eth0 iface eth0 inet staticдве строки
pl1nk
1
Лучше добавить информацию о сервере имен в соединения NetworkManager (если вы используете NetworkManager), как описано в bodhi.zazen, или для определения интерфейсов в / etc / network / interfaces (если вы используете ifup), чем добавлять информацию статически и глобально. в /etc/resolvconf/resolv.conf.d/base.
Jdthood
1
@jdthood Похоже, что вы видели мои комментарии и вопрос, а также другие ответы! Некоторые комментарии вверх [..] «Вы можете использовать это: $ ifdown eth0 && ifup eth0» [..]
pl1nk
11

Все ответы, которые относятся к / etc / network / interfaces неправильно, dns-nameserversа не dns-nameserver- ниже, должны работать:

auto wlan0
iface wlan0 inet static
address 192.168.1.28
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameserver 8.8.8.8
dns-nameserver 8.8.4.4
dns-search something.network.com

(проверено на Ubuntu 15.04)

babelmonk
источник
8
Осторожный. Я только что подтвердил, что dns-nameserver(единственное) не работает на RaspberryPi + Raspian Jesse. Я обнаружил, что мне пришлось использовать dns-nameservers(множественное число). YMMV и все такое, просто пытаюсь помочь следующему человеку ...
evadeflow
2
Проверьте справочную страницу resolvconf (8) на предмет использования и параметров. В Ubuntu 16.04.3 LTS говорится, что вы либо используете одну или несколько строк dns-nameserver с одним IP-адресом на строку, либо вы можете использовать dns-nameservers и разделенный пробелами список IP-адресов.
JLA
dns-nameserverили dns-nameservers? потому что wiki.ubuntu.com/KvmWithBridge говорит "серверы" ...
Thufir
Определенно не работает для меня. Невозможно проголосовать, пока недостаточно очков.
Сова
Да, это хорошо и последовательно! Извините за путаницу, проверьте оба и вышеупомянутые комментарии, поскольку кажется, что разные варианты Ubuntu / Debian / Raspian отличаются.
Babelmonk
6

Самый простой способ настройки DNS-серверов - использовать NetworkManager.

Под IPv4 введите свой DNS-сервер (ы)

введите описание изображения здесь

пантера
источник
2
Я забыл упомянуть, что у меня не установлено ни единства, ни гнома. Gnome installatio - мой следующий проект.
dottedquad
Это не позволит мне сохранить это. почему это может быть?
Джош
4

Я смог обойти это безголовую установку сервера Ubuntu, добавив

nameserver 8.8.8.8

... после соответствующего интерфейса в файле / etc / network / interfaces:

auto wlan0
iface wlan0 inet static
address 192.168.1.28
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8
dns-nameservers 8.8.4.4

Надеюсь, что это поможет более поздним пользователям!

corq
источник
для dns-nameserversвас может запятой разделите 8.8.8.8, 8.8.4.4?
Thufir
1
@Thufir spaces wiki.debian.org/NetworkConfiguration
Филипп Гачу
4

Примечание: осторожное использование без прямого доступа на машине, это разорвет соединение ...

я использую

sudo ifdown eth0

тогда

sudo ifup eth0

Это сбросит и выпустит все ...

Если он сталкивается с ошибками, связанными с конфигурацией, вы можете использовать:

sudo ifdown eth0 --force
user294233
источник
3

Это сработало для меня

sudo vi /etc/resolvconf/resolv.conf.d/base

и добавить:

nameserver <add your router ip>

Бегать:

sudo resolvconf -u

Я использую базовую установку сервера Ubuntu.

Bongo
источник
2

Вам не хватает спецификации подсети в файле интерфейсов.

Добавить маску подсети 255.255.255.0для /etc/network/interfacesниже линии сети.

Брайан
источник
1

По какой-то причине dns-nameserversутверждение ничего не делает в моем случае. И другие ответы не по книге, поскольку они обходят, dnsmasqкак это используется в Ubuntu.

Чтобы сделать это правильно, отредактируйте /etc/dnsmasq.conf

Добавьте свои серверы имен в конец файла:

server=8.8.8.8
server=8.8.4.4

Перезапустите dnsmasq, чтобы использовать новые настройки: sudo service dnsmasq restart

Кредит: https://unix.stackexchange.com/a/163506/187949

DustWolf
источник
1

У меня была эта проблема. Я думал, что схожу с ума. Каждый раз, когда я редактировал /etc/resolv.conf, он удалял мой конфиг. Оказывается, какой-то общий сумасшедший распространил debian с сетевым менеджером, который перезаписывает все мои настройки сети.

Вот как я это исправил:

1) sudo apt-get purge network-manager

Это избавляет от этого ужасного нового инструмента, который мешает всем конфигам работать должным образом.

2) Отредактируйте /etc/network/interfacesфайл:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

auto enp0s25
iface enp0s25 inet static
        address 192.168.1.2
        netmask 255.255.255.0
        gateway 192.168.1.1

3) Отредактируйте /etc/resolv.conf:

nameserver 8.8.8.8
nameserver 8.8.4.4

4) Перезагрузка.

Поздравляю, теперь у вас есть нормальные конфиги, которые снова работают.

Сова
источник
0

Вы также можете настроить этот интерфейс в другом файле, так как у вас больше шлюзов.

Подробности здесь .

antivirtel
источник