Intereting Posts
Добавление задержки между остановкой и началом процесса в systemd Различное поведение `vim -R` и` view` Установите USB-диск в Linux, который не был правильно удален в Windows Экранирование тире в вызове `dch` Вам нужно нажать enter, чтобы получить приглашение после выполнения скрипта udev Как устранить ошибку SSL-сертификата при установке PIP? SIGINFO на GNU Linux (Arch Linux) отсутствует Как добавить журналы в crontab с отметкой времени «Невозможно получить сертификат локального эмитента» и «неизвестное имя tlsv1», переадресация сокетов tcp от нескольких последовательных клиентов к одному постоянному подключению сокета к серверу kill -9 зависает, не может убить процесс (процесс проверки доказательств) Разделите буфер обмена между bash и X11 Выполнение несколько раз одной и той же команды с несколькими аргументами после трубы Ошибка операции ping6 " CentOS: Как установить libyaml-devel из источника?

Поиск локальных процессов, запускающих TCP-соединения

С tcpdump я вижу много SYN-пакетов … и IP-адрес источника – Localhost.

Я хочу найти, какие процессы пытаются подключиться.

Обратите внимание, что соединения не достигают состояния ESTABLISHED, они, как представляется, представляют собой случайные сканирования портов.

Предполагая, что у вас установлен SystemTap

 probe begin { printf("ok\n"); } probe syscall.connect { # connect however may fail or flail around in a EINPROGRESS state; # this log only indicates that a connect was attempted if (uaddr_af == "AF_INET" || uaddr_af == "AF_INET6") printf("%s[%d]: %s\n", execname(), pid(), argstr); } probe syscall.connect.return { printf(" -> %s[%d]: %s\n", execname(), pid(), retstr); } 

сохранено как whomakeconnect.stp будет показывать вызовы connect при запуске с stap как root

 # stap-prep ... fix anything reported, it requires debug kernels ... # stap whomakeconnect.stp 

Вы можете использовать netstat cammand. Он показывает состояние пакета. Но вы должны поймать выход, потому что это кажется только при отправке. Это не похоже на сокет для прослушивания tcp. Вот почему вы можете заставить его поймать, используя команду watch. Я полагаю, что соединение связано с ipv4.

 watch -n 0.1 'netstat -4pn | grep -F "SYN_SENT"' 

флаги nestat

p flag: идентификатор процесса / имя

n flag: числовой вывод (без разрешения dns)

4: показать ipv4 сокеты

команда watch делает команду netstat повторяющейся с 0,1-секундным периодом.

Недавно я был в той же ситуации в Linux (виновником был adb ). Мой подход заключался в использовании системы аудита для регистрации системных вызовов connect() .

 sudo auditctl -a exit,always -F arch=b64 -S connect -k who-connects 

Чтобы сообщить системе аудита о регистрации всех системных вызовов connect() (здесь 64-битный вариант, вы можете добавить еще один вариант для 32-битных вариантов, если вы работаете в многоэкранной системе с 32-разрядными и 64-разрядными приложениями)

Позднее запустить:

 sudo ausearch -i -k who-connects 

Чтобы узнать, что сделало связи.

По-прежнему можно было бы создавать TCP-соединения, не используя API-интерфейс сокета. Например, реализовав стек TCP в пользовательском пространстве и используя API нижнего уровня для отправки пакетов, но это не будет распространено (особенно в интерфейсе loopback).