Нет resolve по hostname в одну сторону, от linux к linux, что может быть?
Локальная сеть 192.168.0.0/24 без домена. Действующие лица:
- роутер Asus, он же шлюз, он же DHCP-сервер.
IP статический 192.168.0.1
- хост с WinXP
hostname Office
IP по DHCP (рандом)
- хост с CentOS 7.2
hostname s1
IP по DHCP зарезервирован 192.168.0.201
- хост с NAS UnknownOS ядро Linux 2.6.32.12(если это важно)
hostname ds1
IP статический 192.168.0.226
Симптомы:
используя команду ping "hostname" получаем такие результаты
s1 -> Office = OK
s1 -> ds1 = FALSE
ds1 -> Office = OK
ds1 -> s1 = OK
При ping по IP всё проходит хорошо.
Мною было изучено море литературы, прогуглено множество схожих ситуаций... Но мне из этого ничего не помогло, то где-то всё решалось передобавлением проблемного хоста в домен. То добавлением "wins" в строчку hosts в файле /etc/nsswitch.conf. или добавлением "mdns4_minimal [NOTFOUND=return]" туда же, и т.д.
В связи с этим я очень сильно запутался...
я знаю что есть samba у которой есть /etc/samba/smb.conf
я знаю что есть NSS и PAM и winbindd, которых их связывает... но вроде бы winbindd нужен когда хост в домене, если не прав, пожалуйста поправьте меня.
Я понимаю работу DNS и NetBIOS и что это разные вещи и что ping "бла бла бла" разрешается в nsswitch в указаном там порядке...
Вообщем много что изучил, но так нигде и не смог найти ответ.
Что происходит например при получении хоста ds1 запроса bcast NetBIOS, т.е. где затык?
Или же не происходит этот запрос от s1, но хост Office, он же как-то знает...
Прошу помочь разобраться, заранее всем благодарен.
UPD: Есть подозрение что s1 известен DHCP-серверу(роутеру) он же ему IP дал, а потому и известен ds1, потому как в конфиге ds1 /etc/resolv.conf nameserver (естественно) указан роутер.
А ds1 не известен DHCP-серверу(роутеру) потому как IP у ds1 указан ручками(статический)...
Вот мне и кажется что всё соль в этом! Если есть мнения поделитесь, а я пока буду пробовать проверять эту теорию..
Заодно хотелось бы понять как просто заставить linux работать по NetBIOS-именам? Или может даже проще и лучше, как сказать NS на роутере что ds1 по такому-то IP. Но сделать это со стороны ds1. И возможно ли это?)
Вот какой-то из этих вариантов я думаю то что мне нужно =)
UPD 2: мне удалось получить ответ по nmblookup ds1, но в тот же момент nmblookup s1 не даёт ответа...
ну и фиг с ним подумал я, главное чтобы ping ds1 заработал...
Так вот, он не работает. Я не знаю что делать.
Проблема была найдена, совсем не тривиально, но очень тривиальная)
вкратце так: nmblookup ds1 не работало из-за правила в iptables (INPUT...REJECT...), которое я убрал командой iptables -D INPUT <номер правила в цепочке INPUT> nmblookup ds1 - заработало! я почти обрадовался, но не тут-то было) ping ds1 не работал! хотя ip было уже известно по nmblookup ds1.
было и указано следующее
в /etc/nsswitch.conf в строке hosts: указан wins!
в /etc/samba/smb.conf указана в разделе [global] строка name resolve order = wins bcast host nmblookup ds1 - работает! а ping ds1 - нет!
не долго я мучался.. вот вердикт
Не знаю почему, не знаю как, не знаю что с этим CentOs!
Но, nmb smb winbind - не были запущены. (точка!)
Вроде бы samba установлена, и чего бы ей не работать... но факт остался фактом, после установки... smbclient работал замечательно, а демоны не были запущены, хост ребутался правда переодически, но я блин был в полной уверенности что samba установлена... это мне урок на многие годы) Надеюсь всё делалось не зря, всем спасибо!
см. комментарии
Если статический айпишник, то ваше имя просто нигде не прописывается.
В винде, wins сам собирает инфу о локальных хостах (вроде служба computer browser), поэтому можно обращаться по имени и оно само найдет кто это.
В DNS - иерархия. Хост не будет всем рассказывать кто это, он заранее должен быть прописан в DNS
Просто пропишите на компах Office и s1 в /etc/hosts (system32/drivers/etc/hosts) ds1 и его айпишник, и он должен начать отзываться. Ну или тогда нужно добавить эту запись на ваш DNS сервер, если вы им пользуетесь.
Saboteur не хотел бы костылить хотелось бы понять почему на одном linux всё ок а на другом нет... представим что таких хостов 100 шт. мне бы не хотелось все 100 прописывать...
с виндой мне всё более менее понятно...
DNS сервак отбрасываем сразу, меня интересует разрешение NetBIOS имён на linux как это происходит, при каких запросах, в целом алгоритм работы, хотя на s1 я так и не нашёл признаков работы NetBIOS,
[root@s1 ~]# service nmbd status
Redirecting to /bin/systemctl status nmbd.service
● nmbd.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
У вас есть новая почта в /var/spool/mail/root
[root@s1 ~]# service smbd status
Redirecting to /bin/systemctl status smbd.service
● smbd.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
[root@s1 ~]# service winbindd status
Redirecting to /bin/systemctl status winbindd.service
● winbindd.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
Saboteur: проверил...
root@ds1:~# 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$
Saboteur: Так же понял что s1 вообще ни на один мой запрос nmblookup не отвечает нормально...
например:
[root@s1 ~]# nmblookup office
name_query failed to find name office
[root@s1 ~]# nmblookup s1
name_query failed to find name s1
а по nslookup он отвечает правильно, делаю вывод что на s1 не работает разрешение NetBIOS-имен.
нужно исправить, вопрос с чего начать...
Saboteur:
у меня
hosts: files wins dns myhostname
yum install libnss-winbind
и
yum install winbind
не находят пакеты такие...
Я определил что на s1 ещё не был запущен nmbd
до запуска nmbd:
[root@s1 ~]# nmblookup -U 127.0.0.1 __Samba__
querying __Samba__ on 127.0.0.1
name_query failed to find name __Samba__
после:
[root@s1 ~]# nmblookup -U 127.0.0.1 __Samba__
querying __Samba__ on 127.0.0.1
192.168.0.201 __Samba__<00>