Способ разрешения имен netbios

Способ разрешения имен netbios

Разрешение имени NetBIOS — это процесс определения IP-адреса по имени NetBIOS.

Имя NetBIOS представляет собой 16-байтовый адрес, используемый для идентификации в сети ресурса NetBIOS. Имя NetBIOS может быть либо уникальным (эксклюзивным), либо групповым (неэксклюзивным). Когда процесс NetBIOS соединяется с конкретным процессом на конкретном компьютере, используется уникальное имя. Когда процесс NetBIOS соединяется с несколькими процессами на нескольких компьютерах, применяется групповое имя.

Примером процесса, использующего имя NetBIOS, является служба доступа к файлам и принтерам сетей Microsoft, работающая на компьютере с Windows XP Professional;. При запуске компьютера эта служба регистрирует уникальное имя NetBIOS, основанное на имени компьютера. Имя NetBIOS этой службы состоит из 15-символьного имени компьютера плюс 16-й символ с кодом 0x20. Если имя компьютера имеет длину меньше 15 символов, оно дополняется до этой длины пробелами.

При использовании имени компьютера для установки соединения с ним для совместного использования файлов служба доступа к файлам и принтерам для сетей Microsoft на указанном файловом сервере будет иметь соответствующее имя NetBIOS. Например, при попытке подключиться к компьютеру с именем CORPSERVER имя NetBIOS, соответствующее службе доступа к файлам и принтерам сетей Microsoft этого компьютера, будет следующим:

CORPSERVER [20]
Заметьте, что имя компьютера дополняется пробелами. Перед тем как будет установлено соединение для совместного использования файлов и принтеров, должно быть создано TCP-соединение. Для создания TCP-соединения необходимо разрешить NetBIOS-имя «CORPSERVER [20]» в IP-адрес.

Процедура, используемая для разрешения имен NetBIOS в IP-адреса, определяется типом узла NetBIOS. В документе RFC 1001 «Protocol Standard for a NetBIOS Service on a TCP/UDP Transport: Concepts and Methods» описаны типы узлов NetBIOS, вот они:

B-узел (broadcast — широковещание)
B-узел использует широковещательные запросы на регистрацию и разрешение имен NetBIOS. B-узел имеет два серьезных недостатка: (1) широковещательные запросы загружают все узлы сети и (2) маршрутизаторы обычно не передают широковещательные пакеты в другие сети, поэтому имена NetBIOS могут разрешаться только в локальной сети.

P-узел (peer-peer — равный с равным)
P-узел использует для разрешения имен NetBIOS сервер имен NetBIOS (NBNS), например WINS-сервер. P-узел не применяет широковещание; вместо этого он напрямую запрашивает сервер имен.

M-узел (mixed — смешанный)
M-узел — это комбинация B-узла и P-узла. По умолчанию M-узел работает в режиме B-узла. Если M-узел не может разрешить имя с помощью широковещательного запроса, он запрашивает сервер NBNS в режиме P-узла.

H-узел (hybrid — гибридный)
H-узел — это комбинация P-узла и B-узла. По умолчанию H-узел работает в режиме P-узла. Если H-узел не может разрешить имя с помощью сервера NBNS, он использует широковещание.

Компьютеры под управлением Windows Server 2003 по умолчанию работают в режиме B-узла и становятся H-узлами, когда на них настраивается WINS-сервер. Эти компьютеры могут также использовать для разрешения имен NetBIOS файл локальной базы данных — Lmhosts. Файл Lmhosts хранится в папке корневая_папка_системы\System32\Drivers\Etc. Дополнительные сведения см. в разделе Файлы базы данных TCP/IP.

Настоятельно рекомендуется указывать на компьютерах Windows IP-адрес WINS-сервера для разрешения удаленных имен NetBIOS. На компьютерах, использующих службу каталогов Active Directory (например, работающих под управлением Windows XP Professional; или Windows Server 2003), необходимо настроить IP-адрес WINS-сервера, если этим компьютерам требуется обмениваться данными с компьютерами под управлением Windows NT, Windows 95, Windows 98, Windows 2000 или Windows Millennium Edition, которые не используют Active Directory.

Читайте также:  Способ получения хлористого кальция

Дополнительные сведения о WINS см. в разделе Определение службы WINS.

В статье использователись материалы с сайта Microsoft.

Источник

[Конспект админа] Домены, адреса и Windows: смешивать, но не взбалтывать

В очередном «конспекте админа» остановимся на еще одной фундаментальной вещи – механизме разрешения имен в IP-сетях. Кстати, знаете почему в доменной сети nslookup на все запросы может отвечать одним адресом? И это при том, что сайты исправно открываются. Если задумались – добро пожаловать под кат. .

Для преобразования имени в IP-адрес в операционных системах Windows традиционно используются две технологии – NetBIOS и более известная DNS.

Дедушка NetBIOS

NetBIOS (Network Basic Input/Output System) – технология, пришедшая к нам в 1983 году. Она обеспечивает такие возможности как:

регистрация и проверка сетевых имен;

установление и разрыв соединений;

связь с гарантированной доставкой информации;

связь с негарантированной доставкой информации;

  • поддержка управления и мониторинга драйвера и сетевой карты.
  • В рамках этого материала нас интересует только первый пункт. При использовании NetBIOS имя ограниченно 16 байтами – 15 символов и спец-символ, обозначающий тип узла. Процедура преобразования имени в адрес реализована широковещательными запросами.

    Широковещательным называют такой запрос, который предназначен для получения всеми компьютерами сети. Для этого запрос посылается на специальный IP или MAC-адрес для работы на третьем или втором уровне модели OSI.

    Для работы на втором уровне используется MAC-адрес FF:FF:FF:FF:FF:FF, для третьего уровня в IP-сетях адрес, являющимся последним адресом в подсети. Например, в подсети 192.168.0.0/24 этим адресом будет 192.168.0.255

    Интересная особенность в том, что можно привязывать имя не к хосту, а к сервису. Например, к имени пользователя для отправки сообщений через net send.

    Естественно, постоянно рассылать широковещательные запросы не эффективно, поэтому существует кэш NetBIOS – временная таблица соответствий имен и IP-адреса. Таблица находится в оперативной памяти, по умолчанию количество записей ограничено шестнадцатью, а срок жизни каждой – десять минут. Посмотреть его содержимое можно с помощью команды nbtstat -c, а очистить – nbtstat -R.

    Пример работы кэша для разрешения имени узла «хр».

    Что происходило при этом с точки зрения сниффера.

    В крупных сетях из-за ограничения на количество записей и срока их жизни кэш уже не спасает. Да и большое количество широковещательных запросов запросто может замедлить быстродействие сети. Для того чтобы этого избежать, используется сервер WINS (Windows Internet Name Service). Адрес сервера администратор может прописать сам либо его назначит DHCP сервер. Компьютеры при включении регистрируют NetBIOS имена на сервере, к нему же обращаются и для разрешения имен.

    В сетях с *nix серверами можно использовать пакет программ Samba в качестве замены WINS. Для этого достаточно добавить в конфигурационный файл строку «wins support = yes». Подробнее – в документации.

    В отсутствие службы WINS можно использовать файл lmhosts, в который система будет «заглядывать» при невозможности разрешить имя другими способами. В современных системах по умолчанию он отсутствует. Есть только файл-пример-документация по адресу %systemroot%\System32\drivers\etc\lmhost.sam. Если lmhosts понадобится, его можно создать рядом с lmhosts.sam.

    Сейчас технология NetBIOS не на слуху, но по умолчанию она включена. Стоит иметь это ввиду при диагностике проблем.

    Стандарт наших дней – DNS

    DNS (Domain Name System) – распределенная иерархическая система для получения информации о доменах. Пожалуй, самая известная из перечисленных. Механизм работы предельно простой, рассмотрим его на примере определения IP адреса хоста www.google.com:

    Читайте также:  Политика это способ реализации власти

    если в кэше резолвера адреса нет, система запрашивает указанный в сетевых настройках интерфейса сервер DNS;

    сервер DNS смотрит запись у себя, и если у него нет информации даже о домене google.com – отправляет запрос на вышестоящие сервера DNS, например, провайдерские. Если вышестоящих серверов нет, запрос отправляется сразу на один из 13 (не считая реплик) корневых серверов, на которых есть информация о тех, кто держит верхнюю зону. В нашем случае – com.

    после этого наш сервер спрашивает об имени www.google.com сервер, который держит зону com;

  • затем сервер, который держит зону google.com уже выдает ответ.
  • Наглядная схема прохождения запроса DNS.

    Разумеется, DNS не ограничивается просто соответствием «имя – адрес»: здесь поддерживаются разные виды записей, описанные стандартами RFC. Оставлю их список соответствующим статьям.

    Сам сервис DNS работает на UDP порту 53, в редких случаях используя TCP.

    DNS переключается на TCP с тем же 53 портом для переноса DNS-зоны и для запросов размером более 512 байт. Последнее встречается довольно редко, но на собеседованиях потенциальные работодатели любят задавать вопрос про порт DNS с хитрым прищуром.

    Также как и у NetBIOS, у DNS существует кэш, чтобы не обращаться к серверу при каждом запросе, и файл, где можно вручную сопоставить адрес и имя – известный многим %Systemroot%\System32\drivers\etc\hosts.

    В отличие от кэша NetBIOS в кэш DNS сразу считывается содержимое файла hosts. Помимо этого, интересное отличие заключается в том, что в кэше DNS хранятся не только соответствия доменов и адресов, но и неудачные попытки разрешения имен. Посмотреть содержимое кэша можно в командной строке с помощью команды ipconfig /displaydns, а очистить – ipconfig /flushdns. За работу кэша отвечает служба dnscache.

    На скриншоте видно, что сразу после чистки кэша в него добавляется содержимое файла hosts, и иллюстрировано наличие в кэше неудачных попыток распознавания имени.

    При попытке разрешения имени обычно используются сервера DNS, настроенные на сетевом адаптере. Но в ряде случаев, например, при подключении к корпоративному VPN, нужно отправлять запросы разрешения определенных имен на другие DNS. Для этого в системах Windows, начиная с 7\2008 R2, появилась таблица политик разрешения имен (Name Resolution Policy Table, NRPT). Настраивается она через реестр, в разделе HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\DnsClient\DnsPolicyConfig или групповыми политиками.

    Настройка политики разрешения имен через GPO.

    При наличии в одной сети нескольких технологий, где еще и каждая – со своим кэшем, важен порядок их использования.

    Порядок разрешения имен

    Операционная система Windows пытается разрешить имена в следующем порядке:

    проверяет, не совпадает ли имя с локальным именем хоста;

    смотрит в кэш DNS распознавателя;

    если в кэше соответствие не найдено, идет запрос к серверу DNS;

    если имя хоста «плоское», например, «servername», система обращается к кэшу NetBIOS. Имена более 16 символов или составные, например «servername.domainname.ru» – NetBIOS не используется;

    если не получилось разрешить имя на этом этапе – происходит запрос на сервер WINS;

    если постигла неудача, то система пытается получить имя широковещательным запросом, но не более трех попыток;

  • последняя попытка – система ищет записи в локальном файле lmhosts.
  • Для удобства проиллюстрирую алгоритм блок-схемой:

    Алгоритм разрешения имен в Windows.

    То есть, при запуске команды ping server.domain.com NetBIOS и его широковещательные запросы использоваться не будут, отработает только DNS, а вот с коротким именем процедура пойдет по длинному пути. В этом легко убедиться, запустив простейший скрипт:

    Читайте также:  Налоговая оптимизация законными способами

    Выполнение второго пинга происходит на несколько секунд дольше, а сниффер покажет широковещательные запросы.

    Сниффер показывает запросы DNS для длинного имени и широковещательные запросы NetBIOS для короткого.

    Отдельного упоминания заслуживают доменные сети – в них запрос с коротким именем отработает чуть по-другому.

    Active Directory и суффиксы

    Active Directory тесно интегрирована с DNS и не функционирует без него. Каждому компьютеру домена создается запись в DNS, и компьютер получает полное имя (FQDN — fully qualified domain name) вида name.subdomain.domain.com.

    Для того чтоб при работе не нужно было вводить FQDN, система автоматически добавляет часть имени домена к хосту при различных операциях – будь то регистрация в DNS или получение IP адреса по имени. Сначала добавляется имя домена целиком, потом следующая часть до точки.

    При попытке запуска команды ping servername система проделает следующее:

    если в кэше DNS имя не существует, система спросит у DNS сервера о хосте servername.subdomain.domain.com;

  • если ответ будет отрицательный – система запросит servername.domain.com, на случай, если мы обращаемся к хосту родительского домена.
  • При этом к составным именам типа www.google.com суффиксы по умолчанию не добавляются. Это поведение настраивается групповыми политиками.

    Настройка добавления суффиксов DNS через групповые политики.

    Настраивать DNS суффиксы можно также групповыми политиками или на вкладке DNS дополнительных свойств TCP\IP сетевого адаптера. Просмотреть текущие настройки удобно командой ipconfig /all.

    Суффиксы DNS и их порядок в выводе ipconfig /all.

    Однако утилита nslookup работает немного по-другому: она добавляет суффиксы в том числе и к длинным именам. Посмотреть, что именно происходит внутри nslookup можно, включив диагностический режим директивой debug или расширенный диагностический режим директивой dc2. Для примера приведу вывод команды для разрешения имени ya.ru:

    Из-за суффиксов утилита nslookup выдала совсем не тот результат, который выдаст например пинг:

    Это поведение иногда приводит в замешательство начинающих системных администраторов.

    Лично сталкивался с такой проблемой: в домене nslookup выдавал всегда один и тот же адрес в ответ на любой запрос. Как оказалось, при создании домена кто-то выбрал имя domain.com.ru, не принадлежащее организации в «большом интернете». Nslookup добавляла ко всем запросам имя домена, затем родительский суффикс – com.ru. Домен com.ru в интернете имеет wildcard запись, то есть любой запрос вида XXX.com.ru будет успешно разрешен. Поэтому nslookup и выдавал на все вопросы один ответ. Чтобы избежать подобных проблем, не рекомендуется использовать для именования не принадлежащие вам домены.

    При диагностике стоит помнить, что утилита nslookup работает напрямую с сервером DNS, в отличие от обычного распознавателя имен. Если вывести компьютер из домена и расположить его в другой подсети, nslookup будет показывать, что всё в порядке, но без настройки суффиксов DNS система не сможет обращаться к серверам по коротким именам.

    Отсюда частые вопросы – почему ping не работает, а nslookup работает.

    В плане поиска и устранения ошибок разрешения имен могу порекомендовать не бояться использовать инструмент для анализа трафика – сниффер. С ним весь трафик как на ладони, и если добавляются лишние суффиксы, то это отразится в запросах DNS. Если запросов DNS и NetBIOS нет, некорректный ответ берется из кэша.

    Если же нет возможности запустить сниффер, рекомендую сравнить вывод ping и nslookup, очистить кэши, проверить работу с другим сервером DNS.

    Кстати, если вспомните любопытные DNS-курьезы из собственной практики – поделитесь в комментариях.

    Источник

    Оцените статью
    Разные способы