dnsmasq на localhost и dns-серверы локальных сетей

Обладатель ноутбука, в связи с чем пользую его в нескольких сетях…
Сетевые подключения управляются NetworkManager'ом.

После длительного мозгасекаства с кэширующими DNS надумал такое:

Прописать в конфигах dnsmasq несколько внешних серверов + на своём контупере тыкнуть DNS в 127.0.0.1 не есть проблема.
НО: Как же быть с резолвингом ИП локальных сетей? Если оных в сетке 5-10 - ещё куда не шло, а когда их 50-100 + DHCP? Дописывать в список внешних серверов ещё и локальный/локальные - костыль.

Может ничего нового и не придумал, но хотелось бы услышать ваши мнения/предложения/<и т.д> по поводу следующего решения:

1. NetworkManager при подключении какого либо интерфейса толкает настройки, полученные по DHCP в /etc/resolv.conf (dnsmasq берет DNSы от туда)
2. Не составит труда попросить его (NM) использовать для подключений DHCP для ИП/маски/…, а DNS прописать 127.0.0.1
3. При помощи iptables перенаправить все DNS запросы на 127.0.0.1, окромя запросов dnsmasq

В итоге имеем: firefox (напр.) патается зарезолвить ИП, спрашивает у DNS-сервера из /etc/resolv.conf, а отвечает ему наш локальный, сохраняя полученный ИП в своём кэше. При этом резолвится будут как внешние, так и внутренние ИП + не нужно добавлять/изменять/удалять костыли в виде DNS-серверов локальных сетей, прописанных в /etc/dnsmasq.conf

Осталось только <придумать как это осуществить>/<тыкнуть носом в уже придуманное>.

Не знаю на сколько идея бредовая, но озвучить спешил, дабы не забыть… Так что в спешке мог и натупить :)
Я не осилил зачем на ноуте dnsmasq? :-\
Разберемся, голубчик!
Amigo
Я не осилил зачем на ноуте dnsmasq? :-\
Если честно - началось с того, что захотелось нэт на телефон<е|ах> через синий зуб. В настройках bleman-services нашел нужное, но увидел необходимость установки dhcpd3/dnsmasq … заинтересовался вторым зверьком -> узнал про speedup dns-запросов… А после этого вопрос: “а зачем dns-сервер на клиенте сети”, как ни старнно :) , не появился… Просто быстрее, значит лучше; лучше - нужно ::)

Сейчас, поразмыслив, понимаю: наверное, да… точнее нет - не нужен. Хотя, поработав на локальном сервере, сложилось впечатление - быстрее (допускаю, что показалось :) ). Вот и захотелось сделать порядок резолвинга: local dns для внешних ip - в первую очередь, ну, а, если зарезолвить неудалось - спрашивать у dns-серверов, полученных посредством dhcp-протокола, в том числе и ip контуперов локальной сети.

Вот собственно и всё. ::) Есть идеи/факты/доводы?
если заглянуть в /etc/rc.d/, то можно увидеть такую штуку как nscd (Name Server Cache Daemon). Дальше думаю домыслить несложно.

ЗЫ: собственно, не увидел в первом посте вопроса :)
Разберемся, голубчик!
Amigo
если заглянуть в /etc/rc.d/, то можно увидеть такую штуку как nscd (Name Server Cache Daemon). Дальше думаю домыслить несложно.

ЗЫ: собственно, не увидел в первом посте вопроса :)

То что нужно! Пасиб. Странно, что в Вики нет ни одной статьи про него. :-\

Думаю, тема закрыта.
Amigo
если заглянуть в /etc/rc.d/, то можно увидеть такую штуку как nscd (Name Server Cache Daemon). Дальше думаю домыслить несложно
Ух ты! Век живи, век учись… Я использовал для этого pdnsd… Теперь буду тестировать nscd… =)
Даже и не знал, что данный сервис ставиться по умолчанию…
Если я ничего не путаю, в самом dnsmasq можно прописать localhost так, чтобы он сперва искал ДНС у себя в кеше, а затем если не находит, то дальше по списку в /etc/resolf.conf
Nebulosa
Если я ничего не путаю, в самом dnsmasq можно прописать localhost так, чтобы он сперва искал ДНС у себя в кеше, а затем если не находит, то дальше по списку в /etc/resolf.conf
Дело в том, что NetworkManager затирает файл /etc/resolv.conf своими настройками, а значит если в настройках NM для соединений прописать 127.0.0.1 (dns), то dnsmasq будет “спрашивать” самого себя.

Если не ошибаюсь - это можно побороть путём добавления скрипта в /etc/Networkmanager/dispatcher.d/, который будет копировать /etc/resolv.conf, напр., в /etc/resolv.dnsmasq.conf перед его перезаписью NM'ом, а dnsmasq'у “тыкать” в /etc/resolv.dnsmasq.conf (каж., вот так: "resolv-file=/etc/resolv.dnsmasq.conf")

Но это уже другая история для другой темы… :)

З.Ы.: http://bbs.archlinux.org/viewtopic.php?id=45394 - тема про затирание файла /etc/resolv.dnsmasq.conf NetworkManager'ом
 
Зарегистрироваться или войдите чтобы оставить сообщение.