Окрім відповіді Yamakaja , саме так ви налаштовуєте локальний DNS-сервер.
По-перше, вам потрібен комп'ютер, на якому потрібно запустити DNS-сервер. Це може бути один із ваших звичайних комп'ютерів (якщо вони працюють під управлінням Linux і знаходяться в більшості випадків) або, наприклад, Raspberry Pi . Переваги такого пристрою полягають у тому, що він дешевий, не потребує великої потужності і невеликий.
Налаштування DNS-сервера
Я вирішив встановити DNS-сервер на Raspberry Pi, використовуючи dnsmasq
невеликий інструмент сервера DNS, ідеальний для використання в невеликих мережах. Ви також можете скористатися bind
стандартним інструментом DNS де-факто, але це, мабуть, занадто сильно для невеликої домашньої мережі.
Встановити dnsmasq
за допомогою менеджера пакунків в системах на базі Debian (наприклад, Raspbian) команда була б
sudo apt-get install dnsmasq
Тепер я припускаю, що ви вже встановили статичний розподіл IP-адрес (тобто IP-адреси, які ви згадуєте у своєму запитанні, не змінюються). Якщо ви цього не зробили, dnsmasq
можна також використовувати як сервер DHCP, але я ще цього не робив.
dnsmasq
вибирає імена хостів із /etc/hosts
. Відредагуйте цей файл так:
# IP address Host name
192.168.1.1 router
192.168.1.22 printer
Тепер ім'я хоста router
призначено192.168.1.1
, printer
для 192.168.1.22
.
Тепер ви створили свій власний DNS-сервер, але комп'ютери у вашій мережі ще не використовують його. Щоб змусити їх використовувати цей сервер, потрібно зробити один крок підготовки:
Знайдіть IP-адресу пристрою dnsmasq за допомогою ip address
(припустимо, це так 192.168.1.42
). Відкрийте /etc/dnsmasq.conf
і додайте наступні рядки:
listen-address=127.0.0.1
listen-address=192.168.1.42
Це говорить про те, що dnsmasq
він повинен слухати запити, коли вони звертаються або до них127.0.0.1
(тобто коли сам хоче використовувати свій DNS-сервер), або 192.168.1.42
(тобто коли інші комп'ютери хочуть використовувати його DNS-сервер).
Використання сервера DNS
Ви повинні сказати кожному комп'ютеру у своїй мережі, який він повинен (також) використовувати 192.168.1.42
як DNS-сервер. Те, як ви це зробите, залежить від вашої операційної системи. Ви можете легко знайти цю задану операційну систему в Інтернеті (просто пошукайте "Змінити DNS-сервер на <OS>" або щось подібне).
Для Windows 7 ви можете дотримуватися цього посібника: https://www.opennicproject.org/configure-your-dns/how-to-change-dns-servers-in-windows-7/ .
У моїй системі (Arch Linux) мені довелося додати наступний рядок до /etc/resolvconf.conf
name_servers=192.168.1.42
Зверніть увагу, що файл, який потрібно використовувати, залежить від конфігурації вашого менеджера мережі. Додайте IP-сервер DNS на кожен комп'ютер, на якому ви хочете використовувати свій DNS.
Можливо, вам доведеться перезапустити пристрої, якщо це не працює негайно.
Ось і все, ви закінчили. Тепер ви можете отримати доступ до всіх пристроїв, на яких ви входили /etc/hosts
на сервері dnsmasq, просто використовуючи ім'я хоста, яке ви вказали.
(Додатково) Перевірка функціональності
Якщо ви хочете перевірити, чи працює роздільна здатність DNS правильно, встановіть dnsutils
(Linux) у систему, яка повинна використовувати ваш сервер. Потім виконати
$ dig router
Це має повернути щось подібне
; <<>> DiG 9.10.4-P1 <<>> router
;; global options: +cmd
;; Got answer:
...
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;router. IN A
;; ANSWER SECTION:
router. 0 IN A 192.168.1.1
;; Query time: 14 msec
;; SERVER: 192.168.1.42#53(192.168.1.42)
;; WHEN: So Jun 26 10:43:18 CEST 2016
;; MSG SIZE rcvd: 50
Він показує вам ім'я хоста, яке ви хотіли вирішити, IP-адресу, яку він вирішив, і використовуваний DNS-сервер. Як бачите, все добре.
(Необов’язково) Вказання TLD
Якщо ви хочете отримати доступ до пристроїв не тільки з router
або printer
але router.home
і printer.home
додайте наступні рядки в /etc/dnsmasq.conf
:
expand-hosts # Tells dnsmasq to add a TLD to each host name
domain=home # The TLD
Можливо, вам доведеться знову перезапустити.
Джерела / подальше читання
Про dnsmasq
:
Про bind
(якщо вам це цікаво):