Обращение к сетевому устройству по hostname
Вопрос: Можно ли с помощью встроенного 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-запроса.
Важно
После включения этой команды, она будет распространяться на вновь подключенные к роутеру устройства по DHCP. Мы рекомендуем перезагрузить роутер по питанию, после выполнения указанной выше настройки.
На компьютере с ОС Windows, перед проверкой обращения к сетевому устройству по имени хоста, выполните команду для очистки кэша DNS (её нужно выполнить в командной строке Windows):
ipconfig /flushdns
После проверьте автоматическое распознавание сетевых имен хостов в локальной сети роутера с помощью команды ping
.
Покажем на примере. Предположим, в сети есть компьютер и ноутбук, на которых соответственно используются имена хостов 'PC
' и 'Notebook
' (например, в вашей сети это может быть сервер с hostname 'SERVER
'). Выполним включение в роутере указанной выше команды и перезагрузим устройство. С ноутбука выполним команду ping pc
для пинга компьютера.

Указав в адресной строке Проводника Windows адрес \\pc
, можно будет увидеть список общедоступных сетевых ресурсов.

Теперь с компьютера выполним командой ping notebook
пинг ноутбука.

Как мы видим, автоматически срабатывает сопоставление hostname
и IP-адреса
.
Помимо включения механизма сопоставления hostname и IP-адреса в DHCP-запросе, можно настроить автоматическое присвоение хостам локальной сети определенного имени домена в DHCP-запросах. Подробная информация представлена в инструкции 'Настройка DHCP Option 15'.
Важно
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 <host_domain_name> <address>
(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
Pinging my.host [192.168.1.33] with 32 bytes of data:
Reply from 192.168.1.33: bytes=32 time=57ms TTL=64
Reply from 192.168.1.33: bytes=32 time=5ms TTL=64
Reply from 192.168.1.33: bytes=32 time=5ms TTL=64
Reply from 192.168.1.33: bytes=32 time=83ms TTL=64
Reply from 192.168.1.33: bytes=32 time=5ms TTL=64
Ping statistics for 192.168.1.33:
Packets: Sent = 5, Received = 5, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 5ms, Maximum = 83ms, Average = 31ms
Выполним пинг хоста по доменному имени в ОС 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
Важно
Если до хоста не доходят пакеты ICMP Echo-Request в утилите Ping, необходимо проверить настройку разрешающего правила фильтрации брандмауэра (firewall) на стороне хоста для протокола ICMP (Internet Control Message Protocol).
Данная схема будет работать только в том случае, если на хостах локальной сети в качестве предпочитаемого DNS-сервера установлен IP-адрес интернет-центра Keenetic.
В интернет-центрах Keenetic можно добавить до 64
записей с помощью команды ip host
.
Посмотреть все статические dns-записи команды ip host
можно в системном файле конфигурации роутера startup-config.txt или по команде show dns-proxy
(при выводе этой команды отображается много другой информации, помимо статических dns-записей).