SLAAC IPv6 (anúncios do roteador ICMPv6) são ignorados pela interface wlan1

2

Eu instalei o 15.04 no meu Thinkpad W520. No entanto, não consigo fazer o IPv6 funcionar na interface wlan1:

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)

No Wireshark, consigo ver as mensagens RA do ICMPv6:

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 está ativado:

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

Tabela de roteamento IPv6:

$ 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

vizinhos IPv6:

$ ip -6 neigh
fe80::bac7:5dff:fec8:50e dev wlan1 lladdr b8:c7:5d:c8:05:0e router STALE

... e sou capaz de fazer ping no endereço de link local do meu gateway residencial:

$ 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

Alguma idéia do que poderia ser e como consertar isso?

Obrigado.

    
por Yuri 25.07.2015 / 23:40

1 resposta

4

O problema está em algumas das suas configurações de sysctl:

net.ipv6.conf.wlan1.accept_ra = 1

Este é bom: aceite anúncios de roteador

net.ipv6.conf.wlan1.accept_ra_defrtr = 0

Mas este diz ao seu sistema para não aceitar a rota padrão do RA. O RA anuncia o roteador como um gateway padrão. Se você quer que seu sistema aprenda isso, então você deve configurar isto para 1 .

net.ipv6.conf.wlan1.accept_ra_pinfo = 0

Este diz ao seu sistema para não aceitar qualquer informação de prefixo do RA. Ele não conseguirá saber quais prefixos estão no link e não poderá configurar automaticamente seus endereços por causa disso.

net.ipv6.conf.wlan1.accept_ra_rt_info_max_plen = 0

Seu RA também contém uma rota mais específica para 2601:xxxx:xxxx:47fc::/64 . Esta configuração diz ao kernel para não aceitar rotas maiores que /0 . Se você quiser aceitar esse /64 , precisará definir esse valor como, pelo menos, 64 .

net.ipv6.conf.wlan1.autoconf = 1

Isso é bom. No entanto, você não incluiu todos os detalhes sobre sua mensagem de RA. Isso só funcionará se a opção de informações de prefixo no RA tiver o sinalizador Autoconf (A) definido e esse sinalizador não estiver visível na sua pergunta.

    
por Sander Steffann 26.07.2015 / 13:23