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

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

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 

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

  • Зачем вычислять контрольные суммы загруженных файлов?
  • Загрузка модулей ядра, которые были скомпилированы для другого ядра, не удалась
  • Как узнать, какие беспроводные протоколы использует моя сетевая карта?
  • Как рекламировать услугу на порту
  • Отчетная сеть и статистика жизней и запись в db и изображение
  • Какой процесс отправил данные с моего компьютера?
  • Пользовательское приложение, запущенное на встроенном устройстве - мне нужно зарегистрировать свой прослушивающий порт в / etc / services?
  • Почему не останавливает сервер nginx убивать связанные с ним процессы?
  • 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).

    Interesting Posts

    TTY заливается кнопкой, которая не существует, удерживается нажатой

    Почему я должен постоянно отключать и подключаться к Интернету?

    Восстановить окно GUI после минимизации в ratpoison

    Является ли tty_nr ссылкой в ​​другом месте в GNU / Linux procfs?

    Как правильно уловить опциональные и необязательные аргументы?

    Почему терминал автоматически вводит мою команду после вставки текста?

    Туннелирование трафика IPv6 из SLIP в Linux

    Почему syslogd не сообщает сообщения на удаленном сервере во время и сразу после загрузки?

    Как включить параметр двойной загрузки на экране загрузки?

    Скрипт с завитом работает вручную, но не в работе cron

    Выключение ПК после приостановления процесса терминала (apt-get upgrade)

    сетевой интерфейс не активируется, хотя включен onboot

    как удалить строку из файла XML

    Поиск пакетов с установленными старыми конфигурациями и принудительное использование новых конфигураций

    Установка linux на 32-битной машине UEFI

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