Pulling my hair for days here setting up DNS and DHCP with dnsmasq and the new way of doing things with netplan.

WAN-router is on 192.168.0.1 - works fine

LAN-router is on 192.168.1.1 - DHCP works fine, handing out 192.168.1.x addresses as it should. Can ping google.com

Client laptop is on 192.168.1.181 - Gets IP, can ping LAN-router, can ping IP addresses directly (such as 8.8.8.8) but traceroute and DNS does not work

This is my dnsmasq config:

bogus-priv
strict-order
filterwin2k
expand-hosts
domain=home
no-resolv
listen-address=127.0.0.1
listen-address=192.168.1.1
#DHCP range
dhcp-range=192.168.1.1,192.168.1.254,72h
dhcp-option=option:router,192.168.0.1

# Upstream name servers
server=192.168.0.1
server=8.8.4.4
server=8.8.8.8

Status of dnsmasq, boots fine:

Nov 15 06:54:17 router systemd[1]: Starting dnsmasq - A lightweight DHCP and caching DNS server...
Nov 15 06:54:17 router dnsmasq[2000]: dnsmasq: syntax check OK.
Nov 15 06:54:17 router dnsmasq[2030]: started, version 2.79 cachesize 150
Nov 15 06:54:17 router dnsmasq[2030]: compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth DNSSEC loop-detect inotify
Nov 15 06:54:17 router dnsmasq-dhcp[2030]: DHCP, IP range 192.168.1.1 -- 192.168.1.254, lease time 3d
Nov 15 06:54:17 router dnsmasq[2030]: using nameserver 8.8.8.8#53
Nov 15 06:54:17 router dnsmasq[2030]: using nameserver 8.8.4.4#53
Nov 15 06:54:17 router dnsmasq[2030]: using nameserver 192.168.0.1#53
Nov 15 06:54:17 router dnsmasq[2030]: read /etc/hosts - 7 addresses
Nov 15 06:54:17 router systemd[1]: Started dnsmasq - A lightweight DHCP and caching DNS server.

ip address show:

2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:e8:4c:68:61:52 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.205/24 brd 192.168.0.255 scope global dynamic enp1s0
       valid_lft 1962sec preferred_lft 1962sec
    inet6 fe80::2e8:4cff:fe68:6152/64 scope link
       valid_lft forever preferred_lft forever
3: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:e8:4c:68:61:53 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.1/24 brd 192.168.1.255 scope global enp2s0
       valid_lft forever preferred_lft forever
    inet6 fe80::2e8:4cff:fe68:6153/64 scope link
       valid_lft forever preferred_lft forever

netplan-yaml:

network:
    renderer: networkd
    ethernets:
        enp1s0:
            addresses: []
            dhcp4: true
        enp2s0:
            addresses: [192.168.1.1/24]
            gateway4: 192.168.0.1
            dhcp4: false
            nameservers:
              search: [home]
              addresses: [192.168.0.1,8.8.8.8,8.8.4.4]
    version: 2

I'm sure I've confused it along the way. I was able to DNS resolve for names from the client laptop for a while, but no actual data transport was possible, so wasn't possible to actually reach the internet practically.

It's all a bit new to me so would appreciate any pointers.

up vote 1 down vote accepted

This in not really an issue with netplan; you appear to have bugs in your dnsmasq config.

Your dnsmasq config, which as I understand is running on the Ubuntu router that connects your WAN and LAN interfaces, and is serving DHCP config to the LAN interface, has an entry of:

dhcp-option=option:router,192.168.0.1

However, 192.168.0.1 is not an address on your LAN network; it is an address on your WAN network (your WAN gateway). So it is incorrect to tell your DHCP clients on the LAN network to use this as their gateway, because they have no route to that gateway.

Instead, you should be providing the LAN address of the Ubuntu router as the gateway:

dhcp-option=option:router,192.168.1.1

You also need to have IP forwarding configuration on your Ubuntu router: How to make IP forwarding permanent?

Furthermore, you need to either configure your WAN router to know about your Ubuntu router and that it is a gateway for the 192.168.1.0/24 network, or configure NAT on your Ubuntu router: Configure Nat in Ubuntu 12.04

  • Side comment, it's not the cause of your routing problems, but both the gateway4 and nameservers->addresses sections of your netplan yaml are no-ops, because you are already getting this information via DHCP on the enp1s0 interface from your WAN router. It is redundant to encode this information in your netplan config, and therefore a good idea not to. – slangasek Nov 19 at 23:46
  • Beautiful - exactly what I ended up finding out as I struggled last weekend with this. Forgot to update with an answer here so thanks a lot for spending the time to do this! – Phil Nov 21 at 8:37

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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