klink0v (klink0v) wrote,
klink0v
klink0v

Category:

Про OpenWRT, Sierra Wireless, IPv6 и нерадивых ISP-ов

Продолжение / корректировка / дополнение вот этого поста. Спойлер: там было гонево.

Зачесались у меня что-то шаловливые ручки поковыряться опять с IPv6. Не знаю зачем. Охота пуще неволи. Взял опять свой любимый Sierra AirCard 320U в режиме "Direct IP", роутер с OpenWRT, МТС-овскую SIMку с подключенной услугой IPv6, заперся в квартире, и давай дро экспериментировать. В процессе продолжал изучать матчасть, связанную с IPv6. Попутно выяснил энное количество полезных и не очень фактов.


  1. Бывают нормальные провайдеры, типа "Онлайма", которые выдают абонентам сразу подести "/56". Они сразу и без проблем прописываются на домашних роутерах и на устройствах позади оных.

  2. Бывают нерадивые провайдеры, типа МТС, которые выдают адреса "/64". Чтобы выдать хоть какие-нибудь из них на устройства за роутером, надо конкретно потанцевать с бубном.

  3. На самом деле МТС в этом ни капли не виноват. Там есть куча технических проблем. Они работают над этим, но пока производители модемов-телефонов-планшетов не реализуют у себя всякие новомодные фишки-мульки-фичи, бежать впереди паровоза трактористы не будут. Хотя бы потому, что на подобные НИОКРы их ITшникам тупо никто не выделит бюджет.

  4. Можно поплакаться в профильной ветке на 4pda, и товарищ из МТСа выдаст тестовую APN, которая щедро раздает "/56"-адреса. Просто на-поковырять. Но при этом очень просит не работать через эту APN и не гонять таким способом серьёзный трафик. Это именно чтоб побаловаться, не для практического применения.

  5. На хабре трактористы хвастались, что "спускают" клиентам IPv4 и IPv6 DNS-сервера, чтоб "всё было по фен-шую". На самом деле только IPv4. Но это никакого значения не имеет.

  6. Если хочется работать с IPv6 через "родные" Sierr-овские драйвера под Linux-ом, то нужно убедиться, что оные достаточно свежи. Тухлые не умеют IPv6.

  7. Сам модем в режиме "Direct IP" ("sierra_net.ko") умеет отдавать IPv6 только как SLAAC. Никакого DHCPv6, даже не пытайтесь.

  8. Соответственно, забрать у модема информацию о DNS-серверах провайдера можно только по DHCPv4, больше никак. Другими словами, нельзя поднять один только IPv6-линк без IPv4. Нужен и тот, и другой.

  9. По причине раздачи МТС-ом "/64"-адресов, "пробросить" их на устройства за роутером можно только танцами с бубном. В режиме RA Relay. С самим роутером при этом общаться по IPv6 не получится, но "в мир" всё маршрутизируется вполне корректно по обоим протоколам.

  10. Забавно, но Chrome и FireFox бессовестно нарушают RFC, не позволяя писать в своей адресной строке URL-ы вида "http://[fe80::f6f2:6dff:fede:7cf2%25eth1]/". Сволочи-подонки.

Ниже делюсь своими размышлениями о настройке IPv6 на OpenWRT. Конкретно я развлекался с МТС, но скорее всего способ подойдёт для любого провайдера, который даёт только "/64"-адреса клиентам через RA / SLAAC. Возможно, с некоторыми доработками.

Я знаю, что можно выложить конфиги UCI, это будет быстрее и короче. Но для наглядности всё-таки решил забацать скриншоты. В подробности настройки самого модема здесь вдаваться не буду. Я об этом уже писал раньше.

Настройка WAN6 (внешний интерфейс). Красным обвёл то, на что следует обратить особое внимание.

Вообще да, настройки в OpenWRT ни разу не интуитивны. Приходится очень долго разбираться, какой именно параметр ядра или демона стоит за той или иной "галкой" в веб интерфейсе. Вот вы бы догадались, что на вкладке "General" нужно отключить получение IPv6-адресов?

Но при этом на вкладке "Advanced Settings" — включить. В принципе, после долгих раскурок мануалов и бесчеловечных экспериментов, я уже понимаю что всё это значит и как влияет на происходящее "под капотом". Но поначалу оно меня конкретно ввергало в ступор.

Настройка LAN (внутренний интерфейс). Тоже обвел красным. Первый скриншот достаточно очевиден.

А на втором нужно выставить именно вот так. Возможно, картинки не очень знакомые. Это OpenWRT 19.07.

Выше неправильный скриншот. Вот правильный. Смотри update к посту.

Потом всё-таки придется прогуляться в консоль и в конфиг "/etc/config/dhcp" добавить ручками:

В веб-морду aka Luci этих настроек не завезли. Потом перезапустить демон odhcpd.

Собственно всё. Проверить, что сам момед получил адрес. Клиентов настраивать на SLAAC. В Debian-е это

А дальше начинается изврат. Адреса-то все заинтересованные устройства получили. А вот на самом роутере как-то малость не хватает ipv6-маршрута до внутренних устройств. В интернет есть. На себя-любимого есть. Но про соседей-то никто ничего не говорил и кормить не обещал. Поэтому если специально ничего не делать, то от клиента в интернет пакетик уйдёт, но обратно не вернётся. На роутере застрянет, потому что у него доку́ментов нету. Тут у меня идеи уже конкретно закончились, и я написал вот такой shell-скрипт.

Смотри update в конце поста.

Он парсит регексом IPv6-адрес, который получил wwan0 и проверяет, а есть ли маршрут с таким же префиксом вовнутрь "br-lan". Если есть — ничего не делает (спит). Если нет — добавляет. Если есть, но не такой — заменяет. Не надо говорить мне, что это какая-то дичь. Сам знаю. Но как сделать лучше — не придумал. Вполне допускаю, что для этого уже изобретен какой-нибудь хитрый демон или можно положить обработчик соответствующего события куда-нибудь в недра "/etc/hotplug.d". Но настолько глубоко архитектурой OpenWRT, увы, не владею.

Остался последний вопрос: на фига мне всё это надо? А вот тоже не знаю. Что-то захотел развлечься и развлёкся. Чисто из спортивного интереса, ради разнообразия.

UPDATE. Разобрался как делать без извращений с прописыванием маршрутов ручками / скриптами. Просто на последнем скриншоте надо по-другому выставить настройки. Добавил "правильный" скриншот.

Tags: it, linux, lte, openwrt, МТС, интернетное, модемы, сети
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 23 comments