Я использую Network Manager (1.18.0-1) в системе Arch Linux, где
resolvconf
также присутствует (от openresolv
которого зависит базовый пакет netctl
).
Когда я подключаюсь к VPN-серверу через NetworkManager, у меня возникает проблема с сохранением записи DNS после отключения VPN. Я частично нашел причину:
- после подключения процесс NetworkManager включает сервер имен VPN в
resolv.conf
- относительно
/etc/ppp/ip-up.d/00-dns.sh
(ниже) и действительноUSEPEERDNS=1
вызываетсяresolvconf
; он сделает резервную копиюresolv.conf
и заменит собственной записью сервера имен - после отключения VPN
/etc/ppp/ip-down.d/00-dns.sh
вызываетresolvconf
удаление записи сервера имен и восстановлениеresolv.conf
изresolv.conf.bak
того места, где (в данный момент) находится запись недоступного сервера имен
Грязное исправление — отключить /etc/ppp/ip-up.d/00-dns.sh
(или просто закомментировать строку /usr/bin/resolvconf ...
). Я не хочу удалять, openresolv
потому что это сломает netctl
зависимость, а мне нужен этот базовый пакет тоже.
Поскольку NetworkManager не является "стандартным" сетевым инструментом в Arch Linux, я не уверен, является ли это своего рода ошибкой или я упускаю какие-то настройки. Каков правильный способ решения этой проблемы?
/etc/ppp/ip-up.d/00-dns.sh:
#!/bin/sh
if [ "$USEPEERDNS" = "1" -a -f /etc/ppp/resolv.conf ]; then
if [ -x /usr/bin/resolvconf ]; then
/usr/bin/resolvconf -a ${IFNAME} </etc/ppp/resolv.conf
else
[ -e /etc/resolv.conf ] && mv /etc/resolv.conf /etc/resolv.conf.backup.${IFNAME}
mv /etc/ppp/resolv.conf /etc/resolv.conf
chmod 644 /etc/resolv.conf
fi
fi