Network Manager + dnsmasq are not correctly assigning upstream DNS servers

Bug #1507858 reported by geo
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
network-manager (Ubuntu)
New
Undecided
Unassigned

Bug Description

I'm guessing that the problem is in network-manager, but could be network-manager-openvpn, or network-manager-openvpn-grnome, or dnsmasq?)

I have a fresh install of xubuntu 14.04.3 amd64. network-manager 0.9.8.8-0ubuntu7.1

It has one eth port connected, plus 2 OpenVPN connections to remote gateways defined but not normally enabled.

The 2 VPN connections are mutually exclusive. There is no selective routing defined, so if either is
enabled its gateway becomes the default route. This all seems to be working as expected.

Obviously I can only ever have one or the other VPN active, never both.

However, the dns nameserver assignment is not working correctly.

All of the config has been specified via the NM panel applet, but for clarity I will show you
extracts from the NM connrction configs in /etc/NetworkManager/system-connections/....

Ignoring the [connection],[vpn],[vpn-secrets] sections here are the 3 [ipv4] and [ipv6] sections:

-----------------
FOR ETH1:

  [ipv6]
  method=ignore

  [ipv4]
  method=manual
  dns=192.168.88.1;
  address1=192.168.88.104/24,192.168.88.1
----------------
FOR VPN-A:

  [ipv6]
  method=ignore

  [ipv4]
  method=auto
  dns=111.111.111.111;222.222.222.222; (edited for this report)
-----------------
and FOR VPN-B:

  [ipv6]
  method=ignore

  [ipv4]
  method=auto
  dns=333.333.333.333; (edited for this report)
------------------

Starting with networking disabled and using the NM panel applet to activate the various
connections I can monitor in syslog which DNS servers dnsmasq is choosing for its upstream lookups.

Step-1, enable eth1 (with both VPN connections disabled)
syslog shows:
  dnsmasq[2124]: setting upstream servers from DBus
  dnsmasq[2124]: using nameserver 192.168.88.1#53
(this is good, 192.168.88.1 is a local gateway and dns server combined)

Step-2, enable VPN-A
syslog-shows:
  dnsmasq[2124]: setting upstream servers from DBus
  dnsmasq[2124]: using nameserver 111.111.111.111#53
  dnsmasq[2124]: using nameserver 222.222.222.222#53
(this is good, 192.168.88.1 has been dropped and the 2 servers defined for VPN-A have been selected)

Step-3, disable VPN-A
syslog shows:
  dnsmasq[2124]: setting upstream servers from DBus
  dnsmasq[2124]: using nameserver 192.168.88.1#53
(this is good, exactly as we were before enabling VPN-A)

Step-4, enable VPN-B
syslog shows:
  dnsmasq[2124]: setting upstream servers from DBus
  dnsmasq[2124]: using nameserver 333.333.333.333#53
  dnsmasq[2124]: using nameserver 111.111.111.111#53
  dnsmasq[2124]: using nameserver 222.222.222.222#53
(NO!, this is BAD, nameservers 111 and 222 have nothing to do with VPN-B)

Step-5, disable VPN-B
syslog shows:
  dnsmasq[2124]: setting upstream servers from DBus
  dnsmasq[2124]: using nameserver 192.168.88.1#53
(this is good, )

Step-6, lets try enabling VPN-A again
syslog-shows:
  dnsmasq[2124]: setting upstream servers from DBus
  dnsmasq[2124]: using nameserver 111.111.111.111#53
  dnsmasq[2124]: using nameserver 222.222.222.222#53
(this is good, )

I have experimented with this in multiple ways, as far as I can see any DNS servers applicable to
the FIRST VPN to be activated are somehow "sticky". If I restart network-manager and then
activate VPN-B I still get the wrong nameservers. If I want to activate VPN-B with its correct nameserver
as defined then I have to re-boot and activate VPN-B before VPN-A. Then of course I end up with the opposite
problem that VPN-A's nameservers are messed up.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.