Обращение к сетевому устройству по 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-запроса.

NOTE: Важно! После включения этой команды, она будет распространяться на вновь подключенные к роутеру устройства по DHCP. Мы рекомендуем перезагрузить роутер по питанию, после выполнения указанной выше настройки.

На компьютере с ОС Windows, перед проверкой обращения к сетевому устройству по имени хоста, выполните команду для очистки кэша DNS (её нужно выполнить в командной строке Windows):

ipconfig /flushdns


После проверьте автоматическое распознавание сетевых имен хостов в локальной сети роутера с помощью пинга.

Покажем на примере. Предположим, в сети есть компьютер и ноутбук, на которых соответственно используются имена хостов "PC" и "Notebook" (например, в вашей сети это может быть сервер с hostname "SERVER").
Выполним включение в роутере указанной выше команды и перезагрузим устройство.
С ноутбука выполним команду ping pc для пинга компьютера.

ping-pc.png

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

share-pc.png

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

ping-notebook.png

Как мы видим, автоматически срабатывает сопоставление hostname и IP-адреса.

Помимо включения механизма сопоставления hostname и IP-адреса в DHCP-запросе, можно настроить автоматическое присвоение хостам локальной сети определенного имени домена в DHCP-запросах. Подробная информация представлена в инструкции "Настройка DHCP Option 15".

NOTE: Важно! Keenetic отрабатывает доступ по параметру hostname. В веб-конфигураторе на странице "Список клиентов" можно задать и изменить другой параметр — name. В CLI роутера по команде show ip dhcp bindings _WEBADMIN видно, что это два разных поля:

hostname-cli.png

device-name-web.png

Когда хост регистрируется в "Списке клиентов", то поле 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-записей).

 

Была ли эта статья полезной?

Пользователи, считающие этот материал полезным: 80 из 85