Форум на Kuban.ru (http://forums.kuban.ru/)
-   Сети и их администрирование (http://forums.kuban.ru/f1029/)
-   -   ubuntu 14.04.2 lts и несколько DNS серверов (http://forums.kuban.ru/f1029/ubuntu_14_04_2_lts_i_neskol-ko_dns_serverov-7020951.html)

simoncat 16.07.2015 20:02

ubuntu 14.04.2 lts и несколько DNS серверов
 
Доброго времени суток.

Настроил такую связку:

Client --> Local DNS Cache (dnsmasq 127.0.1.1:53) --> Local DNSCrypt Proxy (dnscrypt-proxy 127.0.2.1:53) <--https--> Remote Open DNS Server

В параметрах сетевого соединения wlan0 (wifi) прописал в качестве DNS сервера 127.0.2.1.

В /etc/resolv.conf только одна строчка
127.0.1.1

dnsmasq работает по dbus в связке с NetworkManager. Т. е. при установке/разрыве соединения NetworkManager уведомляет dnsmasq, чтобы он добавил/убрал DNS-сервера, полученные по DHCP, или прописанные в соединении (в моем случае 127.0.2.1). больше dnsmasq ниоткуда не берет списки (запускается с no_resolv, и на механизм resolveconf не обращает внимания).

при старте dnsmasq, однако уведомляет resolvconf, чтобы тот зарегистрировал его у себя и так как в ubuntu по умолчанию включена опция
simoncat@l01:~$ cat /etc/default/resolvconf
TRUNCATE_NAMESERVER_LIST_AFTER_LOOPBACK_ADDRESS=yes

то формируется только одна строчка в
simoncat@l01:~$ cat /etc/resolv.conf
nameserver 127.0.1.1

соответственно, все DNS запросы идут на dnsmasq 127.0.1.1:53 он их перенаправляет на dnscrypt-proxy 127.0.2.1:53, а тот по https отправляет на opendns сервер с поддержкой DNSCrypt.

Все работает. Но есть еще VPN. Откуда по DHCP передаются также и DNS сервера конторы. NetworkManager добавляет их по dbus в dnsmasq (192.168.0.3) в соответствии с описанным выше, а resolveconf рефрешит /etc/resolv.conf.

simoncat@l01:~$ cat /etc/resolv.conf
nameserver 127.0.1.1
search mydomain.local

И тогда получается ситуация. Пока VPN не включен DNS запросы идут как надо на OpenDNS сервера 127.0.1.1->127.0.2.1->https->opendns.com

Когда VPN включен 127.0.1.1->192.168.0.3

Можно ли как-то сделать, чтобы ломилось всегда на

127.0.1.1(dnsmasq)->127.0.2.1, а если не получилось разрешить имя то 127.0.1.1(dnsmasq)->192.168.0.3, как бы задать в dnsmasq чтобы приоритет отдавал 127.0.2.1, а только потом 192.168.0.3?

droidman 16.07.2015 20:41

Прописать насильно в свойствах VPN-подключения: первым DNS - 127.0.2.1, вторым - 192.168.0.3?

simoncat 16.07.2015 21:00

DNS1 - 127.0.2.1
DNS2 - 192.168.0.3

при таком раскладе, после установления, идет на 127.0.2.1
но nslookup myserver НЕ НАХОДИТ сервер

а если прописать

DNS1 - 127.0.2.1
DNS2 - 192.168.0.3
DOMAIN SEARCH mydomain.local

при таком раскладе, nslookup myserver НАХОДИТ сервер
но DNS запросы идут на 192.168.0.3

simoncat 16.07.2015 21:03

при таком раскладе, nslookup myserver НАХОДИТ сервер
но ВООБЩЕ ВСЕ DNS запросы идут на 192.168.0.3

simoncat 16.07.2015 21:04

Курю статейку. Пока не знаю поможет ли [url]http://blog.nixpanic.net/2013/03/use-dnsmasq-for-separating-dns-queries.html[/url]

Если есть мысли - буду благодарен.

droidman 16.07.2015 21:28

[url=https://wiki.archlinux.org/index.php/Dnsmasq_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)#NetworkManager]Здесь[/url] показано как использовать разные DNS для разных доменов через NetworkManager и dnsmasq. Возможно, это то что нужно?

simoncat 16.07.2015 22:10

5-droidman > большое вам спасибо. очень похоже на то. завтра man'ы подробнее почитаю и потестирую. отпишусь.

simoncat 17.07.2015 00:05

5-droidman >

большое спасибо вам, ссылка очень помогла.

1) поставил всем соединениям настройки DHCP в address only, а для VPN соединения address only + прописал DOMAIN SEARCH mydomain.local

2) для dnsmasq прописал в

simoncat@l01:~$ cat /etc/NetworkManager/dnsmasq.d/server
server=127.0.2.1
server=/mydomain.local/192.168.0.3
server=/mydomain.local/192.168.0.4

2) и все заработало как хотел
3) после (2) столкнулся с проблемой описанной здесь

[url]http://www.lowlevelmanager.com/2011/09/fix-linux-dns-issues-with-local.html[/url]

применил оттуда решение и все теперь работает как и задумывал :)

корпоративные сервера резолвятся через их домены
интернеты резолвятся через dnscryptproxy/opendns


Текущее время: 18:30. Часовой пояс GMT +3.