Як налаштувати свій статичний 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-адресами?


1
Перезавантажте комп'ютер. Не запускайте /etc/init.d/networking перезапуск. Помилка викликана маршрутом за замовчуванням, який вже існує. Ця настройка мені здається правильною.
Метт H

2
Як каже Метт Х, /etc/network/interfacesвибагливий до вже існуючих речей. Ви можете мати ідеальне налаштування, але вже є щось там, і воно скаржиться. Якщо це скарга за замовчуванням, на яку він скаржиться, ви можете видалити його, запустивши, ip route del defaultщоб /etc/network/interfaces
перевести

Менеджер мережі заявив про ще одну жертву. Просто видаліть цей мотлох.
Сова

Відповіді:


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. Зауважте також, що якщо ви хочете переконфігурувати свої інтерфейси, то краще, якщо запускати їх по черзі, ніж покладатися на перезапуск "мереж".


17

Якщо жодне з перерахованих вище не працює, майте на увазі, що Ubuntu додає tailфайл до генерованого ним файлу resv.conf.

Спробуйте це:

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

Який відкриє порожній файл resolutionv.conf.d в текстовому редакторі нано. Вам потрібно буде розмістити свою адресу DNS-сервера в першому рядку цього файлу і не забудьте закінчити рядок з поверненням каретки (натисніть Enter), як показано нижче:

nameserver 10.20.1.2

Редагування хвостового файлу замість фактичного файла resolutionv.conf запобіжить втраті вашої зміни при перезавантаженні системи.

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


Звучить добре, але моя система Ubuntu 14.04 не використовувала цей хвостовий файл. Тож це не є рішенням у моєму випадку. Спасибі, хоча.
Джеймс Т Снелл

11

Версія командного рядка:

Ви повинні додати свої сервери імен, щоб /etc/resolvconf/resolv.conf.d/baseподати такий файл:

nameserver 66.212.63.228 
nameserver 66.212.48.10

Мені доведеться спробувати цей метод через кілька годин і повернутися до вас. Чи знаєте ви, чому я отримую застаріле повідомлення і не вдалося підняти повідомлення eth0?
пунктирний квадрат

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 / інтерфейсів неправильно, 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)


8
Дбайливий. Я щойно підтвердив, що dns-nameserver(однина) не працює на RaspberryPi + Raspian Jesse. Я виявив, що мені доводиться користуватися dns-nameservers(множина). YMMV і все таке, просто намагаючись допомогти наступній людині ...
уникнути потоку

2
Ознайомтеся зі своєю сторінкою резолюціїconf (8) щодо використання та параметрів. У Ubuntu 16.04.3 LTS йдеться про те, що ви використовуєте одну або кілька ліній серверів dns-імен з однією IP-адресою на рядок, або ви можете використовувати сервери dns-імен та список розділених пробілами IP-адрес.
jla

dns-nameserverабо dns-nameservers? тому що wiki.ubuntu.com/KvmWithBridge каже "сервери" ...
Thufir

Однозначно не працює для мене. Неможливо проголосувати, поки недостатньо балів.
Сова

Так, це приємно і послідовно тоді! Вибачте за плутанину, перевірте обидва та перевірте вищезазначені коментарі, оскільки, здається, різні варіанти Ubuntu / Debian / Raspian різні.
babelmonk

6

Найпростіший метод налаштування ваших DNS-серверів - це використання NetworkManager

Під IPv4 заповніть свої dns-сервери

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


2
Я забув згадати, що у мене не встановлено єдності чи гнома. Gnome instalatio - мій наступний проект.
пунктирний четвер

Це не дозволить мені зберегти це. чому це може бути?
Джош

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

Сподіваюся, це допоможе пізнім користувачам!


для того, чи dns-nameserversможете ви розділяти комами 8.8.8.8, 8.8.4.4?
Туфір


4

Примітка. Обережне використання без прямого доступу до машини, це перерве з'єднання ...

я використовую

sudo ifdown eth0

тоді

sudo ifup eth0

Він скине і випустить усе ...

Якщо він стикається з помилками, пов’язаними з конфігурацією, ви можете використовувати:

sudo ifdown eth0 --force

3

Це працювало для мене

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

і додати:

nameserver <add your router ip>

Виконати:

sudo resolvconf -u

Я використовую основну установку сервера ubuntu.


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


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) Перезавантажте.

Вітаю, тепер у вас є здорові конфігурації, які працюють знову.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.