Назад | Перейти на главную страницу

Невозможно пропинговать собственный интерфейс через ipv6

У меня есть raspberry pi с двумя сетевыми интерфейсами; один подключен к традиционной точке доступа управляемого режима (wlan0) и тот, в котором размещается специальная (IBSS) сеть (wlan1). Недавно я начал с нуля с чистой сборки raspbian, и у меня, похоже, что-то пошло не так с моей конфигурацией ipv6, потому что простой пинг моего собственного интерфейса не работает. Пример:

Во-первых, шаги по настройке wlan1:

# Clear out any previous configuration
ip link set wlan1 down
ip link set wlan1 up

# Set it to IBSS with a particular SSID and frequency
iw wlan1 set type ibss
iw wlan1 ibss join bananaNET 2462

# Set static IP address/routing prefix
ip addr change fd37:5041::1/96 dev wlan1

Выполнение этих шагов дает нам хороший результат от ip link и ip addr:

$ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
    link/ether dc:a6:32:3b:9d:f6 brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DORMANT group default qlen 1000
    link/ether dc:a6:32:3b:9d:f7 brd ff:ff:ff:ff:ff:ff
4: wlan1: <NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state DORMANT mode DORMANT group default qlen 1000
    link/ether 74:da:38:41:d5:55 brd ff:ff:ff:ff:ff:ff
$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether dc:a6:32:3b:9d:f6 brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether dc:a6:32:3b:9d:f7 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.102/24 brd 192.168.0.255 scope global dynamic noprefixroute wlan0
       valid_lft 84051sec preferred_lft 73251sec
    inet6 fd00::1205:53bb:f0a0:57f1/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 3559sec preferred_lft 559sec
    inet6 2602:47:d406:fe00:99cf:b40b:509b:4f1a/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 3559sec preferred_lft 559sec
    inet6 fe80::86f:5a1f:7689:f407/64 scope link 
       valid_lft forever preferred_lft forever
4: wlan1: <NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state DORMANT group default qlen 1000
    link/ether 74:da:38:41:d5:55 brd ff:ff:ff:ff:ff:ff
    inet6 fd37:5041::1/96 scope global tentative 
       valid_lft forever preferred_lft forever

Попытка проверить связь с моим собственным IP-адресом, на удивление, терпит неудачу, и, что еще хуже, выдает очень подозрительное сообщение об ошибке:

$ ping -6 fd37:5041::1
PING fd37:5041::1(fd37:5041::1) 56 data bytes
From fd00::1205:53bb:f0a0:57f1: icmp_seq=1 Destination unreachable: Address unreachable
From fd00::1205:53bb:f0a0:57f1: icmp_seq=2 Destination unreachable: Address unreachable
From fd00::1205:53bb:f0a0:57f1: icmp_seq=3 Destination unreachable: Address unreachable

Я не понимаю, почему fd00::1205:53bb:f0a0:57f1 будет пытаться отправить эти пакеты. Проверим таблицы маршрутизации:

$ route -6
Kernel IPv6 routing table
Destination                    Next Hop                   Flag Met Ref Use If
localhost/128                  [::]                       U    256 2     0 lo
2602:47:d406:fe00::/64         [::]                       U    303 1     0 wlan0
fd00::/64                      [::]                       U    303 1     0 wlan0
fd37:5041::/96                 [::]                       U    256 5     0 wlan1
fe80::/64                      [::]                       U    256 2     0 wlan0
[::]/0                         fe80::72f2:20ff:fee3:c870  UG   303 3     0 wlan0
localhost/128                  [::]                       Un   0   7     0 lo
2602:47:d406:fe00:99cf:b40b:509b:4f1a/128 [::]                       Un   0   6     0 wlan0
fd00::1205:53bb:f0a0:57f1/128  [::]                       Un   0   5     0 wlan0
fe80::86f:5a1f:7689:f407/128   [::]                       Un   0   3     0 wlan0
ff00::/8                       [::]                       U    256 7     0 wlan0
ff00::/8                       [::]                       U    256 2     0 wlan1
[::]/0                         [::]                       !n   -1  1     0 lo

Насколько я могу судить, все налаживается. Даже пытаясь указать интерфейс для ping не работает, и действительно экспериментирует с ping показывает, что ping вещи, которые есть в двух интерфейсах тот же адрес:

$ ping -6 -I wlan0 fd37:5041::1
PING fd37:5041::1(fd37:5041::1) from fd00::1205:53bb:f0a0:57f1 wlan0: 56 data bytes
$ ping -6 -I wlan1 fd37:5041::1
PING fd37:5041::1(fd37:5041::1) from fd00::1205:53bb:f0a0:57f1 wlan1: 56 data bytes

Поэтому мои вопросы:

Сведения о системе: Raspberry pi v4 под управлением Raspbian 10 с ядром 4.19.108 (скомпилировано пользователем, но с конфигурацией по умолчанию, за исключением CONFIG_HZ=1000). wlan0 это встроенный rpi4 brcmfmac, пока wlan1 представляет собой набор микросхем USB ( Edimax Technology Co., Ltd EW-7811Un 802.11n Wireless Adapter [Realtek RTL8188CUS])

РЕДАКТИРОВАТЬ: Я обнаружил, что отключение dhcpcd на wlan1 добавляя denyinterfaces wlan1 к /etc/dhcpcd.conf исправляет это! Я понятия не имею, почему это на что-то влияет, и мне все равно было бы интересно узнать.