Я вижу, что мой сервер отправляет много трафика. Если я перейду в netstat -apln | grep httpd Я вижу, что весь трафик идет на один IP.
Есть ли способ узнать, какой сценарий / файл используется для отправки данных на этот IP-адрес? Или вообще какой IP?
Я знаю, что tcpdump может смотреть на пакеты, но не может этого сделать.
В netstat
Команда может только сказать вам, какие соединения в настоящее время открыты, но не сколько трафика отправлено и получено. Чтобы узнать, какие соединения передают большую часть данных, вам нужно будет использовать другие инструменты, которые, например, могут быть iftop
или tcpdump
.
Дальнейшие действия во многом зависят от времени жизни каждого соединения и от того, какой конец установил соединение. Если ваша сторона - сервер, тогда вы сможете определить прослушивающий сокет, принадлежащий серверному процессу.
Если это действительно httpd
процесс (как вы, кажется, подразумеваете в своем вопросе), то ваш журнал доступа к веб-серверу - это то место, куда нужно смотреть. Следует иметь в виду одно предостережение: каждый запрос регистрируется только после завершения передачи для этого запроса. Это может иметь большое значение, если вы обслуживаете файлы размером много МБ.
Если вашей стороной является клиент, вы не увидите прослушивающих сокетов, но в случае, если соединения являются долгоживущими, вы можете найти соединения и соответствующий процесс, используя netstat
, как только вы подтвердите, какое соединение использует полосу пропускания.
Если расследование, описанное выше, приведет вас к выводу, что большая часть трафика происходит через короткоживущие соединения, установленные с вашей стороны, тогда netstat
недостаточно, чтобы определить ответственный процесс. Этот конкретный сценарий был рассмотрен в старый вопрос.
Вы можете попробовать использовать lsof
чтобы проверить, какие процессы используют сетевые подключения.
Список всех сетевых подключений: lsof -i
Перечислите все соединения TCP или UDP: lsof -i tcp; lsof -i udp;
Процессы, прослушивающие определенный порт: lsof -i :80
Перечислить сетевые файлы, которые используются процессом: lsof -i -a -p 234
Перечислите сетевые файлы, открытые процессами, начинающимися с ssh: lsof -i -a -c ssh
nethogs сообщает о пропускной способности, используемой для каждого процесса, обновляется раз в секунду.
netstat -nlpt (должен запускаться как sudo или root) вернет pid / имя процесса, ответственного за соединение. Поскольку вы знаете IP-адрес, вы можете просто сделать
sudo netstat -nlpt | grep xx.xx.xx.xx
и посмотрите, что это за процесс. Мои навыки больше связаны с окнами, поэтому мой синтаксис может быть немного неправильным. Я поискал переключатели для Linux и нашел это как # 5 Вот.
Это был интересный вопрос, и похоже, что ядро по умолчанию не хранит счетчики использования пропускной способности сети для каждого процесса, но модуль ядра netatop [1] добавляет эту возможность, которая затем делает ее доступной для ведения журнала и отчетов с использованием atop [ 2].
[1]: см. http://www.atoptool.nl/netatop.php
[2]: см. http://www.atoptool.nl/