IPv6 SLAAC (ICMPv6 Router Advertisments) are ignored by wlan1 interface
The problem is in some of your sysctl settings:
net.ipv6.conf.wlan1.accept_ra = 1
This one is fine: accept Router Advertisements
net.ipv6.conf.wlan1.accept_ra_defrtr = 0
But this one tells your system not to accept the default route from the RA. The RA does advertise the router as a default gateway. If you want your system to learn this then you have to set this to 1
.
net.ipv6.conf.wlan1.accept_ra_pinfo = 0
This one tells your system not to accept any prefix information from the RA. It won't be able to learn which prefixes are on the link and it won't be able to auto configure its addresses because of that.
net.ipv6.conf.wlan1.accept_ra_rt_info_max_plen = 0
Your RA also contains a more specific route for 2601:xxxx:xxxx:47fc::/64
. This setting tells the kernel not to accept any routes longer than a /0
. If you want to accept that /64
then you need to set this value to at least 64
.
net.ipv6.conf.wlan1.autoconf = 1
This is good. However, you didn't include all the details about your RA message. This will only work if the prefix information option in the RA has the Autoconf (A) flag set, and that flag is not visible in your question.
Related videos on Youtube
Yuri
Updated on September 18, 2022Comments
-
Yuri over 1 year
I installed 15.04 on my Thinkpad W520. However, I'm not able to get IPv6 working on wlan1 interface:
ifconfig wlan1 wlan1 Link encap:Ethernet HWaddr 8c:70:5a:d2:65:bc inet addr:10.0.1.61 Bcast:10.0.1.255 Mask:255.255.255.0 inet6 addr: fe80::8e70:5aff:fed2:65bc/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1534790 errors:0 dropped:0 overruns:0 frame:0 TX packets:1281764 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:618961336 (618.9 MB) TX bytes:249411071 (249.4 MB)
In the Wireshark I'm able to see ICMPv6 RA messages:
No. Time Source Destination Protocol Length Info 3 775.989536000 fe80::bac7:5dff:fec8:50e ff02::1 ICMPv6 150 Router Advertisement from b8:c7:5d:c8:05:0e Frame 3: 150 bytes on wire (1200 bits), 150 bytes captured (1200 bits) on interface 0 Ethernet II, Src: Apple_c8:05:0e (b8:c7:5d:c8:05:0e), Dst: IPv6mcast_01 (33:33:00:00:00:01) Internet Protocol Version 6, Src: fe80::bac7:5dff:fec8:50e (fe80::bac7:5dff:fec8:50e), Dst: ff02::1 (ff02::1) Internet Control Message Protocol v6 Type: Router Advertisement (134) Code: 0 Checksum: 0x215a [correct] Cur hop limit: 64 Flags: 0x48 Router lifetime (s): 1800 Reachable time (ms): 0 Retrans timer (ms): 0 ICMPv6 Option (Source link-layer address : b8:c7:5d:c8:05:0e) ICMPv6 Option (Prefix information : 2601:xxxx:xxxx:47fc::/64) ICMPv6 Option (Route Information : Medium 2601:xxxx:xxxx:47fc::/64) ICMPv6 Option (Recursive DNS Server 2601:xxxx:xxxx:47fc:bac7:5dff:fec8:50e)
Sysctl accept_ra is enabled:
net.ipv6.conf.wlan1.accept_dad = 1 net.ipv6.conf.wlan1.accept_ra = 1 net.ipv6.conf.wlan1.accept_ra_defrtr = 0 net.ipv6.conf.wlan1.accept_ra_from_local = 0 net.ipv6.conf.wlan1.accept_ra_pinfo = 0 net.ipv6.conf.wlan1.accept_ra_rt_info_max_plen = 0 net.ipv6.conf.wlan1.accept_ra_rtr_pref = 0 net.ipv6.conf.wlan1.accept_redirects = 1 net.ipv6.conf.wlan1.accept_source_route = 0 net.ipv6.conf.wlan1.autoconf = 1 net.ipv6.conf.wlan1.dad_transmits = 1 net.ipv6.conf.wlan1.disable_ipv6 = 0 net.ipv6.conf.wlan1.force_mld_version = 0 net.ipv6.conf.wlan1.force_tllao = 0 net.ipv6.conf.wlan1.forwarding = 0 net.ipv6.conf.wlan1.hop_limit = 64 net.ipv6.conf.wlan1.max_addresses = 16 net.ipv6.conf.wlan1.max_desync_factor = 600 net.ipv6.conf.wlan1.mc_forwarding = 0 net.ipv6.conf.wlan1.mldv1_unsolicited_report_interval = 10000 net.ipv6.conf.wlan1.mldv2_unsolicited_report_interval = 1000 net.ipv6.conf.wlan1.mtu = 1500 net.ipv6.conf.wlan1.ndisc_notify = 0 net.ipv6.conf.wlan1.proxy_ndp = 0 net.ipv6.conf.wlan1.regen_max_retry = 3 net.ipv6.conf.wlan1.router_probe_interval = 60 net.ipv6.conf.wlan1.router_solicitation_delay = 1 net.ipv6.conf.wlan1.router_solicitation_interval = 4 net.ipv6.conf.wlan1.router_solicitations = 3 net.ipv6.conf.wlan1.suppress_frag_ndisc = 1 net.ipv6.conf.wlan1.temp_prefered_lft = 86400 net.ipv6.conf.wlan1.temp_valid_lft = 604800 net.ipv6.conf.wlan1.use_tempaddr = 2 net.ipv6.neigh.wlan1.anycast_delay = 100 net.ipv6.neigh.wlan1.app_solicit = 0 net.ipv6.neigh.wlan1.base_reachable_time_ms = 30000 net.ipv6.neigh.wlan1.delay_first_probe_time = 5 net.ipv6.neigh.wlan1.gc_stale_time = 60 net.ipv6.neigh.wlan1.locktime = 0 net.ipv6.neigh.wlan1.mcast_solicit = 3 net.ipv6.neigh.wlan1.proxy_delay = 80 net.ipv6.neigh.wlan1.proxy_qlen = 64 net.ipv6.neigh.wlan1.retrans_time_ms = 1000 net.ipv6.neigh.wlan1.ucast_solicit = 3 net.ipv6.neigh.wlan1.unres_qlen = 31 net.ipv6.neigh.wlan1.unres_qlen_bytes = 65536
IPv6 routing table:
$ route -6 Kernel IPv6 routing table Destination Next Hop Flag Met Ref Use If fe80::/64 :: U 256 0 0 wlan1 ::/0 :: !n -1 1 11529 lo ::1/128 :: Un 0 7 32 lo fe80::8e70:5aff:fed2:65bc/128 :: Un 0 1 0 lo ff00::/8 :: U 256 1 0 wlan1 ::/0 :: !n -1 1 11529 lo
IPv6 neighbors:
$ ip -6 neigh fe80::bac7:5dff:fec8:50e dev wlan1 lladdr b8:c7:5d:c8:05:0e router STALE
...and I'm able to ping link-local address of my residential gateway:
$ ping6 -I wlan1 fe80::bac7:5dff:fec8:50e PING fe80::bac7:5dff:fec8:50e(fe80::bac7:5dff:fec8:50e) from fe80::8e70:5aff:fed2:65bc wlan1: 56 data bytes 64 bytes from fe80::bac7:5dff:fec8:50e: icmp_seq=2 ttl=64 time=277 ms 64 bytes from fe80::bac7:5dff:fec8:50e: icmp_seq=3 ttl=64 time=0.848 ms 64 bytes from fe80::bac7:5dff:fec8:50e: icmp_seq=4 ttl=64 time=13.4 ms 64 bytes from fe80::bac7:5dff:fec8:50e: icmp_seq=5 ttl=64 time=1.32 ms 64 bytes from fe80::bac7:5dff:fec8:50e: icmp_seq=6 ttl=64 time=0.934 ms 64 bytes from fe80::bac7:5dff:fec8:50e: icmp_seq=7 ttl=64 time=1.66 ms ^C
Any ideas on what it could be and how to fix that?
Thanks.