Автор Тема: В локальной сети на машинах с Linux не работает DNS  (Прочитано 5922 раз)

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
По какой причине этого нет в Линуксе?
слишком сложный и громоздкий механизм - легче просто настроить локальный dns + dhcp. Например dnsmasq умеет быть и dhcp и dns сервером в локальной сети.

Оффлайн j-Key

  • Участник
  • *
  • Сообщений: 91
слишком сложный и громоздкий механизм
Но ведь он, возвращаясь к Виндам, просто встроен в систему и прекрасно работает. В Линукс то почему такое не вшить? Лишние пара-тройка тысяч строк кому-то помешают? Или я чего-то не понимаю? :-)

Оффлайн YYY

  • Мастер
  • ***
  • Сообщений: 6 046
Они не по DNS общаются. У них совсем другой механизм резолвинга имён. WINS/NetBios
И механизм этот работает "из коробки" на любой машине с Виндой!
Не на любой ;)
Вменяемые домашние юзеры отрубают NetBios over tcp/ip и вообще все что можно ;)
В серьезных сетках админы тоже вырубают и используют DNS, как минимум из-за безопасности

По какой причине этого нет в Линуксе?
Есть. Т.е. возможно ;)

Оффлайн YYY

  • Мастер
  • ***
  • Сообщений: 6 046
В Линукс то почему такое не вшить?
Вот мне, например, не надо. А кому надо пусть включит ;)

Оффлайн j-Key

  • Участник
  • *
  • Сообщений: 91
YYY
Вы хотите сказать, что подобное "Виндовое" удобство из коробки в Линуксе по умолчанию не используется целенаправленно и исключительно из соображений безопасности?

Оффлайн YYY

  • Мастер
  • ***
  • Сообщений: 6 046
как только вы скажите что такое в вашем понимании "в Линуксе", так сразу и скажу ;)

Оффлайн j-Key

  • Участник
  • *
  • Сообщений: 91
как только вы скажите что такое в вашем понимании "в Линуксе", так сразу и скажу ;)
Т.е. зависит от конкретного дистрибутива, на усмотрение разработчика? Тогда давайте так: Simply Linux :-)

Оффлайн YYY

  • Мастер
  • ***
  • Сообщений: 6 046
как только вы скажите что такое в вашем понимании "в Линуксе", так сразу и скажу ;)
Т.е. зависит от конкретного дистрибутива, на усмотрение разработчика?
Угу :)

Тогда давайте так: Simply Linux :-)
Это дистрибутив для домашнего применения или установки на отдельные рабочие станции.
Из него можно сделать все что угодно - хоть сервер, но это "что угодно" не из коробки ;)

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 368
Лишние пара-тройка тысяч строк кому-то помешают ?
Да. Так как они не нужны. Как и этот "удобный механизм". Он в UNIX-системах несовсем нужен и выглядит архитектурно инородно. Если сильно надо, можно как-то так: https://www.altlinux.org/DDNS. Это вот уже не инородно.

Оффлайн j-Key

  • Участник
  • *
  • Сообщений: 91
https://www.altlinux.org/DDNS
Ни с этой, ни с другими инструкциями я так и не совладал. Всё чего-то не работает.

на linux хостах надо разрешить резолвинг через wins (/etc/nsswitch.conf )
Подскажите, как конкретно это сделать? В сети не нашёл :-(

Оффлайн j-Key

  • Участник
  • *
  • Сообщений: 91
Сам шучу - сам смеюсь :-)

Вот как решил проблему на данный момент (у клиентов никаких настроек крутить не нужно):
  • На сервере, как я уже говорил, устанавливаем кэширующий DNS (dnsmasq).
  • В /etc/dnsmasq.conf прописываем/меняем только одну строчку: listen-address=127.0.0.1, 192.168.1.1.
  • В /etc/resolv.conf _первой_ строкой прописываем nameserver 127.0.0.1, дальше идут DNS провайдера. На всякий случай, запрещаем изменение этого файла (chattr +i /etc/resolv.conf).
  • Дальше - чистый, но вполне официальный, handmade: указываем в /etc/hosts все машины, к которым нужен доступ через DNS-имя.

Такой вариант верен? Никаким канонам не противоречит?

Я понимаю, что это не то, что я хотел изначально (аналог Виндового WINS/NetBIOS, без ручного ввода хостов), но маны по DDNS я так до конца и не осилил, проще разок на сервере все ПК прописать (ещё бы они сами туда автоматом прописывались по мере добавления в сеть, но это уже возвращаемся к DDNS).

Кстати, для того, чтобы клиенты начали видеть очередную занесённую на сервере в /etc/hosts машину, необходимо перезагрузить сначала сам сервер, а потом и клиентов. Можно это делать как-то более "на лету"? Пробовал перезапускать на сервере сеть (invoke-rc.d networking restart), но это не помогает.
« Последнее редактирование: 02.10.2015 11:40:45 от j-Key »

Оффлайн yaleks

  • Мастер
  • ***
  • Сообщений: 6 242
Кстати, для того, чтобы клиенты начали видеть очередную занесённую на сервере в /etc/hosts машину, необходимо перезагрузить сначала сам сервер, а потом и клиентов.
наверно проще перезапустить dnsmasq, если вы его используете  ;-)

Оффлайн j-Key

  • Участник
  • *
  • Сообщений: 91
наверно проще перезапустить dnsmasq, если вы его используете  ;-)
:rolleyes: Да, после очередной правки hosts на сервере достаточно просто перезапустить dnsmasq:
/etc/init.d/dnsmasq restartНа клиентах, при этом, никаких телодвижений делать не придётся, они сразу начинают видеть новые записи в hosts сервера, что логично.

Спасибо.

Оффлайн grumbler

  • alt linux team
  • ***
  • Сообщений: 126
Вы не до конца настроили dnsmasq. RTFM, пожалуйста:

Цитировать
       -S, --local, --server=[/[<domain>]/[domain/]][<ipaddr>[#<port>][@<source-ip>|<interface>[#<port>]]

              Also  permitted  is  a  -S  flag  which gives a domain but no IP address; this tells dnsmasq that a domain is local and it may answer queries from
              /etc/hosts or DHCP but should never forward queries on that domain to any upstream servers.  local is a synonym for server to  make  configuration
              files clearer in this case.

Таким образом, если dnsmasq обслуживает запросы и DHCP, и DNS, он ресолвит имена хостов, предъявленные ими в DHCP, в домене, указанном в "local" (или "server", или "S", это синонимы).
Рабочий пример из маршрутизатора с OpenWRT:
# grep "server=/" /var/etc/dnsmasq.conf
server=/spektr/

По поводу высказываний:
Для dnsmasq - вручную, и нужны ip4 адреса

Цитата: j-Key от 25.09.2015 14:05:32

    А если машин - тысяча. А если - миллион?

Ну, dnsmasq на таком количестве и так загнётся. Это-же для локальных сетей - ну там десяток-другой максимум.

Игнорируйте их. Уважаемый ruslandh просто не знает особенности dnsmasq.

Оффлайн grumbler

  • alt linux team
  • ***
  • Сообщений: 126
  • Дальше - чистый, но вполне официальный, handmade: указываем в /etc/hosts все машины, к которым нужен доступ через DNS-имя.

Если хотите вести список хостов вручную, опять же, сделайте тщательный RTFM (параметры expand-hosts и addn-hosts). Не надо трогать системный /etc/hosts, укажите в dnsmasq.conf дополнительный(е) файл(ы) hosts. Пример:
# grep "hosts" /var/etc/dnsmasq.conf
expand-hosts
addn-hosts=/tmp/hosts

Кстати, для того, чтобы клиенты начали видеть очередную занесённую на сервере в /etc/hosts машину, необходимо перезагрузить сначала сам сервер, а потом и клиентов. Можно это делать как-то более "на лету"? Пробовал перезапускать на сервере сеть (invoke-rc.d networking restart), но это не помогает.

"Более на лету": /etc/init.d/dnsmasq restart
« Последнее редактирование: 18.10.2015 07:43:18 от grumbler »