IPv6 SLAAC (ICMPv6 Router Advertisments) are ignored by wlan1 interface

5,824

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.

Share:
5,824

Related videos on Youtube

Yuri
Author by

Yuri

Updated on September 18, 2022

Comments

  • Yuri
    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.