Дозвіл імені хоста Linux-машин з будь-якої ОС


2

Це все в локальній мережі:

  • У мене є маса машин Linux (я називаю ці кінцеві точки), які отримують свої IP-адреси від сервера DHCP, який я не контролюю.
  • Я не контролюю нашу внутрішню DNS
  • Однак я керую сервером Ubuntu зі статичним IP-адресою та відомим ім'ям: ubuntu.domain.com

Я хочу мати доступ до цих машин за їх іменами хостів або hostname.ubuntu.domain.com.

Або мені потрібно повідомити наш сервер DNS про ці імена хостів, з’ясувати, які послуги з вирішення імен уже доступні (пінг-пам’яті Windows або Linux вирішуються в IP-адресі відкритих, що неправильно), налаштуйте службу, як dnsmasq, або скористайтеся динамічним веб-сайтом DNS (не ідеально для цієї переважно закритої мережі)

З dnsmasq виглядає так, що мені потрібно встановити кожну машину для отримання IP-адреси від ubuntu.domain.com. Я не хочу цього робити. Я повинен підтримувати поточну ситуацію з DHCP. Хтось був би злий, якби наші DHCP запити пройшли через мою власну машину.

Чи можна пересилати DHCP-запити від dnsmasq до мого постачальника послуг DHCP за замовчуванням?

Якось кожній машині потрібно повідомляти ubuntu.domain.com про свою пару (ім'я хоста, IP).

Я хочу уникати будь-яких змін, окрім названих кінцевих точок, щоб використовувати ubuntu.domain.com як джерело DNS, тому схема hostname.ubuntu.domain.com здається хорошою. Я не знаю, чи можливо це навіть можливо.

TLDR: Як легко вирішувати імена хостів Linux?

Відповіді:


1

Ви можете вибрати свою IP-адресу від DHCP, як це робите зараз, але перекрийте DNS-сервери, щоб вони вказували на ubuntu.domain.com

Потім встановіть bind на ubuntu.domain.com та встановіть зону для ubuntu.domain.com, яка приймає реєстрації з локальної мережі. Встановіть прив'язку на ubuntu.domain.com, щоб він пересилав будь-який запит DNS для зон, для яких він не є авторитетним для поточних серверів DNS.

Щоб замінити сервери імен, редагуйте /etc/dhclient.confта додайте

supersede domain-name-servers <ubuntu server ip>;

Для реєстрації імені хоста ПК на сервері DNS також додайте:

supersede domain-name "ubuntu.domain.com";
send host-name "hostname.ubuntu.domain.com";

Щоб дозволити реєстрацію зон прив’язати на ubuntu.domain.com, додайте це до розділу параметрів у /etc/bind/named.conf.options. Також додайте експедиторів для неавторитетних зон:

options {
    allow-update { <your network>/<your subnet mask> (eg 192.168.1.0/24); };
    forwarders { <current dns server>; <current dns server>; };
};

Тоді вам потрібно буде визначити зону в /etc/bind/named.conf.local:

zone "ubuntu.domain.com" {
    type master;
    file "/etc/bind/pri/db.ubuntu.domain.com";
};

Файл зони /etc/bind/pri/db.ubuntu.domain.comбуде виглядати приблизно так

$ORIGIN .
$TTL 604800     ; 1 week
ubuntu.domain.com      IN SOA  ubuntu.domain.com. dns.ubuntu.domain.com. (
                            260        ; serial
                            604800     ; refresh (1 week)
                            86400      ; retry (1 day)
                            2419200    ; expire (4 weeks)
                            604800     ; minimum (1 week)
                            )
                    NS      ubuntu.domain.com.
                    A       <ip address of ubuntu.domain.com>
 }

До Aцього файлу будуть додані додаткові записи для реєстрації хостів.

Отже, послідовність така

  1. dhclient запитає IP від ​​поточного сервера DHCP
  2. dhcp-сервер відповідає IP, шлюзом та DNS
  3. dhclient приймає IP-шлюз і шлюз і переосмислює dns на ubuntu.domain.com
  4. dhclient реєструє ім'я хоста за допомогою ubuntu.domain.com dns
  5. Запити DNS переходять на ubuntu.domain.com - якщо вони знаходяться в зоні ubuntu.domain.com, вони вирішаться локально, інакше переслати на поточні сервери DNS

Дякую. Якщо я хочу шукати з машини, яка не може змінити свої мережеві налаштування, я думаю, я можу використовувати ім'я хоста nslookup ubuntu.domain.com.
Кіт

@Cat Так, це, я не бачу способу, як ви можете змусити це працювати автоматично, не маючи кореневого доступу.
Пол

2

Якщо ви хочете вирішити імена з будь-якої адреси, найкраще зробити це ввести їх у DNS. Часто сервер DHCP реєструє ім'я, яке використовує ваш хост, коли він запитує IP-адресу. У більшості випадків це має бути некваліфіковане ім’я хоста. Це часто відключається в конфігурації клієнта DHCP. Потім він повинен з’являтися в місці, яке можна вирішити за допомогою списку пошуку, наданого DHCP.

DNSMasq можна налаштувати на використання серверів DNS, наданих DHCP. Я вважаю, що конфігурація за замовчуванням на Ubuntu автоматично керуватиме конфігурацією.

Імена, які ви використовуєте, повинні відповідати ієрархії DNS організації, з якою ви працюєте.

Для серверів потрібно мати доступ віддалено, кращим рішенням є використання статичної IP-адреси. Для цього потрібна координація з адміністраторами мережі та DNS.

EDIT: Якщо у вас робота без підтримки адміністраторів, ви можете створити файл / etc / hosts на одному сервері і використовувати dnsmasq як основний DNS-сервер для всіх серверів, які потрібно координувати. Файл / etc / hosts повинен працювати, оскільки ваш DHCP, швидше за все, дасть вам статичні адреси.

Якщо ваші IP-адреси динамічні, можливо, вам знадобиться встановити механізм для хостів, щоб зареєструвати зміни IP-адреси. Для цього клієнт DHCP має гачки. Хитрість полягає в тому, щоб дізнатися, де зареєструватися, коли зміниться IP-адреса. Повідомлення клієнтів (інших серверів) може бути найпростішим рішенням. Процеси, що роблять це, можуть бути непривілейованими (некореневими). Якщо так, то dnsmasq слід налаштувати з альтернативним файлом хостів.

Іншою альтернативою було б використання avahi, щоб сервери могли виявити один одного. Його можна налаштувати для доменів, відмінних від локальних.


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