сервер ubuntu не дозволяє вирішувати імена локальних мереж


14

Трохи застряг тут.

У мене є 2 машини, які не можуть вирішити імена локальних мереж, якщо тільки немає конкретних записів у / etc / hosts

Але інші машини в локальній мережі можуть вирішувати імена хостів.

Моя локальна мережа:

  • 1 x маршрутизатор Cisco, запущений DD-WRT v24-sp2 з включеною DNSMasq. Я налаштував це за допомогою імен хостів та IP-адрес у своїй локальній мережі.
  • 1 x Kubuntu 12.10 (правильно вирішує всі імена хостів, якщо вони введені в DNSMasq на маршрутизаторі)
  • 2 x NAS (також правильно вирішувати всі імена)

  • 1 x Ubuntu Server 12.04 (це НЕ вирішує імена локальних хостів, якщо вони не введені в / etc / hosts)

  • 1 x XBMCLive (Dharma) (те саме - не вирішується, якщо записи не в / etc / hosts)

Як змусити останні 2 використовувати записи DNSMasq на маршрутизаторі? Кожна машина налаштована на використання маршрутизатора як сервера імен, і всі блоки правильно вирішують зовнішні адреси.

Спасибі.

ще трохи інформації:

поки на сервері, якщо я пінг іншого ПК (wstation)

$ ping wstation
PING wstation.local.domain (x.x.x.x) 

Якщо я тоді додаю .local

$ ping wstation.local
PING wstation.local.local.domain (x.x.x.x)

і безпосередньо

$ ping 10.0.0.4
PING 10.0.0.4 (10.0.0.4) 56(84) bytes of data.
64 bytes from 10.0.0.4: icmp_req=1 ttl=64 time=0.387 ms
64 bytes from 10.0.0.4: icmp_req=2 ttl=64 time=0.316 ms
64 bytes from 10.0.0.4: icmp_req=3 ttl=64 time=0.312 ms
64 bytes from 10.0.0.4: icmp_req=4 ttl=64 time=0.280 ms
64 bytes from 10.0.0.4: icmp_req=5 ttl=64 time=0.322 ms
^C
--- 10.0.0.4 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3998ms
rtt min/avg/max/mdev = 0.280/0.323/0.387/0.038 ms                                                                       

Я не знаю відповіді, і не знаю, чи це буде корисно, але якщо ви цього не знаєте ... Я виявив, що якщо я додав ".local" після назви машини, він якось знайдеться без необхідної конфігурації. Насправді мені це допомогло, бо я вказував адреси, але мені потрібно було змінювати записи, коли я додаватиму чи видаляти ОС, яку я використовував для тестування тощо. Але, вказуючи machinename.local, мені більше не потрібно було хвилюватися. Якщо ви знаєте, звідки це походить, сміливо скажіть мені. :)
Марті Фрід

1
Привіт Марти, дякую за вашу відповідь. Я додав додаткову інформацію до проблеми, щоб показати, що відбувається з .local
teracow

Відповіді:


15

Про поточний вихід

ping wstation
PING wstation.local.domain

Чітко вказує, що ваш ПК .local.domainдодає запити, що не належать до FQDN. Це щось неправильно налаштоване або принаймні неправильне у вашій налаштуваннях. (якщо ви фактично не використовуєте .local.domainсуфікс за призначенням)

Роздільна назва та періоди

Одне важливе, чого багато людей не знають, - це те, що повне ім’я завжди має закінчуватися крапкою ( .). Якщо ви його опустите, то машина спробує вирішити його в локальному домені пошуку (наприклад, mydomain.tld). Тож у такому випадку mypc.localстав би запит mypc.local.mydomain.tld. Щоб цього не допустити, запитайте з періодом.

Конфігурація Resolver

Тут має велике значення роздільна здатність конфігурації. У Ubuntu (і Debian) це налаштовано у файлі /etc/network/interfaces(якщо ви не працюєте з NetworkManager):

iface eth0 inet static
   address 192.168.3.3
   netmask 255.255.255.0
   gateway 192.168.3.1
   dns-nameservers 192.168.3.45 192.168.8.10
   dns-search foo.org bar.com                      # <-- these are the search domains

Вирішення імен в Linux також може бути здійснено іншими способами. Це не тільки те, що локальний DNS-сервер запитується про все це. Погляньте на свій /etc/nsswitch.confфайл для hostsконфігурації вирішення:

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4

Це означає, що файли спершу спробуються (це /etc/hostsфайл), потім mDNS і лише пізніше запитується реальний DNS-сервер. mDNS реалізований за допомогою Avahi в Linux і називається Bonjour на пристроях Apple. Він використовує .localсуфікс за замовчуванням і працює через широкомовні повідомлення. Начебто ARP працює, але тоді для DNS.

Усі ці системи можуть бути дуже заплутаними і навіть більше при використанні .localв звичайній установці DNS, змішаній з пристроями mDNS. Я думаю, що саме тому ви зараз плутаєтесь, чому один пристрій працює, а інший - не всі вони використовують один і той же метод вирішення.

Щоб розібратися з речами

  • Уникайте використання, якщо .localви не хочете повністю покластися на mDNS. З вашого запитання я розумію, що ви хочете тримати налаштування себе на центральному місці, тому мій підхід тут полягає у тому, щоб уникнути цього.
  • Налаштуйте локальний DNS-сервер (у вашому випадку пристрій DD-WRT) для використання спеціального доменного імені, наприклад my.home. Для dnsmasq це єдине налаштування, але в звичайних налаштуваннях це слід налаштовувати як на DNS-сервері, так і на сервері DHCP (як це оголошується через DHCP).
  • Налаштуйте всі ПК на простому та унікальному імені хоста. Вони використовують це у своєму запиті на DHCP, і це використовується у dnsmasq, який працює на вашому маршрутизаторі для їх вирішення. Крім того, налаштуйте їх вручну, щоб не потрібно покладатися на DHCP.
  • Видаліть будь-яку конфігурацію, що залишилася, /etc/resolv.confна випадок, якщо ви раніше з нею спіткали
  • Налаштуйте ПК у вашій мережі для використання my.homeв якості домену локального пошуку. Це можна зробити через DHCP автоматично або якщо використовувати статичні адреси через /etc/network/interfacesфайл або в Менеджері мереж:

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

  • Тепер повинні працювати як просте розв’язання імен ( ping hostname), так і повне ім'я ( ping hostname.my.home).

5
Оце Так! Дивовижна відповідь gertvdijk! Дуже всебічно. Настільки, що мені знадобиться трохи часу, щоб зрозуміти, що ти сказав. Я можу сказати, що я протестував пінг із крапкою після імені хоста, і він працював правильно. Я не використовую DHCP у цій локальній мережі для постійних машин. Я ніколи не налаштовував параметри .local на будь-якій машині, тому що не розумів, про що це. Я вивчу це далі відповідно до ваших інструкцій і повернуся до вас.
teracow

Спасибі за цю вичерпну відповідь. Я змінив /etc/nsswitch.conf, щоб спробувати DNS перед mDNS files mdns4_minimal [NOTFOUND=return] dns mdns4. Тепер все поводиться більше так, як я очікував зі своїми (погано названими) машинами host.foo.local, адресованими. До цього зміни ping hostnameне спрацювали, але ping hostname.foo.localбули невдалими. Я дуже заплутався, коли dig hostnameне вдавався & dig hostname.foo.localповертав результат, протилежний тому, що я очікував. Тепер я можу пінг-файли FQDN, як я очікував. Чи є мінус у встановленні порядку таким чином?
TafT

1

На основі відповіді gertvdijk я просто прокоментував рядок у nsswitch.conf

sudo vim /etc/nsswitch.conf

.
.
.
hosts:          files dns # mdns4_minimal [NOTFOUND=return] dns

0

У мене виникли подібні проблеми з / etc / hosts, що містять кілька пробілів між IP та ім'ям хоста, замість цього використовую TAB. Після зміни на TAB ім'я хоста можна було вирішити за допомогою ping.

127.0.0.1        test.local
         ^^^^^^^^ → Should be a TAB not multiple spaces.

дивіться також на /superuser//a/938366/467479


3
Вибачте, це НЕ правильно. Файл хостів буде працювати з пробілами або вкладками. Крім того, у 127.0.0.1 спочатку повинен бути localhost, а потім localhost.localdomain - і залежно від вашого налаштування, ім'я хоста машини. (У деяких налаштуваннях, Ubuntu / Debian, якщо ви вказали ім'я хоста на рядку 127.0.1.1), я б не рекомендував встановлювати будь-які .local адреси у файлі хостів, хоча вони суперечать mDNS / Avahi
The Dude

1
Якщо у вашому домені є машини Windows, очевидно, він використовує одноадресний DNS, який не сумісний з реалізаціями mDNS Avahi або Zeroconf. Крім того, перевірте /etc/nsswitch.conf, щоб побачити, чи не відбувається він після mdns4_minimal [NOTFOUND = return] або повного пошуку mdns4 (перемістіть його назад). Крім того, не налаштовуйте жодні DNS-сервери для використання .local домену, оскільки роздільні пристрої mDNS / sd-DNS маскуватимуть пошуки до цього домену. Для внутрішнього TNS DNS використовуйте .lan, .work, .home тощо (але НЕ один із нових TLD, наприклад .biz, .xyz, .web тощо). Успіхів і ласкаво просимо у світ веселості DNS-резолюції.
Чувак
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.