Як зробити адресу сервера імен постійною в /etc/resolv.conf?


14

Я не можу зберегти адресу сервера імен, яку я встановив через /etc/resolv.conf. Кожен раз, коли я встановлюю значення, менеджер мережі переосмислює його за допомогою шлюзу за замовчуванням при перезавантаженні.

Як це правильно встановити?

Я вважаю за краще інший спосіб, ніж зміна сервера імен в маршрутизаторі.


Потрібно змінити його на NetworkManager(як це зазначено в першому рядку). Цей файл знову генерується при кожному завантаженні NetworkManager. Як отримати доступ до цього, залежить від вашого Linux-дистрибутива (про який ви не згадували) NetworkManager.
Рік

Відповіді:


13

Це залежить. Прочитайте до кінця.

Якщо у вас не встановлено пакет Resolconf для пакета , це легко: змінивши його так, як вам подобається, видайте команду

 sudo chattr +i /etc/resolv.conf

Команда змінює атрибути файлу, роблячи його immutable(опція + i).

Однак якщо у вас встановлений пакет Resolvconf, файл /etc/resolv.conf може бути перетворений у символічне посилання,

 # file /etc/resolv.conf
 /etc/resolv.conf: symbolic link to `../run/resolvconf/resolv.conf'

що є файлом у віртуальній файловій системі, епітомія непостійної версії. Найсмішніше те, що ви можете не знати, що у вас встановлено резолконф, оскільки останні версії ОС, схожі на Debian, поставляються з ним заздалегідь. Ви можете встановити, чи встановив ваш дистрибутив для вас, видавши команду:

 #whereis resolvconf
 resolvconf: /sbin/resolvconf /etc/resolvconf /lib/resolvconf /usr/share/man/man8/resolvconf.8.gz

Навіть найголовніше, ви можете встановити, чи було ваше /etc/resolv.confперетворене на посилання за допомогою команди (file /etc/resolv.conf) вище. Якщо відповідь є ASCII text, використовуйте chattr, інакше ...

Якщо ви використовуєте статичний IP-адресу, найпростішим є додавання наступного рядка (або якогось такого)

 dns-nameservers 8.8.4.4 8.8.8.8

до строфи, що визначає властивості статичного інтерфейсу в / etc / network / інтерфейсах.

Якщо ви замість цього перебуваєте на ноутбуці, який весь час підключається до різних мереж, ви можете слідувати LawrenceCчудовій пропозиції. Але якщо у вас в системі Resolconf , правильним (і найпростішим) способом забезпечення фіксованого набору DNS є використання файлів у /etc/resolvconf/resolv.conf.d . Зокрема, використовуються такі файли (див . Сторінку Стефана Грабера ):

база : використовується, коли інших даних не знайти

head : Застосовується для заголовка rezolu.conf, може використовуватися для того, щоб сервер DNS завжди був першим у списку

хвіст : Будь-який запис у хвіст додається в кінці отриманої резолюції.conf.

Тож покладіть улюблених серверів імен в голову , як слід

  nameserver 8.8.8.8

і ви закінчили.


2
@dhiller Ultrasawblade змінив ім'я на LawrenceC, це нижче.
MariusMatutiae

Дуже приємний та цікавий пост, я хотів би додати деякі посилання на документацію на цю тему для користувачів, які хочуть дізнатися більше про цю тему, Thx
Philippe Gachoud

/etc/resolvconf/не існує за замовчуванням на Ubuntu 18.04.
Дан Даскалеску

9

Додайте аналогічний рядок до /etc/dhcp/dhclient.confвикористання кореневого терміналу:

supersede domain-name-servers 74.122.198.48, 50.116.23.211;

Це призводить до того dhclient, що програма, яка видає запит DHCP і вносить зміни відповідно до того, що відповідь відповіла, замінити інформацію, отриману від сервера DHCP, вищевказаною перед внесенням змін.

Вище наведено два сервери OpenNIC DNS. Замініть за потребою будь-які сервери, які ви хочете використовувати.

Оскільки це відбувається щоразу, коли ви отримуєте інформацію про конфігурацію від DHCP, використовуйте dhclient -v eth0або будь-який інший інтерфейс, щоб оновити його і переглянути зміни.


1
Замість того, щоб просто переосмислити DNS (зазвичай маршрутизатор), наприклад, можна додати рядок prepend domain-name-servers 8.8.8.8. Це використовує DNS провайдера, коли він доступний.
Axel Latvala

3

Схоже, як згадував @Rik, що причина заміни DNS при перезавантаженні пов’язана з тим, що встановлений таким чином мережевий менеджер / утиліта. У Linux Mint, відповідно до знімка екрана, у мене метод IPv4 встановлений лише на автоматичні (DHCP) адреси. Потім ви можете ввести правильні налаштування в /etc/resolv.conf або в розділі серверів DNS. Пам’ятаю, в Ubuntu 13.04 мої сервери імен кілька разів змінювалися протягом тривалого періоду часу, але після того, як я насправді зайшов і відредагував їх у графічному інтерфейсі, все здалося стабільним звідти вперед.

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

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


3

Була така ж проблема, але я використовую статичну IP-адресу. Виправлення було лише додаванням dns в / etc / network / інтерфейси

iface eth0 inet static
    address [your ip>
    netmask [your netmask]
    network [your network]
    broadcast [your broadcast]
    gateway [your gateway]
    # dns-* options are implemented by the resolvconf package, if installed
    dns-nameservers [dns server1] [dns server2]
    dns-search [your domain]

Так, це виправляється, оскільки NetworkManager ігнорує інтерфейси, перелічені в /etc/network/interfaces. Гарний улов!
Іззі

1

Якщо ви використовували wicd, клацніть правою кнопкою миші значок та натисніть інформацію про з'єднання. Коли вікно відкриється, натисніть властивості того, до якого ви підключені.

Перевірте, чи використовується статичний DNS, і в рядку, де вказано DNS-сервер 1, введіть IP-адресу для DNS Google, 8.8.8.8а в рядку для DNS-сервера 2 введіть 8.8.4.4та натисніть «ОК».

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


0

Зламувати собі дорогу chattr +iчи подібне - це швидкий обхід у кращому випадку, і його слід уникати, коли це можливо (принаймні, на довгострокову - як сказано, це короткочасна робота, поки не знайдеш час для реального рішення) . Як уже зазначалося, це робота для NetworkManager, яка пропонує CLI, який ми можемо використовувати для цього:

# знайти, який інтерфейс налаштувати
nmcli пристрій
# вихід виглядає так:
# ПРИЄДНАННЯ ДЕРЖАВНОГО ТИПУ ПРИЛАДУ
# enp0s3 ethernet підключив мій офіс
# lo lobackback не керований -
# Від цього нам потрібне ПІДТРИМКА.

# Тепер додайте наші "пошукові домени":
nmcli-з'єднання модифікує мій офіс ipv4.dns-search example1.com
nmcli con mod my-office + ipv4.dns-search example2.com

# І наші сервери імен:
nmcli con змінити мій офіс ipv4.dns 213.73.91.35
nmcli con модифікувати мій офіс + ipv4.dns 87.118.100.175
# відмітьте "+" у другому рядку: додайте ще один,
#, а перший рядок замінює існуючий запис.
# ми могли це зробити за допомогою одного дзвінка:
nmcli con змінити мій офіс ipv4.dns "213.73.91.35 87.118.100.175"

# Добре, тепер давайте скажемо йому, щоб ігнорувати оновлення з сервера DHCP:
nmcli con змінити мій офіс ipv4.ignore-auto-dns так

# та застосуйте зміни до нашої конфігурації, що працює
nmcli con до мого офісу

Якщо ви використовуєте статичну IP-адресу, ви також можете використовувати рішення з відповіді kanelbolle .


0

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

Що працювало для мене, це просто перезаписати nameserverзначення у /etc/resolv.confкожному завантаженні. sudoвідредагуйте /etc/rc.localта додайте цей рядок:

 sed -i "s/nameserver 127.0.0.53/nameserver 8.8.8.8/" /etc/resolv.confsudo /etc/rc.local
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.