Вопрос: Можно ли с помощью встроенного DNS-сервера в Keenetic настроить автоматическое сопоставление hostname и IP-адреса в DHCP-запросе? Это нужно для того, чтобы с хостов локальной сети можно было обратиться к любому другому хосту по сетевому имени, а не по IP-адресу, который может меняться при динамическом назначении и при отсутствии привязки к определенному IP. Например, указать в адресной строке проводника Windows "\\server" и увидеть список общих папок на сервере.
Ответ: Да, это можно настроить средствами интернет-центра Keenetic. Данная настройка не касается организации выделенного WINS-сервера, она может быть выполнена с помощью специальных команд роутера из интерфейса командной строки (CLI).
В Keenetic можно включить возможность добавлять статические записи в DNS-прокси при выдаче DHCP-адресов. По умолчанию эта функция отключена. Для включения используется команда:
(config)> ip dhcp pool _WEBADMIN update-dns
где _WEBADMIN — по умолчанию название пула для интерфейса Home, но у пользователя имя может отличаться, если он его ранее менял в системе. Посмотреть точное имя пула можно в файле self-test.txt
И команда для сохранения настроек:
(config)> system configuration save
В этом случае будет возможен доступ к хостам (или терминалам) по hostname, которые заданы по умолчанию. В качестве имени используется имя хоста из DHCP-запроса.
NOTE: Важно! После включения этой команды, она будет распространяться на вновь подключенные к роутеру устройства по DHCP. Мы рекомендуем перезагрузить роутер по питанию, после выполнения указанной выше настройки.
На компьютере с ОС Windows, перед проверкой обращения к сетевому устройству по имени хоста, выполните команду для очистки кэша DNS (её нужно выполнить в командной строке Windows):
ipconfig /flushdns
После проверьте автоматическое распознавание сетевых имен хостов в локальной сети роутера с помощью пинга.
Покажем на примере. Предположим, в сети есть компьютер и ноутбук, на которых соответственно используются имена хостов "PC" и "Notebook" (например, в вашей сети это может быть сервер с hostname "SERVER").
Выполним включение в роутере указанной выше команды и перезагрузим устройство.
С ноутбука выполним команду ping pc для пинга компьютера.
Указав в адресной строке Проводника Windows адрес \\pc можно будет увидеть список общедоступных сетевых ресурсов.
Теперь с компьютера выполним командой ping notebook пинг ноутбука.
Как мы видим, автоматически срабатывает сопоставление hostname и IP-адреса.
Помимо включения механизма сопоставления hostname и IP-адреса в DHCP-запросе, можно настроить автоматическое присвоение хостам локальной сети определенного имени домена в DHCP-запросах. Подробная информация представлена в инструкции "Настройка DHCP Option 15".
NOTE: Важно! Keenetic отрабатывает доступ по параметру hostname. В веб-конфигураторе на странице "Список клиентов" можно задать и изменить другой параметр — name. В CLI роутера по команде show ip dhcp bindings _WEBADMIN видно, что это два разных поля:
Когда хост регистрируется в "Списке клиентов", то поле hostname копируется в name и они в этом случае одинаковые. Но как только пользователь меняет название хоста на странице "Список клиентов", это изменение записывается в поле name и по этому имени не будет сопоставления доменного имени и IP-адреса. Потребуется в CLI добавлять ещё одну запись DNS нужному хосту с помощью команды ip host или изменить параметр hostname непосредственно на хосте.
Примечание
Если не задано имя на хосте или терминале по умолчанию, то можно задать его в Keenetic с помощью команды ip host.
Для этого нужно сделать следующее:
Зарегистрировать на интернет-центре и присвоить постоянный IP-адрес необходимому хосту. Регистрацию можно выполнить в веб-конфигураторе на странице "Список клиентов". После регистрации указанное устройство будет постоянно получать один и тот же IP-адрес от интернет-центра.
Далее подключиться к интерфейсу командной строки (CLI) интернет-центра и выполнить следующие команды:
(config)> ip host <доменное_имя_хоста> <адрес>
(config)> system configuration save
Доменное имя хоста рекомендуем указать в формате доменных имен 2-го уровня* в виде localhost.localdomain (например: my.comp, test.local, host.test, pc.example).
(config)> ip host my.comp 192.168.1.33
Dns::Manager: Added static record for "my.comp", address 192.168.1.33.
(config)> system configuration save
Core::ConfigurationSaver: Saving configuration...
С помощью указанных команд мы добавили доменное имя хоста и IP-адрес в таблицу DNS на роутере. В нашем примере my.comp – доменное имя хоста с IP-адресом 192.168.1.33.
* — Рекомендация в команде ip host использовать имя хоста в формате доменных имен 2-го уровня связана с особенностью работы ОС Windows. При обращении к доменным именам 1-го уровня система отправляет LLMNR (Link-Local Multicast Name Resolution) запрос или NBNS (NetBIOS Name Service) в случае отключения LLMNR, и при проверке связи пингом хост не будет обнаружен. Поэтому для корректной работы в Windows рекомендуется использовать доменные имена 2-го уровня в записях ip host.
Теперь в локальной сети интернет-центра Keenetic можно будет обращаться к нужному хосту/терминалу по доменному имени.
Выполним пинг хоста по доменному имени в ОС Windows:
C:\Users\User> ping -n 5 my.comp
Обмен пакетами с my.host [192.168.1.33] с 32 байтами данных:
Ответ от 192.168.1.33: число байт=32 время<1мс TTL=128
Ответ от 192.168.1.33: число байт=32 время<1мс TTL=128
Ответ от 192.168.1.33: число байт=32 время<1мс TTL=128
Ответ от 192.168.1.33: число байт=32 время<1мс TTL=128
Ответ от 192.168.1.33: число байт=32 время<1мс TTL=128
Статистика Ping для 192.168.1.33:
Пакетов: отправлено = 5, получено = 5, потеряно = 0
(0% потерь)
Приблизительное время приема-передачи в мс:
Минимальное = 0мсек, Максимальное = 0 мсек, Среднее = 0 мсек
Выполним пинг хоста по доменному имени в ОС Linux:
[comp@comp-lnx ~]$ ping -c 5 my.comp
PING my.host (192.168.1.33) 56(84) bytes of data.
64 bytes from 192.168.1.33 (192.168.1.33): icmp_seq=1 ttl=128 time=0.342 ms
64 bytes from 192.168.1.33 (192.168.1.33): icmp_seq=2 ttl=128 time=0.508 ms
64 bytes from 192.168.1.33 (192.168.1.33): icmp_seq=3 ttl=128 time=0.331 ms
64 bytes from 192.168.1.33 (192.168.1.33): icmp_seq=4 ttl=128 time=0.427 ms
64 bytes from 192.168.1.33 (192.168.1.33): icmp_seq=5 ttl=128 time=0.414 ms
--- my.host ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 56ms
rtt min/avg/max/mdev = 0.331/0.404/0.508/0.066 ms
NOTE: Важно! Если до хоста не доходят пакеты ICMP Echo-Request в утилите Ping, необходимо проверить настройку разрешающего правила фильтрации брандмауэра (firewall) на стороне хоста для протокола ICMP (Internet Control Message Protocol).
NOTE: Важно! Данная схема будет работать только в том случае, если на хостах локальной сети в качестве предпочитаемого DNS-сервера установлен IP-адрес интернет-центра Keenetic.
В интернет-центрах Keenetic можно добавить до 64 записей с помощью команды ip host
Посмотреть все статические dns-записи команды ip host можно в системном файле конфигурации роутера startup-config.txt или по команде show dns-proxy (при выводе этой команды отображается много другой информации, помимо статических dns-записей).