When I try to push a DNS server via the OpenVPN server-config I don't get that server to be the first DNS server on the connected client system. It ends up being specified as an alternative DNS server.

push "dhcp-option DNS" # DNS-Server 1 (local djbdns)

To overcome certain network restrictions, if they're at place, I use 443 TCP. - That means that my DNS queries are sent via TCP (if I manually reconfigure the DNS server), which doesn't scale very well from a performance perspective.

Are there any kewl solutions for that?


  • Bit unclear... are you saying you run DNS on port 443 (https)? Anyway, what OS are your clients running? – emgee Nov 2 '09 at 21:03
  • - the OpenVPN daemon on the remote server works on 443. The DNSd runs on a Linux box. If I route the traffic through the OpenVPN tunnel the DNS traffic is tunneld through 443, too. – wishi Nov 2 '09 at 21:08
  • Gotcha, so the main problem you are trying to overcome is pushed DNS settings don't show up as primary, but as secondary? – emgee Nov 2 '09 at 21:29
  • That, and even if I configure it - TCP and DNS don't scale together. – wishi Nov 2 '09 at 21:56

I've noticed that it differs based on "client". If I use network manager I get the DNS but if I use "regular" openvpn service (in Ubuntu) I don't get the DNS. I haven't look deeper into this since I usually let network manager connect my vpn.

  • sorry for accepting this answer rather late... I think something is wrong here with my account connection on StackOF and so on... – wishi Oct 23 '10 at 10:01
  • 1
    I wanted to vote up Jimmy's answer, but since I can't, I'd like to give thumbs up in this post: Effectively, the NetworkManager openvpn plugin DOES update the /etc/resolv.conf with the DNS options pushed by openvpn server. – Arno Teigseth Mar 11 '13 at 13:01
  • Agree, NetworkManager manages to get that right sigh here's hoping for clean .ovpn compatibility someday... – Charney Kaye Aug 2 '15 at 21:43
  • See serverfault.com/a/590722/82338 – Gajus Jun 29 '16 at 21:10

If one is committed to the openvpn terminal vector, put a bash script called ~/bin/m0vpn (for a VPN called m0) so I connect by simply opening a terminal and typing:


Here is the script:

TEMPRESOLV="nameserver\ndomain prd1.m0\n"
# The next two lines create a temporary /etc/resolv.conf which includes the original.
# For extra security you may modify this behavior (to use Only your own DNS server)
# ^ But then, you must connect to an IP address (no hostname) from your .ovpn file!
sudo printf "$TEMPRESOLV" | cat - /run/resolvconf/resolv.conf > /tmp/resolv.conf
sudo mv /tmp/resolv.conf /etc/resolv.conf
printf "Temporary /etc/resolv.conf:\n$TEMPRESOLV"
sudo openvpn $OVPNFILE
sudo ln -sf /run/resolvconf/resolv.conf /etc/resolv.conf
echo "Reset resolv.conf"

And perhaps someday NetworkManager will simply be able to use the .ovpn file.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.