Ubuntu Server 16.04 not getting dhcpv6 leases

  • I'm setting up a ubuntu server running 16.04. I'm planning to use it for openvpn. It has two NICs, each with a /24 ipv4 and /64 ipv6. It's getting dhcp4 leases, but not dhcp6 leases. I'm pretty sure this isn't a pfsense problem, but I figured I'd try here before opening an account on the ubuntu forum so I can ask there.

    I'm running pfsense 2.4 with two LAN interfaces, both with ipv4 and ipv6. A windows 10 client gets ipv4 and ipv6 leases on both interfaces so I don't think there are any issues with pfsense.

    You can see below that it's getting SLAAC addresses. I can ping the addresses on eth0 and eth1 as well as external addresses, so I'm thinking this is a dhclient configuration issue. I'm new to *nix network administration so not sure where to look.

    Here is the output from ip address:

    1: lo: <loopback,up,lower_up>mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host
           valid_lft forever preferred_lft forever
    2: eth0: <broadcast,multicast,up,lower_up>mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:15:5d:5c:e2:22 brd ff:ff:ff:ff:ff:ff
        inet brd scope global eth0
           valid_lft forever preferred_lft forever
        inet6 2001:569:xxxx:b600:215:5dff:fe5c:e222/64 scope global mngtmpaddr dynamic
           valid_lft 86389sec preferred_lft 14389sec
        inet6 fe80::215:5dff:fe5c:e222/64 scope link
           valid_lft forever preferred_lft forever
    3: eth1: <broadcast,multicast,up,lower_up>mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:15:5d:5c:e2:23 brd ff:ff:ff:ff:ff:ff
        inet brd scope global eth1
           valid_lft forever preferred_lft forever
        inet6 2001:569:xxxx:b601:215:5dff:fe5c:e223/64 scope global mngtmpaddr dynamic
           valid_lft 86391sec preferred_lft 14391sec
        inet6 fe80::215:5dff:fe5c:e223/64 scope link
           valid_lft forever preferred_lft forever</broadcast,multicast,up,lower_up></broadcast,multicast,up,lower_up></loopback,up,lower_up> 

    When I run sudo service networking restart, it hangs. If I ^C and run it again, it works.

    Here is the output from sudo service networking status:

    ● networking.service - Raise network interfaces
       Loaded: loaded (/lib/systemd/system/networking.service; enabled; vendor prese
      Drop-In: /run/systemd/generator/networking.service.d
       Active: active (exited) since Sat 2016-11-05 14:41:33 PDT; 24min ago
         Docs: man:interfaces(5)
      Process: 36861 ExecStop=/sbin/ifdown -a --read-environment (code=exited, statu
      Process: 37266 ExecStart=/sbin/ifup -a --read-environment (code=exited, status
      Process: 37259 ExecStartPre=/bin/sh -c [ "$CONFIGURE_INTERFACES" != "no" ] &&
     Main PID: 37266 (code=exited, status=0/SUCCESS)
        Tasks: 0
       Memory: 0B
          CPU: 0
       CGroup: /system.slice/networking.service
    Nov 05 14:41:33 ubuntu-openvpn systemd[1]: Starting Raise network interfaces...
    Nov 05 14:41:33 ubuntu-openvpn systemd[1]: Started Raise network interfaces.

    Here is /etc/network/interfaces:

    administrator@ubuntu-openvpn:~$ more /etc/network/interfaces
    # This file describes the network interfaces available on your system
    # and how to activate them. For more information, see interfaces(5).
    source /etc/network/interfaces.d/*
    # The loopback network interface
    auto lo
    iface lo inet loopback
    iface lo inet6 loopback
    # The primary network interface
    auto eth0
    iface eth0 inet dhcp
    iface etho inet6 dhcp
    #pre-up modprobe ipv6
    auto eth1
    iface eth1 inet dhcp
    iface eth1 inet6 dhcp
    #pre-up modprobe ipv6

    I tried uncommenting the modprobe statements but that made no difference.

    Here is /etc/dhcp/dhclient.conf:

    # Configuration file for /sbin/dhclient.
    # This is a sample configuration file for dhclient. See dhclient.conf's
    #       man page for more information about the syntax of this file
    #       and a more comprehensive list of the parameters understood by
    #       dhclient.
    # Normally, if the DHCP server provides reasonable information and does
    #       not leave anything out (like the domain name, for example), then
    #       few changes must be made to this file, if any.
    option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;
    send host-name = gethostname();
    request subnet-mask, broadcast-address, time-offset, routers,
            domain-name, domain-name-servers, domain-search, host-name,
            dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers,
            netbios-name-servers, netbios-scope, interface-mtu,
            rfc3442-classless-static-routes, ntp-servers;
    #send dhcp-client-identifier 1:0:a0:24:ab:fb:9c;
    #send dhcp-lease-time 3600;
    #supersede domain-name "fugue.com home.vix.com";
    #prepend domain-name-servers;
    #require subnet-mask, domain-name-servers;
    timeout 300;
    #retry 60;
    #reboot 10;
    #select-timeout 5;
    #initial-interval 2;
    #script "/sbin/dhclient-script";
    #media "-link0 -link1 -link2", "link0 link1";
    #alias {
    #  interface "eth0";
    #  fixed-address;
    #  option subnet-mask;
    #lease {
    #  interface "eth0";
    #  fixed-address;
    #  medium "link0 link1";
    #  option host-name "andare.swiftmedia.com";
    #  option subnet-mask;
    #  option broadcast-address;
    #  option routers;
    #  option domain-name-servers;
    #  renew 2 2000/1/12 00:00:01;
    #  rebind 2 2000/1/12 00:00:01;
    #  expire 2 2000/1/12 00:00:01;

    Is this statement supposed to be commented out? Where does the value come from?

    #send dhcp-client-identifier 1:0:a0:24:ab:fb:9c;

    Thanks in advance.