7

Я создаю небольшое устройство под управлением Linux с веб-сервером на нем. Я хочу, чтобы это было подключи и играй, подключайся к сети и получай доступ к ней, используя абстрактное имя.

Можно ли получить доступ к устройству, используя только его имя хоста?

1 ответ1

9

В некоторых сетях - да. Но в вашей повседневной сети TCP/IP имя хоста должно быть переведено на IP-адрес, иначе клиенты не будут знать, к чему подключаться.

Существует несколько существующих протоколов для поиска локальных имен:

  • Windows использует службы имен NetBIOS для разрешения имен хостов других компьютеров в той же локальной сети, используя широковещательные рассылки UDP. Ваш сервер должен будет запустить компонент nmbd в Samba, чтобы его можно было обнаружить с помощью NetBIOS.

    (Последние версии Windows также поддерживают LLMNR, который похож на mDNS, но имеет меньше функций и требует IPv6. В Linux systemd-resolved будет иметь клиент LLMNR. Понятия не имею о других операционных системах. Наверное, не стоит задумываться.)

  • OS X использует mDNS ("многоадресный DNS"), иногда известный как Bonjour, для тех же целей. (Обратите внимание, что mDNS обычно не разрешает имена хостов без изменений, как NetBIOS; вместо этого он ограничен доменом .local .) Для mDNS вашему серверу понадобится avahi-daemon .

    (Кроме того, Windows может разрешать имена mDNS, если установлен Bonjour (как правило, в составе iTunes), а OS X должна поддерживать NetBIOS, если включен "Общий доступ к файлам Windows" или аналогичная служба.)

  • Ориентированные на настольные системы системы Linux часто поставляются с предварительно настроенными преобразователями NetBIOS и mDNS. (То есть они запускают как nmbd и avahi-daemon , а также соответствующие модули glibc NSS в /etc/nsswitch.conf .)

  • Наконец, большинство "домашних маршрутизаторов" поддерживают локальный домен DNS (.lan , .home и т.д.) В соответствии с именами хостов, которые они получают из запросов DHCP, отправленных компьютерами в локальной сети. В зависимости от того, что использует ваш сервер, dhcpcd нужна опция « hostname », а dhclient использует « send host-name = gethostname() ».

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .