Как быстро обнаружить TCP-16-20 и другие фичи DPI
Представьте ситуацию. Вы купили VPS, настроили сайт, ваша простая стартовая страничка нормально грузится, но вам нужно что-то большее. Например POST-запросы или GRPC. И всё это не работает. Вы ищете причину в настройках сервера, файрвол, nginx, selinux, кажется, что всё верно. Чтобы не бродить по этому замкнутому кругу, вот два простых признака, что ваш сервер блокируется оборудованием DPI или ТСПУ.
Первый. Положите в файлы вашего сайта что-нибудь весом килобайт тридцать, вот этот файл прекрасно подойдёт. Затем попробуйте скачать его с вашего сайта. Если закачка останавливается примерно на середине, "поздравляю" - вы под блокировкой tcp 16-20. Этот вид блокировок, когда проходят только первые 16-20 кБ трафика, распространился и на сервера в России.
Второй способ. Запросите с помощью curl или браузера что-нибудь с вашего сайта и посмотрите на ответ в Wireshark. Tcp пакеты пронумерованы по порядку, и если часть пакетов не дошла до вас, то это будет заметно по отсутствующим номерам. Остальные пакеты из этого соединения программа Wireshark "подсветит" чёрным.
ip link # чтобы узнать название интерфейса
sudo tcpdump -i <your-interface> host your-server-ip -w captured.pcap # захват пакетов
wireshark captured.pcap
Совместно с логами nginx видно, что блокировка действует не на уходящие от пользователя пакеты, а на ответ, приходящий к нему. И метод, по которому они блокируются, похоже, вероятностный, и его скорее всего можно обойти. Однако даже если удастстя обмануть DPI, вы упрётесь в tcp 16-20. Выход один - переезд.