Назад | Перейти на главную страницу

Как отлаживать частый сброс соединения одноранговым узлом

Недавно у меня стали происходить очень частые «сбросы соединения одноранговым узлом» при звонках к внешнему провайдеру. Мое приложение (клиент) - это приложение Go, выполняющее простой POST для внешнего провайдера через HTTPS.

Некоторый контекст:

Экземпляр хоста ifconfig:

docker0   Link encap:Ethernet  HWaddr [REDACTED]
          inet addr:172.17.0.1  Bcast:172.17.255.255  Mask:255.255.0.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

eth0      Link encap:Ethernet  HWaddr [REDACTED]
          inet addr:10.208.19.134  Bcast:10.208.19.255  Mask:255.255.255.128
          inet6 addr: fe80::8d:fdff:fe90:f410/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:9001  Metric:1
          RX packets:37685240 errors:0 dropped:0 overruns:0 frame:0
          TX packets:37927624 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:13408927179 (12.4 GiB)  TX bytes:14057395581 (13.0 GiB)

Я попытался:

Ничего не нашел. И я уверен, что во время захвата одноранговый узел сбросил соединение (поскольку у нас есть вход в систему). Все, что я хотел понять, это где RST исходит (если это возможно).

Итак, какие варианты мне нужны, чтобы найти первопричину всех этих внезапных ошибок?

Чтобы доказать, что пакеты исходят извне, попробуйте добавить это в свой маршрутизатор:

iptables -I FORWARD -i eth0 -p tcp --tcp-flags RST RST -j DROP

Имейте в виду, что для нормальной работы необходимы пакеты RST, и это может быстро перегрузить ваши ресурсы, поэтому ограничьте их до определенного --sport, даже для тестирования, если только маршрутизатор не используется очень осторожно и оставьте его на месте только для этого теста.

Замените FORWARD на INPUT, если вы тестируете и фильтруете на одной машине. Замените eth0 вашим фактическим подключением к Интернету.

Для элементарного подтверждения вы можете выдать iptables -nvL | grep spt и посмотрите, как увеличилось число на старте.