Openvpn client, force DNS server
Our Linux Ubuntu configuration does have a DNS server (Bind 9).
And resolv.conf
has its
nameserver 127.0.0.1
When using openvpn
client on that Linux, the nameserver is not changed (by the VPN server) but I would like to set it - only during the VPN session - to another specific DNS server x.y.z.t
, by changing the openvpn client config.
Then, when the openvpn
session ends, nameserver should be back to 127.0.0.1
.
Is there a "clean" way (ie a line in the openvpn client config file) to do that?
(Note: The VPN server config cannot be changed)
Solution 1:
After more googling, could find the answer - below if it can help someone.
- install resolvconf which can save and restore the
resolv.conf
config file - add a script to be run by openvpn, in
/usr/share/openvpn
, namedupdate-resolv-conf
. The script determines what should be the newresolv.conf
, and how to restore it (see link below) - add
these lines
script-security 2
up /usr/share/openvpn/update-resolv-conf
down /usr/share/openvpn/update-resolv-conf
in the openvpn client config file.
Read on this wiki for more information.
Solution 2:
2022 update (Arch Linux)
To set a public dns server and update resolvconf, add the following to your ovpn client profile file:
dhcp-option DNS 1.1.1.1
script-security 2
up /usr/share/openvpn/contrib/pull-resolv-conf/client.up
down /usr/share/openvpn/contrib/pull-resolv-conf/client.down