Який правильний спосіб змінити IP-адресу DNS?


56

Я підозрюю, що сервер імен, наданий моїм модемом / маршрутизатором ADSL, є помилковим. Щоразу, коли я вперше переглядаю веб-сайт в ubuntu, рішення доменного імені займає не менше 15 секунд.

Щоб вирішити цю проблему, я змінив конфігурацію сервера імен /etc/resolv.confз 192.168.1.1 (мій модем ADSL) на 8.8.8.8 (основний DNS google). Це, здається, вирішує проблему, але, на жаль, мої зміни /etc/resolv.confперезаписуються "NetworkManager" при кожному запуску.

Який правильний спосіб налаштувати IP сервера імен в ubuntu 10.4?

Відповіді:


51

Якщо у вас є типове налаштування з'єднання з менеджером мережі та DHCP, спробуйте наступне:

  1. Клацніть правою кнопкою миші на піктограмі мережевого менеджера на панелі та виберіть "Редагувати з'єднання ..."
  2. Виберіть з'єднання на вкладці дротового чи бездротового зв’язку, виберіть "Змінити"
  3. (Введіть свій пароль, якщо для з’єднання встановлено "загальносистемний доступ")
  4. Виберіть вкладку налаштувань IPv4
  5. Спосіб переключення на "Автоматичні (DHCP) адреси"
  6. Введіть потрібний сервер імен у поле "Додаткові сервери DNS" і натисніть "Застосувати"

Це повинно зробити трюк.


1
Це продовжує працювати в Ubuntu 12.04 і пізніших версіях, навіть незважаючи на те, що NetworkManager зараз використовує резольконф для обробки резолюції.conf.
jdthood

4
Якщо вам цікаво, де закінчується конфігурація, подивіться /etc/NetworkManager/system-connections/(вам потрібні права адміністратора для доступу до цих файлів конфігурації).
Лекенштейн

2
Це змінює лише dns для поточного з'єднання, але чи існує також спосіб зміни глобальної DNS ?
rubo77

список для мене порожній. що він використовує за замовчуванням?
Дж. Тейлор

1
Працює точно так само на термінальному інтерфейсі nmtuibtw!
Гранітозавр

30

Ви можете змінити їх так.

Спочатку натисніть на значок мережевого менеджера у меню, а потім - на Edit Connections...пункт.

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

Тепер перейдіть на вкладки "Провідний" або "Бездротовий", залежно від того, що ви використовуєте - я використовую WiFi, тому я буду користуватися цим.

Виберіть назву вашої мережі та натисніть Edit...

Перейдіть на вкладку IPv4, а потім змініть її з автоматичної DHCP на лише автоматичну (DHCP) адресу.

Введіть IP-адресу вашого сервера DNS.

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

Клацніть Зберегти, і ви закінчили!


Хоча ви можете змінити DNS-сервер у мережевих налаштуваннях на будь-якому ПК, найкраще змінити їх у фактичному маршрутизаторі, який підключається до Інтернету, щоб усі підключені пристрої мали користь від нього.
Марк Руні

3
Що робити, якщо у нього немає маршрутизатора? Або він просто хоче змінити DNS для цього комп'ютера / користувача? Що робити, якщо це тільки один раз? Можливо, він насправді не має доступу до маршрутизатора і хоче користуватися іншим сервером DNS ... Я можу додавати причини до цього списку цілу ніч. Гарна порада та відповідь @jrg.
Бруно Перейра

6
Це хороший графічний підказки для встановлення dns на одній машині з мережевим менеджером. Я хотів би лише зазначити, що ви можете встановити більше однієї, відокремленої комою. 8.8.8.8,8.8.4.4. Налаштування DNS для локальної мережі також може бути корисним, якщо лан є достатньо великим, я особисто використовую роутер або dnsmask. У локальній мережі часто простіше підтримувати чорний список або проксі в одному місці (маршрутизатор / dnsmask / кальмар), а не кожного клієнта або кожного користувача кожного клієнта, але це трохи поза питанням, яке тут задається.
Пантера

29

Найкращий спосіб встановити сервер імен через CLI, без NetworkManger, зі статичною адресою або незалежно від з'єднання:

Встановіть пакет resvconf .

Біжи

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

(ігноруйте страхітливе попередження. /etc/resolv.conf автоматично генерується, тому попередження існує, тому воно буде вставлено в /etc/resolv.conf, коли буде створено /etc/resolv.conf.) В кінці файлу, додати

 nameserver <ip_of_nameserver>

Натисніть Ctrl xі відповідь "Так", щоб зберегти файл. Щоб закінчити, відновіть /etc/resolv.conf, щоб зміни застосовано прямо зараз:

 sudo resolvconf -u

1
Чомусь близько місяця тому моя нічна збірка Xubuntu припинила вирішення імен хостів LAN. Мій сервер DHCP повинен видавати себе (192.168.68.1) як DNS-сервер, я також жорстко закодував його в Менеджері мереж і в кожному місці (згаданий вище у цій відповіді). З тим, як Xubuntu / NetworkMan / Що б не використовував IP 127.0.xx в наші дні, важко діагностувати проблему. Я міг би вирішити зовнішні IP-адреси, тому це отримувало ДІЙСНЕ для DNS. У всякому разі, це була єдина відповідь, яка вирішила мою проблему. Спасибі
Адам Плочер

18

Інший спосіб зробити це - редагувати, /etc/dhcp3/dhclient.confви можете це зробити, ввівши це у діалоговому вікні запуску (з'являється натисканням Alt+ F2)

gksudo gedit /etc/dhcp3/dhclient.conf

Потім знайдіть наступний рядок

#prepend domain-name-servers 127.0.0.1;

І змінити його на

prepend domain-name-servers 8.8.8.8;

Це зробить dhclient (клієнт DHCP, який використовує NetworkManager) передбачити це на ваших серверах dns, тож вирішення.conf в кінцевому підсумку виглядатиме так

nameserver 8.8.8.8
nameserver 192.168.1.1

Це рішення працюватиме скрізь, і ви завжди отримаєте DNS, який ви обрали як основний.


4
Мені здається, що Менеджер Мережі пише resoluv.conf без консультацій з dhclient.conf
daithib8

2
в ubuntu 11.10 вам потрібно змінити /etc/dhcp/dhclient.conf замість
/etc/dhcp3/dhclient.conf

1
можна поставити декілька?
PyRulez

1
@PyRulez Так, окремо комами, крапкою з комою в кінці
Сергій Колодяжний

2
Я спробував це в 14.10, але ніякого ефекту
rubo77

7

Іншим рішенням є зміна конфігурації вашого маршрутизатора для використання іншого DNS-сервера. Просто увійдіть до свого адміністратора, і поки не маршрутизатор викликає проблему, всі ваші клієнтські машини покращують DNS.


+1 Погоджено, якщо це проблема, яка, швидше за все, не буде вирішена найближчим часом, найкраще виправити її на маршрутизаторі, тоді вона буде виправлена ​​для всіх машин у мережі. Мені найкраще використовувати Google DNS або OpenDNS.
Марк Девідсон

1
Я вже робив це, але маршрутизатор все ще виступає як проміжний сервер імен між клієнтами та налаштованим сервером імен, і це все ще дуже повільно.
Вім Коен

1
Багато провайдерів блокують свої маршрутизатори, тому ви не можете змінити ці налаштування або заплатити за це.
LassePoulsen

@Wim Якщо ваш маршрутизатор не може надати роздільну здатність DNS у розумні терміни, скажімо, 50мс на доброму з'єднанні, щось із цим серйозно не в порядку. Так неправильно, що може поводитись з іншими трафіками неефективно. Можливо, настав час для оновлення на $ 30 / £ 20.
Олі

1
@Oli: Проблема DNS з'являється лише при використанні роутера з вікна Linux: у мене була така ж проблема з debian, але проблем з Windows не було. Я впевнений, що це лише якась тонка проблема сумісності. Роутер працює нормально інакше.
Вім Коен

6

Клацніть мережевий індикатор у верхньому правому куті екрана та виберіть Edit Connections.... Виберіть з'єднання, яке ви хочете змінити (можливо, на вкладці Wiredабо або Wirelessнатисніть Edit...кнопку.

Перейдіть на IPv4 Settingsвкладку вікна підключення та змініть метод з Automatic (DHCP)на Automatic (DHCP) addresses only. Тепер ви зможете вказати IP-адресу сервера DNS.

Збережіть з'єднання, і вам слід добре поїхати. Можливо, вам доведеться скинути з’єднання, вибравши його в меню індикатора після зміни налаштувань.


1

Я вважаю, що якщо змінити його під керівником мережі, його зміни зберігаються.

Наприклад, використовувати eth0

Менеджер мережі -> Провідний -> Авто ет0 -> Налаштування ipv4.

Встановіть свій DNS-сервер на 8.8.8.8 та застосуйте.


У мене виникли проблеми з тим, щоб знайти щось, що називається "мережевий менеджер". Існує "Система - Адміністрація - Мережеві інструменти", але це не допомагає. Зрештою я виявив, що мені потрібні "Система - Налаштування - Мережеві з'єднання".
Вім Коен

1
На панелі є значок мережевого менеджера (той, що відображає стан вашої мережі), який можна редагувати з'єднання правою кнопкою миші.
Марсель Стімберг

Це не працює
користувач568021

0

Використання терміналу

Вам потрібно відредагувати /etc/resolv.confфайл, щоб встановити ІР-адресу сервера імен, на яку повинен запитувати резолютор. Можна визначити до 3-х IP-адрес сервера імені. Якщо є декілька серверів, бібліотека резолюцій запитує їх у вказаному порядку.

По-перше, наберіть

sudoedit /etc/resolv.conf

Додайте IP-адресу бажаного DNS-сервера наступним чином:

nameserver <preferred-ip1>
nameserver <preferred-ip2>
nameserver <preferred-ip3>

взято з: http://www.cyberciti.biz/faq/ubuntu-linux-configure-dns-nameserver-ip-address/


6
Зауважте, що якщо сервери імен встановлені через DHCP, вони /etc/resolv.confбудуть перезаписані. Тому такий підхід підходить лише для машин з ручною мережевою конфігурацією. Технічно ви можете зробити це, chattr +i /etc/resolv.confщоб файл не був змінений (я це робив років тому), але найкращим способом для більшості машин був би підхід jrg у своїй відповіді: askubuntu.com/a/90263/13398 .
Скотт Северанс

@ScottSeverance Що це у системи не було X
Amith KK

У цьому випадку це, мабуть, сервер із налаштованими вручну мережами, і в цьому випадку ваша відповідь цілком доречна. Але більшість машин Ubuntu працює на X і може легко впоратися з іншим підходом. Якщо машина не працює на X, але у неї встановлений відповідний графічний інтерфейс, ви також можете запустити графічні інструменти через SSH, використовуючи ForwardX11=yes.
Скотт Северанс

6
Якщо ви збираєтесь спробувати вручну відредагувати файл /etc/resolv.conf, правильний спосіб зробити це (щоб він не був перезаписаний) - встановити пакет "resolutionvconf", а потім відредагувати або / etc / resolutionvconf / resolutionv. conf.d / head або /etc/resolvconf/resolv.conf.d/tail.
Azendale

0

Для безголових серверів, де немає X, а управління здійснюється через ssh чи будь-що інше, необхідне рішення командного рядка. Якщо resolutionv.conf не буде перезаписано, то це правильне місце для зміни серверів імен.

Якщо resolv.conf робить перезаписан то, по крайней мере 14.04LTS, файли для редагування є:

  • /etc/resolvconf/resolv.conf.d/head
  • /etc/resolvconf/resolv.conf.d/tail

Я настійно пропоную розмістити рядки коментарів у такі файли, щоб вони з’явились у створеному файлі (/etc/resolve.conf), і ви зможете їх знайти в майбутньому. Я починаю і закінчую кожен файл однорядним коментарем форми:

  • # ====== почати /etc/resolveconf/resolv.d/tail ======
  • # ====== кінець /etc/resolveconf/resolv.d/tail ======

і помістити між ними відповідні директиви.


0

Я виявив, що додаючи рядок dns-nameserver ipдо файлу інтерфейсів, встановивши параметри ipv4 для дротового з'єднання лише на автоматичні (DHCP) налаштування та ввівши IP-адресу та доменне ім’я сервера DNS. Також додавання локального IP-адреси DNS до статичного розділу DNS-маршрутизатора змушує NetworkManager включати цю локальну адресу у resolv.confфайл, який він перезаписує, та іншу інформацію, отриману з маршрутизатора. Схоже, що все разом робить локальну роздільну здатність імені DNS стійкою - напрочуд складною задачею. Моя потреба в локальному DNS полягає в монтажі клієнта Linux до спільної частини Samba за допомогою mount.cifsмережі, що обслуговується DHCP.


0

Якщо Network-Managerзупинено і /etc/resolvconf/resolv.conf.d/baseналаштовано.

Можливо resolvconf --enable-updates, корисно.


0

Ви можете змінити налаштування DNS IPv4 графічним способом, як відповів тут

Але якщо вам цікаво, як зробити те ж саме, використовуючи командний рядок, вам доведеться перерахувати файли в /etc/NetworkManager/system-connectionsкаталозі з lsкомандою:

ls /etc/NetworkManager/system-connections

Повинен бути файл із назвою вашого з'єднання, моє викликається Wired Connection 1.

Тому нам потрібно відредагувати файл і додати в нього DNS-сервери:

Sudo nano "/etc/NetworkManager/system-connections/Wired connection 1"

Додайте в [ipv4]розділ стільки серверів DNS, скільки вам подобається, і розділіть їх крапками з комою, ;а також поставте в ;кінці останнього сервера DNS, як це:

[ipv4]
dns=1.1.1.1;8.8.8.8;9.9.9.9;

Ви можете просто видалити цей рядок, якщо не хочете призначити будь-який dns.

Також ви повинні додати цей рядок, ignore-auto-dns=trueщоб ігнорувати надані DHCP сервери DNS (як, наприклад, сервер DNS, встановлений у конфігурації маршрутизатора):

[ipv4]
dns=1.1.1.1;8.8.8.8;9.9.9.9;
ignore-auto-dns=true

Трохи контексту до цієї відповіді: я намагався з’ясувати, який файл редагується, коли я додаю DNS-сервер у налаштуваннях DNS GUI, тому я виконував цю команду протягом 16 годин: sudo grep -rs "1.1.1.1" /яка сканувала всі файли на моїй віртуальній машині Ubuntu але це так і не закінчилося навіть після запуску так довго, але я знав, що можливо, що файл може існувати, /etc/NetworkManagerтому я grepзнову запустив вказівку на цей каталог і виявив це: /etc/NetworkManager/system-connections/Wired connection 1:dns=1.1.1.1;тому я повернувся сюди, щоб написати відповідь, лише щоб дізнатися, що Лекенштейн вже мав на це вказував коментар до прийнятої відповіді .

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