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

Что означает этот вывод netstat?

У меня умеренно активный сайт на выделенном сервере. В ходе защиты от (D) DOS-атак я запустил netstat, чтобы подсчитать количество активных соединений. Это дало довольно необычный результат, так как он показал более 1000 соединений. из порт httpd общедоступного IP-адреса сервера на множество различных, казалось бы, случайных портов на одном и том же IP-адресе. То есть результат выглядит так:

Proto   Recv-Q    Send-Q  Local Address         Foreign Address      State
tcp     0         0       [server's ip]:60284   [server's ip]:80     TIME_WAIT
tcp     0         0       [server's ip]:60267   [server's ip]:80     TIME_WAIT
... [1000+ just like this]

Состояние их - TIME_WAIT, но это может быть связано с тем, что я запускаю брандмауэр, который не разрешает доступ к этим портам. Этот сервер действительно связывается с базой данных на другом компьютере, но все это должно выполняться через частный IP-адрес. Итак, если это действительное сообщение, я хотел бы выяснить это, чтобы я мог настроить его на использование частного IP (где доступны порты).

Кто-нибудь знает, почему машина пытается связаться с собой по общедоступному IP-адресу? Как мне определить, какой процесс это инициирует? Я попытался посмотреть эти порты через lsof, но никакой информации не вернул.

Единственная необычная вещь, которую наш сервер запускает с httpd, - это довольно устаревшая программа persistent-perl (для кэширования скриптов Perl в памяти). Однако я совершенно уверен, что это не будет связано с использованием сети, и нет никакой информации, указывающей, как это будет работать.

Спасибо заранее за любые советы!

Я думаю, вы обнаружите, что эти связи к ваш HTTP-порт, а не из Это. Другие номера портов (60284 и т. Д.) - это временные номера портов, автоматически назначаемые клиентским сторонам соединений.

Независимо от того, какой конец соединения (клиент или сервер) закрывается, это тот, который переходит в состояние TIME_WAIT после закрытия.

Итак, похоже, что на вашем компьютере есть какой-то процесс, который довольно часто подключается к вашему веб-серверу и закрывает соединение со стороны клиента (я бы предположил, что либо закрытие перед отправкой HTTP-запроса, либо выполнение запроса поддержки активности HTTP 1.1, а затем закрытие )

Некоторые возможные способы отследить это:

  • Если вы можете поймать один из них, пока соединение находится в состоянии ESTABLISHED, netstat -antp (как root) покажет вам идентификатор процесса для сокета.

  • Поищите в журналах доступа / ошибок вашего веб-сервера запросы, поступающие с IP-адреса вашего сервера. Они могут пролить свет на то, откуда они исходят.

  • Используйте tcpdump или wirehark для отслеживания пакетов с IP-адреса вашего сервера на порт 80 и посмотрите, что на самом деле передается (вы также сможете окончательно увидеть, каким образом открывается соединение).