?

Log in

No account? Create an account
Cat-light

klink0v


Блохи в свитере деда Сергеича


Про OpenVPN, мультикаст и странных ISPов
Cat-dark
klink0v

Стало мне тут зело интересно, пропускает ли OpenVPN исходящие мультикасты в конфигурации "dev tun" + "server" + "topology subnet". Как выяснилось — да, пропускает. Сгенерировал эталонный multicast-поток в вакууме при помощи утилиты iperf ("iperf -c 224.1.1.1 -u -T 32 -t 3 -i 1"), натравил соответствующий статический маршрут на "dev tun0" и послушал сниффером что происходит на подключенных к серверу OpenVPN-клиентах. Таки да, трафик доходит. И замечательно доходит. Всем. Почти.

Примерно два из девяти устройств таки не получили свою порцию multicast-ов. Стал разбираться. Железо одинаковое, конфиги одинаковые, версии софта одинаковые. Что же может быть не так? Ага, двух бедолаг объединяет один провайдер. Полез глубже в отладку. Опытным путём выяснил, что проблемные клиенты не получают UDPv4-пакетов жирнее, чем 1489 байт. То есть где-то по дороге они просто молча выпиливаются. Ни ICMP там в ответ никакой не приходит, ничего. Протестировал из разных точек. Результат тот же. Устройства, подключенные к другим провайдерам, подобных симптомов не испытывают.

Вот теперь думаю, является ли непрохождение UDP-пакетов длиннее 1489 байт достаточным основанием для бодания с ISPом. Если хотите знать героя в лицо — это НьюКомПорт. Провайдер — говно, я раньше уже его обкакивал, с тех пор ничего не изменилось. Просто в том здании, где сидят наши контрагенты, никого другого нет.


Внезапные подробности
Cat-light
klink0v

Внезапное продолжение предыдущего псто.

Ньюкомпортовский NOCовец в ответ на мой запрос ткнул меня носом в выхлоп утилиты hping3. Я повторил. Всё проходит, всё нормуль. Ради интереса проверил при помощи sendip ("sendip -p ipv4 -is 1.2.3.4 -p udp -us 5600 -ud 5700 -d r1472 -v 5.6.7.8"). Тоже всё проходит, всё ништяк. Пробую OpenVPN с жирным payload-ом внутри. Теряется в полном составе. Смотрю на подконтрольных мне маршрутизаторах у других провайдеров. Всё работает штатно, как задумано.

Ничего не понимаю. Ни-че-го! Но где-то должна же быть причина? Начинаю сравнивать структуру UDP-пакетов. И обращаю внимание на флаг "IP more fragments".

Как выяснилось, размер UDP-пакета роли не играет. Фишка в наличии флага "IP more fragments". Флаг взведён — пакет дропается. Флага нет — пакет проходит.

Мдя-я-я-я-я... Провайдеры бывают о-о-о-очень [censored] (чудесатыми). Как я их всех ненавижу!


Вопрос к бородатым NOCам
Cat-light
klink0v

В процессе своей работы я постоянно вынужден решать задачи повышенной 3.14**оватости. Вот одна из них (картинка кликабельна).

Читать дальшеCollapse )