systemd-resolved, resolvconf.service, resolvconf and openresolv. Why, which and how?
I managed to change the script that handles these configuration items in OpenVPN in Ubuntu (tested on 18.04). Here is a patch for that:
--- /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
You will need to add the following items to your OpenVPN configuration file:
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
Related videos on Youtube
Christian
Not much I would like to share here other than that Linnux has been my OS since '98
Updated on September 18, 2022Comments
-
Christian over 1 year
I'm using a VPN client which adds two name servers to
/etc/resolv.conf
. All my connections are managed by Network-Manager.I have to use this VPN client for my work VPN but after Ubuntu went to
systemd-resolved
in 16.10 I am having problems with my connection and DNS. Looks likesystemd-resolved
changes/etc/resolv.conf
back to default name servers for some reason which makes internal pages not resolve. I looked into this some more and ended up replacingresolvconf
withopenresolv
. That helped a lot, but stillsystemd-resolved
resets/etc/resolv.conf
after the VPN has been up for a while.It could be just as the connection is up or after a few minutes or sometimes not at all. I then disabled
systemd-resolved
and thesystemd resolvconf.service
and only runopenresolv
. It all works well it seems.However, this is all very confusing. Is there a reason for using
systemd-resolved
with one of the others? It was enabled in Ubuntu 16.10 so I thought there must be a reason for it but it seems to cause a fight over/etc/resolv.conf
.It would be great if I could just run
operesolv
and get this explained. I have done quite a bit of reading on it but I still do not understand why/etc/resolv.conf
is managed like it is, only that when I usesystemd
for it I can't use my VPN client. -
Christian about 5 yearsThis problem got resolved in an update of the VPN client. It was the OpenFortiGui client for my work Fortinet VPN. So you are absolutely right, the client has now learned systemd! :)