Хорошо — давайте пошагово диагностируем. Ниже — план действий с командами и подсказками, что смотреть и как интерпретировать результаты. Выполняйте шаги на своём домашнем компьютере и на VPS, по возможности одновременно (или делайте несколько тестов и присылайте выводы).
Важно: команды Unix/Linux. Если у вас Windows — напишите, укажу аналоги.
1) Убедиться, что пакеты реально уходят с домашней машины
- На домашнем ПК запустите отправку простых UDP-пакетов (hping3 или nc):
- Если есть hping3:
hping3 -2 -c 10 -p <порт> <IP_VPS>
(-2 = UDP, -c 10 = 10 пакетов)
- Если нет hping3, можно:
printf "test\n" | nc -u -w1 <IP_VPS> <порт>
- Одновременно на домашнем ПК снимите локальную сетевую трассу, чтобы убедиться, что пакеты вышли в сеть:
sudo tcpdump -n -i <интерфейс> udp and host <IP_VPS> and port <порт>
Что смотрим: tcpdump на домашней машине должен показывать исходящие UDP-пакеты с вашим исходным IP/портом. Если их нет — проблема на клиенте/роутере (NAT, firewall).
2) Проверить, доходят ли пакеты до VPS (захват на VPS)
- На VPS запустите:
sudo tcpdump -n -i any udp and host <IP_домашний> and port <порт>
или для всех UDP:
sudo tcpdump -n -i any udp
- Затем повторите отправку с домашней машины (hping3 / nc) и смотрите: появились ли пакеты на tcpdump на VPS.
Интерпретация:
- Пакеты видны на VPS: значит сеть доходит, дальше смотреть настройки firewall/приложения на VPS (см. пункт 4).
- Пакеты не видны на VPS, но они уходят с домашней машины (см. пункт 3).
3) Если пакеты уходят с домашней сети, но не доходят до VPS — где могло застрять
- Выполните трассировку UDP (показывает, где пропадают):
traceroute -U -p <порт> <IP_VPS>
или mtr -u -P <порт> <IP_VPS>
(traceroute с UDP покажет промежуточный хоп, где пакеты перестают идти).
- На VPS смотрите ICMP-сообщения (иногда маршрутизаторы шлют ICMP unreachable):
sudo tcpdump -n -i any icmp
- Возможные причины:
- Провайдер домашнего интернета блокирует/фильтрует исходящие UDP (некоторые ISP блокируют UDP на произвольные порты).
- Провайдер дома использует CGNAT или другой NAT, причём outbound UDP как-то обрывается (маловероятно, но зависит от реализации).
- Провайдер VPS (или облачная панель) блокирует входящий UDP на уровне фильтров/ACL/anti-DDoS (часто по умолчанию закрыты не-TCP порты).
- Где-то посредине (между вашим ISP и VPS) есть фильтр или blackhole (можно выявить через traceroute/mtr).
- Проблемы с фрагментацией/MTU (если пакет большой и фрагменты отбрасываются). Попробуйте маленькие пакеты (hping3 —d 20).
4) Проверить конфигурацию VPS (если пакеты поступают, но приложение не получает)
- Прослушивает ли приложение UDP на нужном порте:
sudo ss -lunp | grep <порт>
или:
sudo netstat -ulnp | grep <порт>
- Проверить локальный firewall:
- UFW: sudo ufw status
- iptables: sudo iptables -L -n -v
- nftables: sudo nft list ruleset
- Временно отключить firewall (только для теста; если VPS в облаке, убедитесь, что консоль доступна):
sudo iptables -F
sudo ip6tables -F
sudo ufw disable
sudo systemctl stop firewalld
(после теста восстановите правила!)
- Проверить системные параметры (редко, но полезно):
sysctl net.netfilter.nf_conntrack_udp_timeout
sysctl net.ipv4.conf.all.rp_filter
5) Проверить сетевые ACL облачного провайдера
- В панели управления VPS (security groups, firewall, network ACL) убедитесь, что UDP-порт открыт на внешнем интерфейсе. Много провайдеров имеют отдельный "cloud firewall", который блокирует трафик до VM.
6) Проверить с других источников
- Попробуйте отправить UDP-пакет на VPS с мобильного интернета (телефон по 4G) или через VPN/другой провайдер. Если из других сетей пакеты доходят — значит проблема у вашего домашнего провайдера или роутера.
- Если из всех сетей не доходят — вероятно настройки VPS/провайдера.
7) Диагностика NAT/портов и keepalive
- Если вы ожидаете отклика от VPS, учтите, что NAT на домашнем роутере может закрывать mapping через секунды/минуты. Для стабильной двусторонней связи посылайте keepalive.
- Проверьте, не используете ли порты, которые ISP может блокировать (53, 67/68, 123 и т.п.).
8) Что мне прислать, чтобы я подсказал дальше
- Выводы следующих команд (замените <IP_дом>, <IP_VPS>, <порт>):
- С домашнего ПК: вывод hping3 (или nc) и tcpdump, если есть.
- На VPS: вывод sudo tcpdump -n -i any udp and host <IP_дом> and port <порт> (или общий tcpdump), и вывод sudo ss -lunp | grep <порт>.
- Вывод sudo iptables -L -n -v и sudo nft list ruleset (если используется nft) на VPS.
- Результат traceroute -U -p <порт> <IP_VPS> и/или mtr -u -P <порт> <IP_VPS> с домашней машины.
- Статус облачного фаервола/панели (скриншот или текст).
Короткий чек-лист для быстрой проверки
- Открыт ли UDP-порт в облачной панели? (да/нет)
- Видны ли пакеты на TCPDUMP на VPS? (да/нет)
- Видны ли пакеты на TCPDUMP на домашнем ПК перед шлюзом? (да/нет)
- Доходит ли UDP с мобильного интернета? (да/нет)
Если хотите, напишите:
- IP вашего VPS (или хотя бы тестовый порт), и я дам точные команды.
- Или пришлите выводы команд из раздела "Что мне прислать" — проанализирую и скажу, где именно затык.
Готов помочь дальше после ваших результатов.