Интерфейс wlan1 игнорирует IPv6 SLAAC (объявления маршрутизатора ICMPv6)

Я установил 15.04 на свой Thinkpad W520. Однако я не могу заставить работать IPv6 на интерфейсе 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)

В Wireshark я могу видеть сообщения ICMPv6 RA:

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 включен:

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:

$ 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:

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

... и я могу проверить связь с локальным адресом моего жилого шлюза:

$ 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

Есть идеи, что это может быть и как это исправить?

Благодарю.

1 ответ

Решение

Проблема в некоторых ваших настройках sysctl:

net.ipv6.conf.wlan1.accept_ra = 1

Это хорошо: принять рекламу маршрутизатора

net.ipv6.conf.wlan1.accept_ra_defrtr = 0

Но этот говорит вашей системе не принимать маршрут по умолчанию от RA. RA действительно объявляет маршрутизатор как шлюз по умолчанию. Если вы хотите, чтобы ваша система изучала это, вы должны установить это на 1,

net.ipv6.conf.wlan1.accept_ra_pinfo = 0

Это говорит вашей системе не принимать префиксную информацию от RA. Он не сможет узнать, какие префиксы находятся на ссылке, и не сможет автоматически настроить его адреса из-за этого.

net.ipv6.conf.wlan1.accept_ra_rt_info_max_plen = 0

Ваш RA также содержит более конкретный маршрут для 2601:xxxx:xxxx:47fc::/64, Этот параметр говорит ядру не принимать маршруты больше, чем /0, Если вы хотите принять это /64 тогда вам нужно установить это значение как минимум 64,

net.ipv6.conf.wlan1.autoconf = 1

Это хорошо. Тем не менее, вы не включили всю информацию о вашем сообщении RA. Это будет работать только в том случае, если для параметра информации о префиксе в RA установлен флаг Autoconf (A) и этот флаг не отображается в вашем вопросе.

Другие вопросы по тегам