Вопрос или проблема
У меня есть маршрутизатор OpenWRT, который функционирует как точка доступа Wi-Fi для локальной сети. В настоящее время маршрутизация не используется.
IP-адрес интерфейса wlan0
на маршрутизаторе статически установлен на 192.168.120.1
. dnsmasq работает как служба, обеспечивая DHCP и DNS.
Моя цель – сделать так, чтобы веб-интерфейс маршрутизатора был доступен всем компьютерам в сети по адресу http://router.net
, вместо того чтобы дублировать 192.168.120.1
.
LuCI
, веб-интерфейс OpenWRT, кажется, предоставляет несколько вариантов для достижения этой цели.
1 Сеть -> DHCP & DNS -> Статические аренды
Моя первоначальная идея заключалась в том, что это для статических аренд для DHCP, но описание предполагает, что это также может позволить задавать имена хостов.
Статические аренды используются для назначения фиксированных IP-адресов и символических имен хостов клиентам DHCP.
Я ввел как MAC-адрес, так и IP-адрес wlan0
на маршрутизаторе вместе с желаемым именем хоста, но это не привело к тому, что я смог ping router_static_lease
с ноутбука в подсети.
2 Сеть -> DHCP & DNS -> Файлы Resolv и Hosts -> Дополнительные файлы Hosts
/etc/hosts на маршрутизаторе, и это должно было, благодаря dnsmasq, распределить это отображение ко всем компьютерам в подсети.
Это также не дало ожидаемого результата.
2 Сеть -> Имена хостов
Третий подход заключался в том, чтобы добавить запись в приведенную выше форму. Снова без успеха.
После настройки всех этих параметров я перезапускаю маршрутизатор и пытаюсь выполнить пинг с компьютера в подсети.
~$ ping router_static_lease
ping: router_static_lease: Имя или служба не известны
~$ ping router_hostnames
ping: router_hostnames: Имя или служба не известны
~$ ping router_etc_hosts
ping: router_etc_hosts: Имя или служба не известны
Выполнение dig
для этих команд предоставляет мало помощи, так как указывает на разрешение systemd.
~$ dig router_etc_hosts
; <<>> DiG 9.10.3-P4-Ubuntu <<>> router_etc_hosts
;; глобальные параметры: +cmd
;; Получен ответ:
;; ->>HEADER<<- операция: ЗАПРОС, статус: SERVFAIL, id: 22668
;; флаги: qr rd ra; ЗАПРОС: 1, ОТВЕТ: 0, АВТОРИТЕТ: 0, ДОПОЛНИТЕЛЬНЫЕ: 1
;; OPT PSEUDOSECTION:
; EDNS: версия: 0, флаги:; udp: 65494
;; СЕКЦИЯ ЗАПРОСА:
;router_etc_hosts. IN A
;; Время запроса: 841 мс
;; СЕРВЕР: 127.0.0.53#53(127.0.0.53)
;; КОГДА: Вт, 20 июня 2017 15:27:14 CEST
;; РАЗМЕР СООБЩЕНИЯ, полученного: 45
Однако выполнение ~$ systemd-resolve --status
показывает, что он пытается разрешить с правильным сервером 192.168.120.1
.
~$ systemd-resolve --status
Link 3 (wlp4s0)
Текущие области: DNS LLMNR/IPv4 LLMNR/IPv6
Установка LLMNR: да
Настройка MulticastDNS: нет
Настройка DNSSEC: нет
Поддержка DNSSEC: нет
DNS-серверы: 192.168.120.1
DNS-домен: lan
Мой вопрос в том, что я делаю не так и какой был бы правильный способ достижения этого?
Если вы знаете, как это сделать через командную строку, игнорируя веб-интерфейс, это также будет полезно.
У меня точно такая же конфигурация в лаборатории, и она хорошо работает. В этом случае вы используете dnsmasq, а не серверы bind, так что у вас есть только псевдоним, а не записи. Чтобы вы могли разузнать имена хостов, ваш маршрутизатор должен быть в разрешении DNS ваших гостей как DNS-сервер.
Ответ или решение
Чтобы расширить DNS на OpenWRT и разрешить локальные IP-адреса, вам необходимо убедиться, что правильно настроен ваша служба dnsmasq, которая предоставляет функции DHCP и DNS. Учитывая, что вы хотите получить доступ к интерфейсу маршрутизатора по адресу http://router.net, вместо ввода IP-адреса, вам нужно правильно настроить соответствующие записи.
Шаги для настройки DNS на OpenWRT:
-
Подготовка окружения:
- Убедитесь, что ваша конфигурация OpenWRT работает должным образом, и dnsmasq активно предоставляет DHCP и DNS.
- Ваш IP-адрес маршрутизатора: 192.168.120.1.
-
Добавление статического резерва:
- Пройдите в интерфейс LuCI (веб-интерфейс OpenWRT).
- Перейдите в раздел
Network -> DHCP and DNS -> Static Leases
. - Добавьте новую запись:
- MAC-адрес: MAC-адрес вашего маршрутизатора (можно найти в разделе
Status
или выполнивifconfig
в командной строке). - IP-адрес: 192.168.120.1.
- Hostname: router.net (или любое другое имя, которое вы хотите использовать).
- MAC-адрес: MAC-адрес вашего маршрутизатора (можно найти в разделе
Это должно обеспечить статическую привязку IP-адреса к имени, но, возможно, это не решит проблему с разрешением имени из-за особенностей конфигурации.
-
Настройка дополнительной конфигурации DNS:
- Зайдите в
Network -> DHCP and DNS -> Resolv and Hosts Files
. - В поле
Additional Hosts files
вы можете добавить строку:192.168.120.1 router.net
- Сохраните изменения и перезапустите dnsmasq, чтобы обновить настройки.
- Зайдите в
-
Проверка конфигурации:
- Убедитесь, что вы очистили кэш DNS на клиентском устройстве, с которого вы пытаетесь разрешить имя (например, запустите
sudo systemd-resolve --flush-caches
на Linux). - Попробуйте запустить команду
ping router.net
с устройства в той же локальной сети.
- Убедитесь, что вы очистили кэш DNS на клиентском устройстве, с которого вы пытаетесь разрешить имя (например, запустите
-
Проверка через командную строку:
- Если не удаётся решить имя через интерфейс, вы можете попробовать отредактировать
/etc/hosts
на вашем маршрутизаторе. Для этого:- Откройте SSH сессию на вашем маршрутизаторе.
- Введите команду
vi /etc/hosts
(илиnano
). - Добавьте строку:
192.168.120.1 router.net
- Сохраните файл и перезапустите dnsmasq, с помощью:
/etc/init.d/dnsmasq restart
- Если не удаётся решить имя через интерфейс, вы можете попробовать отредактировать
-
Проверка работоспособности:
- После выполнения вышеизложенных шагов, отправьте команду:
ping router.net
- Если всё настроено правильно, вы должны увидеть ответы от IP-адреса 192.168.120.1.
- После выполнения вышеизложенных шагов, отправьте команду:
Диагностика возможных проблем:
Если вы все еще не можете выполнить разрешение имени:
- Проверьте, правильно ли настроен DHCP-клиент вашего компьютера и получает ли он DNS-сервер 192.168.120.1.
- Убедитесь, что любые другие локальные или сетевые фильтры (например, свой DHCP-сервер) не мешают расшариванию DNS.
- Убедитесь, что файервол на OpenWRT или на вашем клиенте не блокирует запросы.
Таким образом, с соблюдением всех вышеуказанных шагов, вы сможете настроить OpenWRT на разрешение локальных IP-адресов, обеспечив доступ к интерфейсу маршрутизатора по удобному имени.