Имею такую конфигурацию в 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
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.