Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

dns-masq в связке с resolvconf и ручном задании dns-nameservers

53 views
Skip to first unread message

Mikhail A Antonov

unread,
Jan 10, 2015, 11:40:02 AM1/10/15
to
Здравствуйте.

Имею такую конфигурацию в interfaces:
----------
auto wlan0
iface wlan0 inet manual
wpa-driver nl80211
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf

iface home inet dhcp
dns-nameservers 77.88.8.88 77.88.8.2

# 'default' is used for wireless networks without an id_str
iface default inet dhcp
----------

И вот такое в wpa_supplicant:
----------
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
ssid="antfam105"
psk="<пароль>"
proto=RSN
key_mgmt=WPA-PSK
pairwise=TKIP
group=TKIP WEP104 WEP40
auth_alg=OPEN
id_str="home"
}
----------

У меня установлен dnsmasq в качестве кеширующего dns-сервера исключительно для
этой машины и пакет resolvconf.

При подключении к сети с id_str="home" - resolvconf всё равно получает
dns-сервера от dhcp и передаёт dnsmasq. Т.е. резолвинг по факту до
dns-nameservers не доходит.

Посмотрел в /etc/resolvconf/run/interface/:
./lo.dnsmasq:nameserver 127.0.0.1
./wlan0.dhclient:domain hlebn.6-ip.net
./wlan0.dhclient:nameserver 172.16.2.1
./wlan0.inet:nameserver 77.88.8.88
./wlan0.inet:nameserver 77.88.8.2

Т.е. resolvconf понимает какие сервера надо использовать.

Смотрим дальше.

В /etc/resolvconf/update.d/dnsmasq нашёл что resolvconf берёт все полученные
сервера и пишет их в файл, который потом обрабатывает dnsmasq.
dnsmasq в свою очередь берёт первый dns-сервер и общается с ним. А там сервер от
dhcp.

Как бы поменять данное поведение? Отредактировать скрипт resolvconf или есть
какая-нибудь хитрая опция, которая указывает что сервера от dhcp не надо
использовать если указаны сервера в interfaces.
Отредактировать скрипт не сложно, но
* за ним придётся следить во время обновлений
* другие программы могут продолжать использовать сервера, полученные от dhcp.
Вариант "не запрашивать dns-сервера от dhcp" не подходит т.к. в других сетях мне
нужно использовать именно те сервера, которые мне передал dhcp-сервер.

Пока такая сеть одна и она полностью мной контролируется - я могу вместо dhcp
использовать статический адрес и буду уверен что его никому не выдадут, но в
процессах я вижу висящий dhcp-клиент и есть у меня подозрение что когда он
проснётся и решит запросить адрес - ему выдадут и адрес и dns-сервера и у меня
всё сломается. При поднятии интерфейса убивать искать и убивать dhcp-клиент?
При смене wifi-сети он нормально заново запустится?

В общем я в поиске верного решения, которое в дальнейшем потребует минимум
поддержки.
Спасибо.


--
Best regards,
Mikhail
-
WWW: http://www.antmix.ru/
XMPP: ant...@stopicq.ru

signature.asc

Eugene Berdnikov

unread,
Jan 10, 2015, 1:40:03 PM1/10/15
to
On Sat, Jan 10, 2015 at 07:36:12PM +0300, Mikhail A Antonov wrote:
> При подключении к сети с id_str="home" - resolvconf всё равно получает
> dns-сервера от dhcp и передаёт dnsmasq. Т.е. резолвинг по факту до
> dns-nameservers не доходит.
...
> Как бы поменять данное поведение? Отредактировать скрипт resolvconf или есть
> какая-нибудь хитрая опция, которая указывает что сервера от dhcp не надо
> использовать если указаны сервера в interfaces.
> Отредактировать скрипт не сложно, но
> * за ним придётся следить во время обновлений
> * другие программы могут продолжать использовать сервера, полученные от dhcp.
> Вариант "не запрашивать dns-сервера от dhcp" не подходит т.к. в других сетях мне
> нужно использовать именно те сервера, которые мне передал dhcp-сервер.

Если используется isc-dhcp-client (в дебиане по умолчанию), то предлагаю
прочесть man dhclient-script. Авторы вряд ли надеялись предусмотреть все
случаи в жизни, но они попытались обеспечить максимальную гибкость.

> В общем я в поиске верного решения, которое в дальнейшем потребует минимум
> поддержки.

Лучшее решение -- опознать сеть и навесить свои хуки. Если не получится,
то следующее по затратности решение -- поправить dhclient-script и
переключить dhclient.conf на свою копию этого скрипта.
--
Eugene Berdnikov


--
To UNSUBSCRIBE, email to debian-russ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listm...@lists.debian.org
Archive: https://lists.debian.org/20150110183...@sie.protva.ru

Artem Chuprina

unread,
Jan 18, 2015, 3:40:03 PM1/18/15
to
Mikhail A Antonov -> debian-...@lists.debian.org @ Sat, 10 Jan 2015 19:36:12 +0300:

MAA> В /etc/resolvconf/update.d/dnsmasq нашёл что resolvconf берёт все полученные
MAA> сервера и пишет их в файл, который потом обрабатывает dnsmasq.
MAA> dnsmasq в свою очередь берёт первый dns-сервер и общается с ним. А там сервер от
MAA> dhcp.

MAA> Как бы поменять данное поведение? Отредактировать скрипт resolvconf или есть
MAA> какая-нибудь хитрая опция, которая указывает что сервера от dhcp не надо
MAA> использовать если указаны сервера в interfaces.
MAA> Отредактировать скрипт не сложно, но
MAA> * за ним придётся следить во время обновлений
MAA> * другие программы могут продолжать использовать сервера, полученные от dhcp.
MAA> Вариант "не запрашивать dns-сервера от dhcp" не подходит т.к. в других сетях мне
MAA> нужно использовать именно те сервера, которые мне передал dhcp-сервер.

MAA> Пока такая сеть одна и она полностью мной контролируется - я могу вместо dhcp
MAA> использовать статический адрес и буду уверен что его никому не выдадут, но в
MAA> процессах я вижу висящий dhcp-клиент и есть у меня подозрение что когда он
MAA> проснётся и решит запросить адрес - ему выдадут и адрес и dns-сервера и у меня
MAA> всё сломается. При поднятии интерфейса убивать искать и убивать dhcp-клиент?
MAA> При смене wifi-сети он нормально заново запустится?

MAA> В общем я в поиске верного решения, которое в дальнейшем потребует минимум
MAA> поддержки.

Извини, сейчас мозга не хватает, могу неправильно понять, но.

dnsmasq'у в его конфиге можно объяснить, что данный домен или домены
надо запрашивать у данного конкретного DNS-сервера, независимо от чего
бы то ни было. Фрагмент с этой строчкой можно при желании динамически
создавать и удалять, dnsmasq умеет подчитывать фрагменты конфигов из
отдельных файлов.


--
To UNSUBSCRIBE, email to debian-russ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listm...@lists.debian.org
Archive: https://lists.debian.org/87bnlvg...@silver.lasgalen.net

Mikhail A Antonov

unread,
Jan 18, 2015, 5:40:02 PM1/18/15
to
18.01.2015 23:39, Artem Chuprina пишет:
Дело в том, что мне нужно не домен\домены спрашивать у конкретных NS, а вообще
все запросы отправлять к иным NS, отличным от тех, что мне выдают по dhcp.
Объясню зачем:
У меня дома всем по dhcp выдаётся NS, который находится на роутере. Этот NS
ходит на skydns и запрещает ходить к некоторым группам сайтов. На своём личном
ноутбуке я хочу использовать другие NS, которые ничего не запрещают. По
специфике работы мне приходится бывать там, куда нормальный человек даже не
подумает ходить.
При этом с этим ноутбуком я бываю в совсем разных сетях, в части которых мне
*необходимо* пользоваться NS, которые мне выдали по dhcp.
Как я вижу решение:
Для своей домашней сети настроить некий идентификатор (благо wpasupplicant это
умеет) и по нему назначать себе другие NS, вместо тех, которые выдают мне по dhcp.
Вот если использовать опцию dns-nameservers в interfaces - то resolvconf берёт и
указанные мной сервера, и те, которые выдали через dhcp.
Сейчас я настроил так:

iface home inet static
address 172.16.2.23
netmask 24
gateway 172.16.2.1
dns-nameservers 77.88.8.8 77.88.8.1
pre-up /sbin/sysctl -w net.ipv6.conf.wlan0.disable_ipv6=0
net.ipv6.conf.wlan0.accept_ra=1 net.ipv6.conf.wlan0.autoconf=1
up pkill --full "dhclient -v -pf /run/dhclient.wlan0.pid -lf
/var/lib/dhcp/dhclient.wlan0.leases wlan0" 2> /dev/null || true

Вроде всё работает, но иногда после выхода из s2ram приходится звать ifdown
wlan0; ifup wlan0 т.к. нет IPv4 на интерфейсе. IPv6 есть, а вот IPv4 нету.
Понаблюдаю ещё. Вероятно это умирающий dhcp-клиент убирает за собой v4 с
интерфейса. Будет надоедать - сделаю inet manual и в up позову ip addr add.

signature.asc
0 new messages