Приколы с IP-линком Мегафона
Сегодня случайно обнаружил интересную особенность Мегафона. Если он обнаруживает в беспроводном линке какие-то "левые" пакеты (например, на 192.168.x.x), то просто на какое-то время выключает канал. А произошло у меня вот что.
Я включаю разные удалённые точки-офисы в единую сеть через OpenWRT-маршрутизаторы, которые прицепляются к "центральному" серверу в датацентре при помощи OpenVPN. На том же OpenWRT крутится DnsMasq, который играет роль в том числе кеширующего DNS-сервера и DHCP Relay для моих "выносов". А адреса конечным устройствам раздаёт виндовый DHCP-сервер в датацентре, который заодно регистрирует их в доменном DNS-е. Так нравится нашему виндузятнику. Штоб усё было "под контролем".
Там, где нет нормального проводного интернета, для выхода в Сеть я использую мегафоновские SIM-карты. Которые сую в модемы имени Huawei, подключённые к OpenWRT. И до поры до времени всё работало вполне неплохо. А потом началась какая-то тошнота, OpenWRT-точки начали "отваливаться", после чего не выходили обратно на связь.
И вот что удивительно. Останавливаешь демон DNSMasq — связь есть. Запускаешь DNSMasq — связь пропадает. Опять тормозишь — через несколько секунд пинги начинают ходить. Что за фигня?
Выяснилось вот что. Пока VPN ещё не поднялся, DHCP и DNS-запросы от DNSMasq к вышестоящему серверу уходят в WAN. Мегафон видит у себя в сетях какие-то "подозрительные" пакеты на "непонятные" адреса и временно "опускает" канал. Из-за этого тоннели не могут стартовать. Поэтому таблица маршрутизации не перестраивается, "серые" пакеты продолжают уходить в WAN, провайдер по-прежнему блокирует канал, круг замкнулся. И вроде бы модем исправен, к APN подключен, индикатор сигнализирует о наличии соединения, но ничего не работает.
Выхода из данной ситуации может быть два, на выбор. Первый - не очень красивый.
10-ую серую сеть "банить" нельзя, потому что ей принадлежит адресное пространство самого "Мегафона". Метод не рекомендован к применению, поскольку фактически фильтровать при помощи правил маршрутизации есть моветон. Плюс утилита "ip" по умолчанию в OpenWRT отсутствует, да и придётся разбираться в какое бы место воткнуть эти команды на автозагрузку.
Второй выход немного более приличный, заключается в фильтрации методами iptables. По умолчанию WAN-зона в OpenWRT носит одноименное название. Если вы его не меняли, то заклинания будут выглядеть так.
Эти правила можно добавить в "/etc/firewall.user", так что они будут применяться при каждом запуске файрволла.
После вышеописанных ударов в бубен проблема решилась. Всё снова начало работать на расчётных скоростях, тошнота прекратилась. Интересно только, когда Мегафон успел внедрить подобную "защиту". Раньше я ничего подобного не делал, и всё было нормально.