Intereting Posts
Thunar: «Невозможно найти или создать каталог корзины для мусора» на долю samba Уязвимость Bash CVE-2014-6271 (Shellshock) исправлена ​​на Debian 6.0 (Squeeze) Идентификация запущенных программ, которые используют старую версию библиотеки, которую я только что заменил Как некоторые инструменты (например, nano, less) не могут оставить содержимое в терминалах после выхода? Почему «journalctl –disk-using» и «journalctl | wc ”не соответствует хорошо? Как я могу найти неравномерные разрешения файлов в структуре каталогов? Какая функция в ядре Linux отключает действие? Попытка использования OpenCL с Nvidia в Arch Linux Сообщение об ошибке Debian: «Не удалось найти том LVM», но затем успешно загружается как я могу скрыть «ctags: Предупреждение: игнорирование тега null в" Как начать процесс с помощью cpulimit? Zsh: export: недействительно в этом контексте Bash Как я могу обернуть текст на определенное количество разделенных пространством входов Время начала процесса с часовым поясом Какой формат дает photorec для файлов?

Как отслеживать сетевую активность команды?

Я хочу отслеживать сетевую активность команды, я пробовал tcpdump и strace без успеха.

Например, если я устанавливаю пакет или используя любую команду, пытающуюся связаться с каким-либо сайтом, я хочу просмотреть эту сетевую активность (сайт, к которой он пытается связаться).

Я думаю, мы можем сделать это, используя tcpdump. Я попытался, но он отслеживает всю сетевую активность моей системы. Предположим, если я запускаю несколько связанных с сетью commmands, и я хочу отслеживать только определенную деятельность в сетевой команде, в то время трудно найти точное решение.

Есть ли способ сделать это?

ОБНОВИТЬ:

Я не хочу отслеживать все, что происходит в моем сетевом интерфейсе. Я просто хочу отслеживать команду (для примера #yum install -y vim) сетевой активности. Такие, как сайт, который он пытается достичь.

netstat для простоты

Использование netstat и grepping в PID или имени процесса:

 # netstat -np --inet | grep "thunderbird" tcp 0 0 192.168.134.142:45348 192.168.138.30:143 ESTABLISHED 16875/thunderbird tcp 0 0 192.168.134.142:58470 192.168.138.30:443 ESTABLISHED 16875/thunderbird 

И вы можете использовать watch для динамических обновлений:

 watch 'netstat -np --inet | grep "thunderbird"' 

С:

  • -n : показывать числовые адреса вместо того, чтобы определять символические имена хоста, порта или пользователя
  • -p : Показать PID и имя программы, к которой принадлежит каждый сокет.
  • --inet : показывать только сырые, udp и tcp-сокеты.

strace для многословия

Вы сказали, что попробовали инструмент strace , но вы попробовали опцию trace=network ? Обратите внимание, что вывод может быть довольно подробным, поэтому вам может понадобиться grepping. Вы можете начать с grepping на «sin_addr».

  strace -f -e trace=network <your command> 2>&1 | grep sin_addr 

Или, для уже запущенного процесса, используйте PID:

  strace -f -e trace=network -p <PID> 2>&1 | grep sin_addr 

sysdig позволяет отслеживать всю активность ядра или нескольких команд в пути, включая и не ограничиваясь сетевой активностью.

Поскольку вывод может быть большим, вы должны создавать фильтры, страница по умолчанию для большинства базовых фильтров вполне понятна.

Это также имеет то преимущество, что оно не используется в качестве обертки, как в trace , и оно может быть довольно мощным.

Из примеров Sysdig

сетей

См. Основные процессы с точки зрения использования пропускной способности сети

 sysdig -c topprocs_net 

Показывать сетевые данные, обмениваемые с хостом 192.168.0.1

Как двоичный:

 sysdig -s2000 -X -c echo_fds fd.cip=192.168.0.1 

Как ASCII:

 sysdig -s2000 -A -c echo_fds fd.cip=192.168.0.1 

См. Верхние порты локального сервера:

В терминах установленных соединений:

 sysdig -c fdcount_by fd.sport "evt.type=accept" 

Что касается общих байтов:

 sysdig -c fdbytes_by fd.sport 

См. IP-адреса верхнего клиента

В терминах установленных связей

 sysdig -c fdcount_by fd.cip "evt.type=accept" 

В отношении общих байтов

 sysdig -c fdbytes_by fd.cip 

Список всех входящих соединений, которые не обслуживаются apache.

 sysdig -p"%proc.name %fd.name" "evt.type=accept and proc.name!=httpd" 

Я бы создал новое пространство имен в сети , переместил его в реальную сеть, а затем проверил мост с помощью tcpdump .

Вы можете использовать wirehark, чтобы обнюхать весь входной и выходной трафик сетевого интерфейса. Если вам нужен вариант без GUI, вы можете использовать tshark.

С помощью обоих параметров вы можете увидеть весь сетевой трафик и сохранить его, чтобы позже проанализировать все установленные соединения.