LINUX.ORG.RU
решено ФорумAdmin

linux и NetBIOS-имя

 , ,


0

1

Уже ни один день бьюсь над большой проблемой, вкратце:

есть сеть 192.168.0.0/24 без домена, есть два хоста NAS(ds1) и CentOS 7(s1),последний со всеми update, и несколько виндовых машин. так вот..

root@ds1:~# ping s1
PING s1 (192.168.0.201) 56(84) bytes of data.

[root@s1 ~]# ping ds1
ping: ds1: Имя или служба не известны

Что я уже только не делал... сейчас на таком этапе что

[root@s1 ~]# nslookup s1
Server:         192.168.0.1
Address:        192.168.0.1#53
Name:   s1
Address: 192.168.0.201

[root@s1 ~]# nslookup ds1
Server:         192.168.0.1
Address:        192.168.0.1#53

** server cant find ds1: NXDOMAIN

root@ds1:~# nslookup s1
Server:         192.168.0.1
Address:        192.168.0.1#53
Name:   s1
Address: 192.168.0.201

root@ds1:~# nslookup ds1

Server:         192.168.0.1
Address:        192.168.0.1#53

** server cant find ds1: NXDOMAIN

Это вроде бы всё понятно, т.к. s1 получает настройки по DHCP (зарезервированный IP). А ds1 настройки статикой прописаны. А DHCP и NS на роутере...

А теперь вот с чем борюсь в данный момент(office виндовый хост):

[root@s1 ~]# nmblookup s1
name_query failed to find name s1
[root@s1 ~]# nmblookup ds1
name_query failed to find name ds1
[root@s1 ~]# nmblookup office
name_query failed to find name office

А по IP всё ок!

[root@s1 ~]# nmblookup -A 192.168.0.226
Looking up status of 192.168.0.226
        DS1             <00> -         B <ACTIVE>
        DS1             <03> -         B <ACTIVE>
        DS1             <20> -         B <ACTIVE>
        WORKGROUP       <00> - <GROUP> B <ACTIVE>
        WORKGROUP       <1e> - <GROUP> B <ACTIVE>

        MAC Address = 00-00-00-00-00-00

[root@s1 ~]# nmblookup -A 192.168.0.201
Looking up status of 192.168.0.201
        S1              <00> -         B <ACTIVE>
        S1              <03> -         B <ACTIVE>
        S1              <20> -         B <ACTIVE>
        ..__MSBROWSE__. <01> - <GROUP> B <ACTIVE>
        WORKGROUP       <00> - <GROUP> B <ACTIVE>
        WORKGROUP       <1d> -         B <ACTIVE>
        WORKGROUP       <1e> - <GROUP> B <ACTIVE>

        MAC Address = 00-00-00-00-00-00

[root@s1 ~]# nmblookup -A 192.168.0.213
Looking up status of 192.168.0.213
        OFFICE          <00> -         B <ACTIVE>
        WORKGROUP       <00> - <GROUP> B <ACTIVE>
        OFFICE          <20> -         B <ACTIVE>
        WORKGROUP       <1e> - <GROUP> B <ACTIVE>

        MAC Address = 00-26-18-E6-AB-05

Теперь со стороны ds1:

root@ds1:~# nmblookup s1
name_query failed to find name s1
root@ds1:~# nmblookup ds1
192.168.0.226 ds1<00>
root@ds1:~# nmblookup office
192.168.0.213 office<00>

Пока что вот так... Мне нужно чтобы

root@ds1:~# nmblookup s1
и
[root@s1 ~]# nmblookup ds1
заработали =) Заранее благодарен за помощь!


NETBIOS и DNS - это разные службы, что бы машина была видна по NETBIOS имени нужно в smb.conf этой машины в секции [global] задать параметр

[global]
  netbios name = ds1
для второй машины s1.

После чего перезапустить samba.

Ну либо создай на DNS сервере соответствующие записи, либо пропиши в hosts файле.

kostik87 ★★★★★ ()
Ответ на: комментарий от kostik87

На s1 в секции [global] прописал netbios name = s1. Перезапустил samba и ...

root@s1:# nmblookup s1
name_query filed to find name s1

Ручками прописать в DNS и в hosts отбросил сразу, т.к. на ds1 это всё работает без всяких записей.

Sima ()
Ответ на: комментарий от kostik87

А да и я знаю что это разные службы) Но в данной ситуации они делают одну работу разрешают короткое имя. А вот полного механизма этого разрешения в linux я пока не понимаю... Предложения через WINS решить тоже пока не рассматриваю. Не могу понять в чем разница работы разрешения в двух конкретных машинах.

Sima ()

ping ds1

У тебя nsswitch-то настроен на проверку имен через wins? Если нет - ping не будет работать разрешать имена через netbios от слова совсем

Pinkbyte ★★★★★ ()
Ответ на: комментарий от Pinkbyte

в /etc/nsswitch.conf строчка хостов такая

hosts: files wins dns myhostname

Sima ()
Ответ на: комментарий от Pinkbyte

Может быть есть источники где расписан механизм расширения имён в linux'ах? Я вот что-то конкретного и полного пока не нашёл... только по отдельности про samba dns netbios...

Sima ()
Ответ на: комментарий от Sima

есть источники где расписан механизм расширения имён в linux'ах?

man nsswitch.conf и дальше по man-ам соответствующих функций glibc(например man gethostbyname - которая как раз и используется для резолва хостов)

Pinkbyte ★★★★★ ()

Ужас...

Ужас как ничего не понятно вот просто что сейчас в голове NetBIOS, wins, winbind, libnss_wins, Samba(Samba4WINS), NSS (nsswitch.conf)... Что к чему, куда и как так и не разобрался. Вот сеейчас изучу этот вопрос и напишу всё подробно и понятно, для таких как я... Ещё уже узнал замечательное решение, что можно на DNS прикрутить nmblookup и Net-BIOS-имена будут разрешаться через DNS сервак, это гениально! я считаю)

Sima ()
Ответ на: комментарий от kostik87

Буду потихоньку ликбезить...

Даже если не указано имя явно, на работу по короткому имени это не влияет:

Источник ibm.com

netbios name. С помощью этого параметра задается NetBIOS-имя, заявляемое сервером. Если этот параметр не задан, то по умолчанию используется часть DNS-имени компьютера, соответствующая имени хоста; например, если DNS-имя компьютера tunesmith.example.com, то NetBIOS-именем будет TUNESMITH

Sima ()

Спасение утопающих, дело рук самих утопающих...

Разобрался в чём была причина, решение подам в таком виде чтобы люди имели представление о диагностике таких проблем. Считаю что это должно будет помочь во многих ситуациях. Правда сейчас все сидят на DNS) будем считать что я олдфаг. Очень просто проверить работу nmblookup, работает ли он вообще.

root@<имя хоста>:# nmblookup -B 127.0.0.1 <имя хоста>
соответственно на моём он показал что s1 по такому IP-адресу 192.168.0.201 Чему я был очень рад, и всё встало на свои места. Продолжение следует...

Sima ()

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

Поэтому пропускаем это мимо ушей и идём дальше. Как выяснилось чтобы nmblookup сработал, нужно снести одно правило в iptables с действием REJECT в chain(цепочке) INPUT

iptables -D INPUT <номер правила по порядку>
iptables -nL - посмотреть все правила
Хоть мне и удалось получить ip адрес через nmblookup. Проблемы это не решило. Я в некотором замешательстве, потому как:

в /etc/nsswitch.conf в строке hosts: указан wins! в /etc/samba/smb.conf указана в разделе [global] строка

name resolve order = wins bcast host
nmblookup ds1 - работает! а ping ds1 - нет!

Sima ()
Ответ на: комментарий от Sima

Чудо произошло...

Не знаю почему, не знаю как, не знаю что с этим CentOs! Но, nmb smb winbind - не были запущены. (точка!) вроде бы samba установлена, и чего бы ей не работать... но факт остался фактом, после установки... smbclient работал замечательно, а демоны не были запущены, хост ребутался правда переодически, но я блин был в полной уверенности что samba установлена... это мне урок на многие годы) Надеюсь всё делалось не зря, всем спасибо!

Sima ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.