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

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

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 

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

  • Как рекламировать услугу на порту
  • CentOS 6 - запись сервера имен в reset.conf после перезапуска сетевых сервисов?
  • w для других сетевых хостов
  • Использование xdg-open для доступа к сети с обычным проводником
  • Зачем вычислять контрольные суммы загруженных файлов?
  • Как узнать, кто подключен через vnc к моей машине?
  • Что я могу использовать для мониторинга и регистрации входящего / исходящего трафика на / с удаленных хостов?
  • / mnt Каталоги исчезают
  • 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

    Что означает точка в регулярном выражении «^ {2} {2}. *" Делать?

    Установите пакет на OS X 10.11.5, используя apt-get

    Добавлен файл anaconda2 lib в LD_LIBRARY_PATH, в результате появляется предупреждение «без информации о версии»

    Как заставить «xargs» игнорировать выход ребенка и продолжить обработку

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

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

    Настроить панель крыла в элементарной ОС

    Установите новую команду сортировки unix без разрешения root

    Как я могу регистрировать все сеансы экрана

    У Apache нет разрешения на копирование файлов из смонтированного каталога

    Недокументированная –read-environment в ifup / ifdown / ifquery

    Выравнивание шаблона и удаление всей строки

    dd count default

    Как получить текущую дату и время в формате YYYYMMDDHHMMSS в ksh88?

    как перейти на архитектуру докеров?

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