NetBIOS и заботливо разложенные грабли
Хочу обратить внимание на одну из множества ловушек, которые терпеливо поджидают начинающего win-админа на своем жизненном пути.
Обычный use-case: переименование юзерской машины. Дело минуты. Сделали? А теперь хватайтесь за голову: дело в том, что на эту машину во множестве понаставлено множество ссылок по её netbios-имени. То самое \\comp-bla-bla\share
. Пьем валерьянку и начинаем прикидывать как нам это разрулить. (вариант "переименовать всё взад" отбросим как малодушный, поисправлять все ссылки - как неприемлемый в плане времени).
Решение было найдено, перепробовав всё что нарыто в сети по этому поводу и попутно изнасиловав 2 поисковика.
Способ первый: с использованием wins-сервера
Создать статический маппинг на wins-сервере. Ну во-первых, этот сервер должен у нас быть, во-вторых - машины должны быть настроены на его использование, в-третьих - это не сработает.
Даже если клиент получит правильный айпишник, пойдет по нему и попросит подключения у целевой машины - она пошлет его подальше - "я такого имени машины не знаю, и вообще я тут поезда жду".
Способ второй: изврат с dns'ами
Мысль: создать cname, указывающий на новую машину. Опять же, во-первых нужен этот самый dns, во-вторых нужна настройка машин на него, в-третьих - использовать вторую систему разрешения имен, чтобы обойти уродство первой - это знаете, как-то ...хе-хе. И в-четвертых - это тоже не сработает.
Требуется перенастройка всех остальных машин, которые ссылаются на целевую, чтобы винда на считала себя умнее всех:
admin: - вот тебе ссылка на ресурс: "\\machine\share\file.txt"
винда: - я не знаю netbios-имени "machine"!
admin: - правильно, потому что смотреть надо через dns.
винда: - дык ты же указываешь его как \\machine\! Точек-то нет!
admin: - #@$%$^!!!
admin: (добавляет опцию в реестр)[^fn1]
admin: - А теперь?
винда: - что, сразу сказать нельзя было?
Способ третий: LMHOSTS
То же что и выше: требуется перенастройка всех остальных машин. И даже в своем lmhosts если указать что-то типа:
127.0.0.1 machine
<свой айпишник> machine
Работать не хочет, т.к. винда по прежнему считает, что имя у неё другое, и это дополнительное имя - не признает.
(до конца я это так и не проверил, сил нет больше с этим возится)
Способ четвертый: правильный
admin: ну что, чудовище, что с тобой делать будем?
винда: хз, погугли
(еще через 3 часа)
* admin молча прописывает ещё один ключ к реестр[^fn2] и перезапускает службу "Сервер"
винда: ой, а что я теперь ещё и "machine"?
* admin мрачно усмехается и уходит пить водку
Эпилог
Мне тут недавно попадалась статья История программных революций от Microsoft, подозреваю, что что-то подобное происходило, когда изобретался netbios. Сами посудите: он нафиг не был нужен в сети любого размера: в малой - проще запомнить айпишники, в большой - настроить связку dhcp+dns, потому что его броадкасты поставят её раком (в случае, если роутеры его пропускают) или тупо будут работать только в пределах подсети (если не пропускают). Сетка развалится на несколько других - поменьше размером. И даже Wins-сервер не спасает ситуацию, поскольку отдает только список компов в своей подсети.
Если же лезть "вглубь" этого монстра - увидим сложную систему "выборов", несколько записей для каждого хоста, медленную работу, два десятка параметров, которые настраиваются только через реестр.
Итого - явный оверкилл для мелких сетей и бесполезность для больших. Несмотря на это - живее всех живых. Сволочь.
Справедливости ради отмечу, что нечто подобное можно увидеть и в bluetooth, и прямом аналоге - avahi (dnssd), на этот раз от эппла. Видать кому-то кактусов не хватило.