5

Когда я использую стандартную прошивку Linksys на своем маршрутизаторе, мои сетевые устройства правильно используют IPv4 только для доступа в Интернет.

Когда я использую OpenWRT 15.05.1, устройства пытаются подключиться к различным сайтам, используя адреса IPv6, что было бы здорово, если бы мой провайдер предоставил услугу IPv6, а это не так.

Я пробовал несколько вещей, которые не работали: отключение DHCPv6, отключение DNS-кэширования dnsmasq, настройка DHCP-сервера dnsmasq для предоставления статического адреса DNS-сервера (8.8.8.8) и настройка использования внутреннего DNS-сервера OpenWRT для использования этот DNS-сервер.

Как заставить OpenWRT перестать сообщать устройствам, что можно использовать IPv6?

Результаты команд на одном из сетевых устройств

Результаты ip addr :

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    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: enp6s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:1a:80:7a:4e:47 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.107/24 brd 192.168.1.255 scope global dynamic enp6s0
       valid_lft 42521sec preferred_lft 42521sec
    inet6 fd7f:77c6:629f::9e8/128 scope global 
       valid_lft forever preferred_lft forever
    inet6 fd7f:77c6:629f::4e3/128 scope global 
       valid_lft forever preferred_lft forever
    inet6 fd7f:77c6:629f:0:21a:80ff:fe7a:4e47/64 scope global noprefixroute 
       valid_lft forever preferred_lft forever
    inet6 fe80::21a:80ff:fe7a:4e47/64 scope link 
       valid_lft forever preferred_lft forever
3: wlp2s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:1d:e0:44:04:57 brd ff:ff:ff:ff:ff:ff

Результаты route -6 :

Kernel IPv6 routing table
Destination                    Next Hop                   Flag Met Ref Use If
fd7f:77c6:629f::4e3/128        ::                         U    256 0     0 enp6s0
fd7f:77c6:629f::9e8/128        ::                         U    256 0     0 enp6s0
fd7f:77c6:629f::/64            ::                         U    100 1     3 enp6s0
fd7f:77c6:629f::/48            fe80::c256:27ff:fe77:37a7  UG   100 0     0 enp6s0
fe80::/64                      ::                         U    256 2    10 enp6s0
::/0                           ::                         !n   -1  1   729 lo
::1/128                        ::                         Un   0   3     6 lo
fd7f:77c6:629f::4e3/128        ::                         Un   0   1     0 lo
fd7f:77c6:629f::9e8/128        ::                         Un   0   1     0 lo
fd7f:77c6:629f:0:21a:80ff:fe7a:4e47/128 ::                         Un   0   2     3 lo
fe80::21a:80ff:fe7a:4e47/128   ::                         Un   0   2    30 lo
ff00::/8                       ::                         U    256 2    67 enp6s0
::/0                           ::                         !n   -1  1   729 lo

Результаты как ping6 google.com и ping6 2607:f8b0:4008:808::200e :

connect: Network is unreachable

1 ответ1

7

При первоначальной установке (или сбросе настроек) OpenWrt генерирует префикс уникального локального адреса и назначает ULA всем устройствам в сети, позволяя им осуществлять внутреннюю связь через IPv6 даже без глобального подключения IPv6.

Это обычно работает нормально, за исключением двух сценариев:

  1. Конечное устройство пытается маршрутизировать глобальный трафик IPv6 в любом случае, несмотря на то, что этот диапазон адресов не может быть использован для этой цели. Ваша таблица маршрутизации не указывает, что это то, что происходит, и ни одна из широко используемых операционных систем за последнее десятилетие или около того не сделала бы это.
  2. Приложение ведет себя неправильно и пытается установить глобальные подключения IPv6, когда компьютер не имеет глобального подключения IPv6 (или, точнее, маршрута по умолчанию). Из вашего описания, похоже, это происходит.

Чтобы быть точным: объявив префикс ULA, OpenWrt не сообщает вашим устройствам, что все в порядке для доступа в Интернет через IPv6. Это только говорит им, что все в порядке, чтобы получить доступ к вашей домашней сети через IPv6.

Долгосрочное решение состоит в том, чтобы исправить неправильно работающие приложения. Если вы столкнулись с таким поведением в конкретном приложении, вы должны сообщить об этом как об ошибке его разработчикам.

Краткосрочный обходной путь состоит в том, чтобы OpenWrt не объявлял префикс ULA. Вы можете перейти в Сеть > Интерфейсы, очистить поле UvA-Prefix IPv6 и нажать Сохранить и применить. Это не позволит OpenWrt объявить префикс ULA. Если вы когда-нибудь сбросите настройки маршрутизатора до значений по умолчанию, возможно, вам придется сделать это снова.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .