У меня умеренно активный сайт на выделенном сервере. В ходе защиты от (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 и посмотрите, что на самом деле передается (вы также сможете окончательно увидеть, каким образом открывается соединение).