Я использую клиента VPN, который добавляет два сервера имен к /etc/resolv.conf
. Всеми моими подключениями управляет Администратор сети.
Я должен использовать этого клиента VPN для своей работы VPN, но после того, как Ubuntu перешла в systemd-resolved
в 16,10 у меня есть проблемы с моим соединением и DNS. Похож systemd-resolved
изменения /etc/resolv.conf
назад к серверам имени по умолчанию по некоторым причинам, который заставляет внутренние страницы не решить. Я изучил это еще немного и закончил тем, что заменил resolvconf
с openresolv
. Это помогло много, но все еще systemd-resolved
сброс /etc/resolv.conf
после того, как VPN произошла некоторое время.
Это могло быть так же, как соединение закончилось или после нескольких минут или иногда нисколько. Я затем отключил systemd-resolved
и systemd resolvconf.service
и только выполненный openresolv
. Все это работает хорошо, это кажется.
Однако это все очень сбивает с толку. Есть ли причина использования systemd-resolved
с одним из других? Это было включено в Ubuntu 16.10, таким образом, я думал, что должна быть причина его, но это, кажется, вызывает борьбу /etc/resolv.conf
.
Было бы замечательно, если я мог бы просто работать operesolv
и объясните это. Я сделал довольно мало чтения на нем, но я все еще не понимаю почему /etc/resolv.conf
управляется как он, только это, когда я использую systemd
для него я не могу использовать своего клиента VPN.
Мне удалось изменить сценарий, который обрабатывает эти элементы конфигурации в OpenVPN в Ubuntu (протестированный на 18,04). Вот патч для этого:
--- /etc/openvpn/update-resolv-conf.orig 2019-03-13 19:14:16.163914424 +0400
+++ /etc/openvpn/update-resolv-conf 2019-03-13 19:29:30.380420708 +0400
@@ -15,7 +15,7 @@
# foreign_option_3='dhcp-option DOMAIN be.bnc.ch'
#
-[ -x /sbin/resolvconf ] || exit 0
+[ -x /usr/bin/systemd-resolve ] || exit 0
[ "$script_type" ] || exit 0
[ "$dev" ] || exit 0
@@ -43,16 +43,16 @@
fi
done
R=""
- [ "$SRCHS" ] && R="search $SRCHS
-"
+ for SRCH in $SRCHS ; do
+ R="${R}--set-domain=$SRCH "
+ done
for NS in $NMSRVRS ; do
- R="${R}nameserver $NS
-"
+ R="${R}--set-dns=$NS "
done
- echo -n "$R" | /sbin/resolvconf -a "${dev}.openvpn"
+ /usr/bin/systemd-resolve -i ${dev} ${R}
;;
down)
- /sbin/resolvconf -d "${dev}.openvpn"
+ echo "Doing nothing, interface disappears."
;;
esac
необходимо будет добавить следующие объекты к конфигурационному файлу OpenVPN:
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
Какого клиента VPN Вы используете? Я испытывал затруднения из-за прямого OpenVPN, но устанавливал версию NM клиента, разрешил проблемы. Ну, большинство из них, я не мог предотвратить продвигаемый маршрут, но это - совершенно другая проблема.
точка: Ваш клиент VPN имеет для знания о том, как взаимодействовать с идеей systemd того, как справиться с сервисом DNS. Я не рекомендую это, но можно попробовать к отключению resolvd сервиса (systemctl disable systemd-resolved.service
), чтобы видеть, улучшает ли это вещи, но в конечном счете необходимо будет получить клиент, который понимает, как отправить капризам systemd :)
(Поставка systemd, пересеченная под парусом давным-давно, давайте не откроем обсуждение того, почему были сделаны некоторые вещи.)
Обновление клиента VPN я использовал разрешенный (предназначенная игра слов) проблема. Это был клиент OpenFortiGui для Fortinet VPN.