Продолжение предыдущего поста.
... Но что делать, если мы прям очень не любим NetworkManager до такой степени, что аж кушать не можем? Есть вариант обойтись без него, но systemd-resolved всё равно понадобится.
Способ 2. OpenVPN + bash-скрипт + systemd-resolved.
Устанавливаем пакетик под названием "openvpn-systemd-resolved". По сути, в этот пакет упакован единственный bash-скрипт "/etc/openvpn/update-systemd-resolved". Если в вашем дистрибутиве такого пакета нет, то сам скрипт можно скачать отдельно
вот здесь, не забыть только потом сделать его исполняемым (chmod 755).
Далее в конфиги всех OpenVPN-клиентов понадобится внести строчки
script-security 2
setenv PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
up /etc/openvpn/update-systemd-resolved
up-restart
down /etc/openvpn/update-systemd-resolved
down-pre
Собственно, всё. Запускаем OpenVPN "как обычно" и наслаждаемся собственной крутизной в течение 5 минут.
Если же мы и systemd-resolved тоже не любим, то остаются ещё
способы 3, 4. DNSMasq
Разница между способом №3 и №4 заключается только в том, как именно мы собираемся запускать dnsmasq: в режиме плагина к NetworkManager или Standalone.
В последнем случае ему надо будет обязательно указать DNS-сервера по умолчанию. Для примера пусть это будут google public DNS.
server=8.8.8.8
server=8.8.4.4
Если запускаем как плагин, то дефолтные сервера прописывать в конфиге DNSMasq-а не нужно, т.к. их "спустит" сам NetworkManager. Но при любом варианте необходимо определить список интересующих нас доменов и у кого их запрашивать. Ради этого собственно всё и затевалось. Например.
server=/foo.corp/172.16.10.3
server=/foo.corp/172.16.20.3
server=/bar.intranet/192.168.5.6
server=/bar.intranet/192.168.6.8
server=/5.168.192.in-addr.arpa/6.168.192.in-addr.arpa/192.168.5.6
server=/5.168.192.in-addr.arpa/6.168.192.in-addr.arpa/192.168.6.8
Если мы используем DNSMasq, то в "/etc/resolv.conf" должен быть "nameserver 127.0.0.1" и никаких символических ссылок, т.к. отвечать на запросы локального libc-ресолвера по сюжету должен именно он (капитанствую, да).
Собственно, это всё. Оговорюсь, что все возможные варианты с Linux-ом не ограничиваются четырмя рассмотренными, но дальше уж совсем экзотика начинается. Ага, когда dnsmasq-а и systemd-resolved ещё не существовало в природе, я для решения таких вот задач на своем рабочем десктопе локальный BIND поднимал. Ещё мы проходили всякие resolvconf и nscd. Но эти уродцы, к счастью, остались в далёком прошлом.
Всем стабильных каналов и быстрого разрешения имён.