Hi, I have a protectli router installed with openwrt. It's been great so far with configuration. However, I learnt that my ISP has a CGNAT so I cannot simply use IPv4 public IP to connect to router from outside directly. I wanted to explore the concept of new protocol - IPv6. I confirmed with my ISP that the IPv6 is public and available to me, and even confirmed on the router that came with ISP that when visiting whatismyip website, I can see that IPv6 is available and ready, but it's not available through OpenWRT router.
Now that I confirmed that I can use IPv6, I wanted to configure it on my OpenWRT router. I was working on this for a whole day and I cannot figure out why it is not working, does anyone know what the issue is and how to resolve it? I can successfully ping for example google ipv6 DNS, even from devices, its just ipv6 is not showing public ip address on whatsmyip, I need it to be accessible from internet
ping -6 2001:4860:4860::8888
PING 2001:4860:4860::8888 (2001:4860:4860::8888) 56 data bytes
64 bytes from 2001:4860:4860::8888: icmp_seq=1 ttl=56 time=18.1 ms
OpenWrt 23.05.4, r24012-d8dd03c46f
~ uci show network.wan
network.wan=interface
network.wan.device='eth0'
network.wan.proto='dhcp'
network.wan.delegate='0'
network.wan.peerdns='0
~ uci show network.wan6
network.wan6=interface
network.wan6.proto='dhcpv6'
network.wan6.device='@wan'
network.wan6.reqaddress='try'
network.wan6.reqprefix='auto'
~ uci show network.Fibre_Optic_102
network.Fibre_Optic_102=interface
network.Fibre_Optic_102.proto='static'
network.Fibre_Optic_102.device='radio0.network1'
network.Fibre_Optic_102.ipaddr='192.168.2.1'
network.Fibre_Optic_102.netmask='255.255.255.0'
network.Fibre_Optic_102.delegate='0'
network.Fibre_Optic_102.ip6assign='64'
network.Fibre_Optic_102.ip6ifaceid='::2'
~ uci show network.lan
network.lan=interface
network.lan.device='br-lan'
network.lan.proto='static'
network.lan.ipaddr='192.168.1.1'
network.lan.netmask='255.255.255.0'
network.lan.ip6assign='64'
network.lan.ip6ifaceid='::1'
network.lan.delegate='0'
~ ip -6 route show
default from 2a02:6b68:0:181::1a7 via fe80::d666:24ff:fe8e:38db dev eth0 metric 512
default from 2a02:6b6f:ffa1:9c00::/56 via fe80::d666:24ff:fe8e:38db dev eth0 metric 512
2a02:6b68:0:181::/64 dev eth0 metric 256
2a02:6b6f:ffa1:9c00::/64 dev phy0-ap0 metric 256 expires 0sec
2a02:6b6f:ffa1:9c00::/64 dev phy0-ap0 metric 1024
2a02:6b6f:ffa1:9c01::/64 dev br-lan metric 256 expires 0sec
2a02:6b6f:ffa1:9c01::/64 dev br-lan metric 1024
unreachable 2a02:6b6f:ffa1:9c00::/56 dev lo metric 2147483647
fd75:2ef3:940b::/64 dev phy0-ap0 metric 1024
fd75:2ef3:940b:1::/64 dev br-lan metric 1024
unreachable fd75:2ef3:940b::/48 dev lo metric 2147483647
fe80::/64 dev br-lan metric 256
fe80::/64 dev phy0-ap0 metric 256
fe80::/64 dev eth0 metric 256
anycast 2a02:6b6f:ffa1:9c00:: dev phy0-ap0 metric 0
anycast 2a02:6b6f:ffa1:9c01:: dev br-lan metric 0
anycast fd75:2ef3:940b:: dev phy0-ap0 metric 0
anycast fd75:2ef3:940b:1:: dev br-lan metric 0
anycast fe80:: dev br-lan metric 0
anycast fe80:: dev phy0-ap0 metric 0
anycast fe80:: dev eth0 metric 0
multicast ff00::/8 dev br-lan metric 256
multicast ff00::/8 dev phy0-ap0 metric 256
multicast ff00::/8 dev eth0 metric 256
~ uci show firewall
firewall.@defaults[0]=defaults
firewall.@defaults[0].input='REJECT'
firewall.@defaults[0].output='ACCEPT'
firewall.@defaults[0].forward='REJECT'
firewall.@defaults[0].synflood_protect='1'
firewall.@zone[0]=zone
firewall.@zone[0].name='lan'
firewall.@zone[0].input='ACCEPT'
firewall.@zone[0].output='ACCEPT'
firewall.@zone[0].forward='ACCEPT'
firewall.@zone[0].network='lan'
firewall.@zone[1]=zone
firewall.@zone[1].name='wan'
firewall.@zone[1].input='REJECT'
firewall.@zone[1].output='ACCEPT'
firewall.@zone[1].forward='REJECT'
firewall.@zone[1].masq='1'
firewall.@zone[1].mtu_fix='1'
firewall.@zone[1].network='wan' 'wan6'
firewall.@forwarding[0]=forwarding
firewall.@forwarding[0].src='lan'
firewall.@forwarding[0].dest='wan'
firewall.@rule[0]=rule
firewall.@rule[0].name='Allow-DHCP-Renew'
firewall.@rule[0].src='wan'
firewall.@rule[0].proto='udp'
firewall.@rule[0].dest_port='68'
firewall.@rule[0].target='ACCEPT'
firewall.@rule[0].family='ipv4'
firewall.@rule[1]=rule
firewall.@rule[1].name='Allow-Ping'
firewall.@rule[1].src='wan'
firewall.@rule[1].proto='icmp'
firewall.@rule[1].icmp_type='echo-request'
firewall.@rule[1].family='ipv4'
firewall.@rule[1].target='ACCEPT'
firewall.@rule[2]=rule
firewall.@rule[2].name='Allow-IGMP'
firewall.@rule[2].src='wan'
firewall.@rule[2].proto='igmp'
firewall.@rule[2].family='ipv4'
firewall.@rule[2].target='ACCEPT'
firewall.@rule[3]=rule
firewall.@rule[3].name='Allow-DHCPv6'
firewall.@rule[3].src='wan'
firewall.@rule[3].proto='udp'
firewall.@rule[3].dest_port='546'
firewall.@rule[3].family='ipv6'
firewall.@rule[3].target='ACCEPT'
firewall.@rule[4]=rule
firewall.@rule[4].name='Allow-MLD'
firewall.@rule[4].src='wan'
firewall.@rule[4].proto='icmp'
firewall.@rule[4].src_ip='fe80::/10'
firewall.@rule[4].icmp_type='130/0' '131/0' '132/0' '143/0'
firewall.@rule[4].family='ipv6'
firewall.@rule[4].target='ACCEPT'
firewall.@rule[5]=rule
firewall.@rule[5].name='Allow-ICMPv6-Input'
firewall.@rule[5].src='wan'
firewall.@rule[5].proto='icmp'
firewall.@rule[5].icmp_type='echo-request' 'echo-reply' 'destination-unreachable' 'packet-too-big' 'time-exceeded' 'bad-header' 'unknown-header-type' 'router-solicitation' 'neighbour-solicitation' 'router-advertisement' 'neighbour-advertisement'
firewall.@rule[5].limit='1000/sec'
firewall.@rule[5].family='ipv6'
firewall.@rule[5].target='ACCEPT'
firewall.@rule[6]=rule
firewall.@rule[6].name='Allow-ICMPv6-Forward'
firewall.@rule[6].src='wan'
firewall.@rule[6].dest='*'
firewall.@rule[6].proto='icmp'
firewall.@rule[6].icmp_type='echo-request' 'echo-reply' 'destination-unreachable' 'packet-too-big' 'time-exceeded' 'bad-header' 'unknown-header-type'
firewall.@rule[6].limit='1000/sec'
firewall.@rule[6].family='ipv6'
firewall.@rule[6].target='ACCEPT'
firewall.@rule[7]=rule
firewall.@rule[7].name='Allow-IPSec-ESP'
firewall.@rule[7].src='wan'
firewall.@rule[7].dest='lan'
firewall.@rule[7].proto='esp'
firewall.@rule[7].target='ACCEPT'
firewall.@rule[8]=rule
firewall.@rule[8].name='Allow-ISAKMP'
firewall.@rule[8].src='wan'
firewall.@rule[8].dest='lan'
firewall.@rule[8].dest_port='500'
firewall.@rule[8].proto='udp'
firewall.@rule[8].target='ACCEPT'
firewall.@zone[2]=zone
firewall.@zone[2].name='WiFi_FW'
firewall.@zone[2].input='REJECT'
firewall.@zone[2].output='ACCEPT'
firewall.@zone[2].forward='REJECT'
firewall.@zone[2].family='ipv4'
firewall.@zone[2].network='Fibre_Optic_102'
~ ip -6 addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
inet6 2a02:6b68:0:181::1a7/128 scope global dynamic noprefixroute
valid_lft 688911sec preferred_lft 602511sec
inet6 fe80::6662:66ff:fe21:f9b7/64 scope link
valid_lft forever preferred_lft forever
7: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
inet6 2a02:6b6f:ffa1:9c01::1/64 scope global dynamic noprefixroute
valid_lft 688912sec preferred_lft 602512sec
inet6 fd75:2ef3:940b:1::1/64 scope global noprefixroute
valid_lft forever preferred_lft forever
inet6 fe80::6662:66ff:fe21:f9b8/64 scope link
valid_lft forever preferred_lft forever
8: phy0-ap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
inet6 2a02:6b6f:ffa1:9c00::2/64 scope global dynamic noprefixroute
valid_lft 688912sec preferred_lft 602512sec
inet6 fd75:2ef3:940b::2/64 scope global noprefixroute
valid_lft forever preferred_lft forever
inet6 fe80::215:61ff:fe23:d27a/64 scope link
valid_lft forever preferred_lft forever
check with nslookup wimi.com a) from the router and b) from the client and show result;
use an external scanner tool like http://www.ipv6scanner.com to generate incoming traffic and tcpdump on your router to see if you get anything from the outside
It appears the DNS issue is due to the fact I am using unbound. It returns only IPv4 results.. this is something for me to figure out.. most likely tomorrow
Here are the results for the curious
nslookup shows different results
(router)
~ nslookup wimi.com
Server: 127.0.0.1
Address: 127.0.0.1:53
Non-authoritative answer:
Non-authoritative answer:
Name: wimi.com
Address: 172.67.192.161
Name: wimi.com
Address: 104.21.11.206
~ nslookup wimi.com ::1
Server: ::1
Address: [::1]:53
Non-authoritative answer:
Non-authoritative answer:
Name: wimi.com
Address: 172.67.192.161
Name: wimi.com
Address: 104.21.11.206
when LuCI (OpenWRT) checkbox 'Use DNS servers advertised by peer' selected, the default nslookup shows both IPv4 and IPv6
~ nslookup wimi.com
Server: 2a02:6b60::53:1 - CommunityFibre
Address: [2a02:6b60::53:1]:53
Non-authoritative answer:
Name: wimi.com
Address: 104.21.11.206
Name: wimi.com
Address: 172.67.192.161
Non-authoritative answer:
Name: wimi.com
Address: 2606:4700:3032::ac43:c0a1
Name: wimi.com
Address: 2606:4700:3030::6815:bce
we can replicate the same thing by simply routing through our ISP DNS
~ nslookup wimi.com 2a02:6b60::53:1
Server: 2a02:6b60::53:1
Address: [2a02:6b60::53:1]:53
Non-authoritative answer:
Name: wimi.com
Address: 2606:4700:3030::6815:bce
Name: wimi.com
Address: 2606:4700:3032::ac43:c0a1
Non-authoritative answer:
Name: wimi.com
Address: 104.21.11.206
Name: wimi.com
Address: 172.67.192.161
just to update. Short answers, I managed to get IPv6 to show up on my nslookup by doing solution number 1 below. Then once that was sorted I fixed the 'whatsmyip' website by doing solution number 2
I have Unbound + Adguard running so adguard was blocking IPv6. There is a checkbox in settings to enable IPv6 inside adguard UI, also should be present in config files
My Firefox had IPv6 disabled, I had to enable it. I must have disabled it when I was setting up IPv4 only