В дополнение к ответу Yamakaja, это то, как вы настраиваете локальный DNS-сервер.
Во-первых, вам нужен компьютер, на котором вы хотите запустить DNS-сервер. Это может быть один из ваших обычных компьютеров (если они работают под управлением Linux и в большинстве случаев) или, например, Raspberry Pi. Преимущества такого устройства в том, что оно дешевое, не требует много энергии и мало.
Настройка DNS-сервера
Я решил настроить DNS-сервер на Raspberry Pi, используя dnsmasq
, небольшой инструмент DNS-сервера, идеально подходящий для использования в небольших сетях. Вы также можете использовать bind
, де-факто стандартный инструмент DNS, но это, вероятно, слишком сильно для небольшой домашней сети.
Установите dnsmasq
с помощью менеджера пакетов в системах на основе Debian (например, Распбиан), команда будет
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-сервер. Как видите, все хорошо.
(Необязательно) Указание ДВУ
Если вы хотите получить доступ к устройствам не только через 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
(если вам это интересно):