Показывать сетевые подключения процесса

Есть способ показать связи процесса? Что-то вроде того:

show PID 

в котором show – команда для этого, а PID – это pid процесса. Результат, который я хочу, состоит из всего соединения процесса (в режиме реального времени). Например, если процесс пытается подключиться к 173.194.112.151, то выход будет 173.194.112.151 .

Более конкретный пример с Firefox:

 show `pidof firefox` 

и с firefox я иду сначала на google.com , затем на unix.stackexchange.com и, наконец, 192.30.252.129 . Вывод, когда я закрываю brower, должен быть:

 google.com stackexchange.com 192.30.252.129 

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

4 Solutions collect form web for “Показывать сетевые подключения процесса”

Вы ищете strace ! Я нашел этот ответ на askubuntu , но он действителен для Unix:

Чтобы запустить и контролировать новый процесс:

 strace -f -e trace=network -s 10000 PROCESS ARGUMENTS 

Для мониторинга существующего процесса с известным PID:

 strace -p $PID -f -e trace=network -s 10000 

В противном случае, но это характерно для Linux, вы можете запустить этот процесс в изолированном пространстве имен в сети и использовать wirehark для отслеживания трафика . Это, вероятно, будет более удобным, чем чтение журнала strace :

  • создать пространство имен тестовой сети:

     ip netns add test 
  • создать пару виртуальных сетевых интерфейсов (veth-a и veth-b):

     ip link add veth-a type veth peer name veth-b 
  • измените активное пространство имен интерфейса veth-a:

     ip link set veth-a netns test 
  • настроить IP-адреса виртуальных интерфейсов:

     ip netns exec test ifconfig veth-a up 192.168.163.1 netmask 255.255.255.0 ifconfig veth-b up 192.168.163.254 netmask 255.255.255.0 
  • настройте маршрутизацию в пространстве имен тестов:

     ip netns exec test route add default gw 192.168.163.254 dev veth-a 
  • активировать ip_forward и установить правило NAT для пересылки трафика из созданного вами пространства имен (вам необходимо настроить сетевой интерфейс и IP-адрес SNAT):

     echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -s 192.168.163.0/24 -o YOURNETWORKINTERFACE -j SNAT --to-source YOURIPADDRESS 

    (Вы также можете использовать правило MASQUERADE, если хотите)

  • наконец, вы можете запустить процесс, который хотите анализировать в новом пространстве имен, и wirehark:

     ip netns exec test thebinarytotest ip netns exec test wireshark 

    Вам нужно будет контролировать интерфейс veth-a.

Пытаться

 lsof -i -a -p `pidof firefox` 

Вот еще один подход:

ss -nap | grep $(pidof firefox)

Пример вывода:

 tcp ESTAB 0 0 192.168.0.222:49050 216.58.218.164:443 users:(("firefox",3280,69)) tcp ESTAB 0 0 192.168.0.222:48630 198.252.206.25:443 users:(("firefox",3280,106)) tcp ESTAB 0 0 192.168.0.222:44220 216.58.217.38:443 users:(("firefox",3280,140)) tcp ESTAB 0 0 192.168.0.222:52690 54.240.170.181:80 users:(("firefox",3280,107)) tcp ESTAB 0 0 192.168.0.222:48744 198.252.206.25:443 users:(("firefox",3280,87)) tcp ESTAB 0 0 192.168.0.222:48811 198.252.206.25:443 users:(("firefox",3280,73)) 

Вы можете попробовать также с netstat -p . На странице руководства:

netstat – печать сетевых подключений, таблиц маршрутизации, статистики интерфейса, соединений маскарада и многоадресных членств

Чтобы показывать только сетевые подключения, используйте netstat -tup . Обратите внимание, что для просмотра PID процесса вам может потребоваться root.

Если у вас нет netstat в вашей системе, у вас может быть ss , который имеет почти точный синтаксис. Вы можете использовать ss -tup (как root).

  • / mnt Каталоги исчезают
  • Запуск и остановка нескольких исполняемых файлов для легкой отладки
  • Наличие нескольких компьютеров в файле доступа к сети?
  • Linux GUI для отслеживания соединений, сделанных с / на этом компьютере
  • Отчетная сеть и статистика жизней и запись в db и изображение
  • Почему не останавливает сервер nginx убивать связанные с ним процессы?
  • CentOS 6 - запись сервера имен в reset.conf после перезапуска сетевых сервисов?
  • Что я могу использовать для мониторинга и регистрации входящего / исходящего трафика на / с удаленных хостов?
  • Какой процесс отправил данные с моего компьютера?
  • w для других сетевых хостов
  • Являются ли протоколы прикладного уровня частью библиотечных процедур?
  • Interesting Posts

    Как подсчитать количество интерфейсов в мосте

    X Window открывается с экрана

    Разница между снимком fsfreeze и lvm

    Как получить самые последние записи DNS из недавно обновленного домена?

    awk-манипуляция файлом fasta

    Загрузите весь сегодняшний стек с помощью wget

    Как форматировать вывод даты с пробелами как переменной в скрипте?

    Простой оператор if / else не работает

    Разная версия Python не может найти модули

    Как изменить цвет этого синего текста в моей командной строке?

    Как убедиться, что основной / внешний IP-адрес не зависит от типа / имени сетевого устройства

    Как запустить новую фоновую команду последовательно, если у меня уже есть команда nohup background?

    Невозможно записать DVD – несовместимый формат

    Получение информации из журналов с использованием grep, sed, awk и cut

    Выполните вывод parse ls с помощью sed, чтобы получить расположение файлов файлов с определенными именами

    Linux и Unix - лучшая ОС в мире.