I have built a router based on Ubuntu server 16.04 LTS, which also acts as my home server. Right after fresh installation when I use
ip addr, it successfully gave me the global ipv6 (not the local link that looks like fe80::) that Comcast assigns (stateless). So I continued on setting up isc-dhcp-server and iptables rules for the ipv4 connections, which was fairly straight forward with all the guides available online. This allows me to ssh in and set up the rest from my desk and made things so much easier.
Here is when I started running into problems. So I have two nics, and the
/etc/network/interfaces is as follows:
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8) # Generated by debian-installer. # The loopback interface auto lo iface lo inet loopback # WAN interface auto enp37s0 iface enp37s0 inet dhcp iface enp37s0 inet6 dhcp # LAN interface auto enp30s0 iface enp30s0 inet static address 192.168.1.1 network 192.168.1.0 netmask 255.255.255.0 broadcast 192.168.1.255
Very few posts online details the scenario where Ubuntu machine as a router directly connected to ISP modem that capable of native stateless ipv6. But I managed to find one post "here" and piece up info from a range of other posts. The things I had tried was
radvd for forwarding the ipv6 advertisement to my other hosts within the network. Nothing really worked, where the furthest I got was being able to have my ubuntu router assigning ipv6 addresses defined in various .conf files. Then I realized that even if my dhcp setup worked, I wouldn't have gotten internet through ipv6 because I am no longer getting global ipv6 address from modem, here is the
ip addr output from my wan nic:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 valid_lft forever preferred_lft forever 2: enp30s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff inet 192.168.1.1/24 brd 192.168.1.255 scope global enp30s0 valid_lft forever preferred_lft forever inet6 fe80::21b:xxxx:xxxx:xxxx/64 scope link valid_lft forever preferred_lft forever 3:enp37s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff inet 71.xxx.xxx.x/22 brd 255.255.255.255 scope global enp37s0 valid_lft forever preferred_lft forever inet6 fe80::7285:xxxx:xxxx:xxxx/64 scope link valid_lft forever preferred_lft forever
As you can see that it is clearly missing the address with
2001:558:6017:a0:: prefix that I used to get. At this point, I am basically really tired after wasting days trying to get my ubuntu router to be Ipv6 ready. So I just want to revert back to the original state where Ipv6 at least works for the ubuntu router itself, and maybe try again later.
So I stopped and removed all the packages I installed for the ipv6 'experiment'. I also reverted back the changes in the
sysctl.conf with these lines according to the post1 and post2 I read:
net.ipv6.conf.all.forwarding=0 net.ipv6.conf.default.forwarding=0 net.ipv6.conf.enp37s0.accept_ra =1 net.ipv6.conf.enp37s0.accept_ra_defrtr=1 net.ipv6.conf.enp37s0.accept_ra_pinfo=1 net.ipv6.conf.enp37s0.accept_ra_rtr_pref=1
Unfortunately, no matter what I do, the ipv6 link is not coming back! Here are a few more things I tried:
dmesg |grep IPv6 [ 27.515582] IPv6: ADDRCONF(NETDEV_UP): enp30s0: link is not ready [ 27.565749] IPv6: ADDRCONF(NETDEV_UP): enp37s0: link is not ready [ 30.417452] IPv6: ADDRCONF(NETDEV_CHANGE): enp37s0: link becomes ready [ 32.088828] IPv6: ADDRCONF(NETDEV_CHANGE): enp30s0: link becomes ready test -f /proc/net/if_inet6 && echo "Running kernel is IPv6 ready" Running kernel is IPv6 ready
At this point, I do not know what I should try, but I am extremely bothered by this. I would greatly appreciate any suggestions at this point.