Я искал такую команду, она достигает:
Таким образом, с точки зрения пользователя системы, когда пакеты захватываются, он / она может просматривать пакеты, как в wirehark, и загружать файл pcap. Поскольку процедура анализа может потреблять довольно много системных ресурсов, поэтому я надеюсь, что файл pcap можно перенаправить на другой сервер и запустить анализ на этом сервере. Теперь проблема в том, nc
слушатель уходит, когда tcpdump
убит (я пробовал -15
), хотя я надеюсь, что слушатель все еще может работать, потому что может быть несколько серверов, работающих tcpdump
.
tcpdump -i eth0 port 8801 -w a.pcap | nc 192.168.12.5 9901
Настройте tcpdump на стандартный вывод необработанных данных PCAP и используйте SSH в качестве транспортного механизма, чтобы эти данные записывались в удаленный файл на удаленном хосте анализа в виде непрерывного потока.
Пример:
tcpdump -i eth0 port 8801 -w - | ssh ${remote_host} "cat >> $(hostname).pcap"
В приведенном выше примере я использовал $(hostname)
чтобы оценить имя хоста сервера (на котором запускается tcpdump), чтобы разумно назвать удаленный файл, но, конечно, адаптируйте это к своим потребностям (возможно, включите метку времени в имя, если это полезно).
Альтернативный пример с именованием удаленного файла с временной меткой UNIX:
tcpdump -i eth0 port 8801 -w - | ssh ${remote_host} "cat > $(hostname)_$(date +%s).pcap"
Я думаю, вы можете получить желаемый результат, используя отдельный nc
процесс, который слушает сервер, где tcpdump
запускает и дублирует его на удаленный сервер.
Ты можешь сделать nc
послушайте и отправьте (в качестве примера):
nc -k -l localhost 9901 | nc 192.168.12.5 9901
тогда вы можете подключить любой tcpdump
сеанс, который вам нужен с
tcpdump -i eth0 port 8801 -w a.pcap | nc localhost 9901
В -k
флаги "Заставляет nc продолжать прослушивание другого соединения после завершения текущего соединения."
Помните, что если вы используете дистрибутив на основе Debian, есть известная ошибка:
В
netcat-traditional
пакет в Debian / Ubuntu не слушает, как> должно. В этом случае используйтеnetcat-openbsd
пакет вместо этого.