Сетевой порт открыт, но процесс не подключен?


22

У меня странная ситуация с открытым сетевым портом. Мой главный вопрос: почему бы не быть программой, связанной с открытым портом TCP:

netstat -ln --program
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:5666                0.0.0.0:*                   LISTEN      -  

В моем конкретном случае предполагается, что демон nrpe (установка opsview) прослушивает порт 5666, но демон nrpe не работает. Если я попытаюсь запустить его, он немедленно выйдет.

lsof -i :5666не показывает никакого вывода либо. В моей системе не работает (x) inetd.

ОБНОВИТЬ

Да, я запускал эти команды от имени пользователя root. Telnet мог бы, но не было никакого ответа.

После дальнейшего изучения я обнаружил ошибку ядра в dmesg: это был экземпляр EC2 (на самом деле несколько из них), работающий на более старом ядре (2.6.16, по-видимому, нестабильно). Исправление, чтобы остановить падение, состояло в том, чтобы обновить ядра .

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


2
Каков результат: lsof -i tcp: 5666? Порт остается там при перезагрузке?
Дэйв Драгер

Это новая установка NRPE?
fpmurphy

Вам нужно запустить netstat от имени пользователя root, чтобы увидеть детали программы
eckes

Не стесняйтесь добавлять ответ на свои вопросы ...
rogerdpack

Ответы:


6

Порты, открытые ядром, не будут отображаться с именем программы. Некоторые вещи NFS и OCFS приходят на ум. Может быть, это что-то подобное?

Или это может быть ошибка ядра. Проверьте журналы ядра на OOPS и BUG.


24

Вы запускаете netstat и lsof от имени пользователя root или с помощью sudo? Обратите внимание на последний столбец:

netstat -ln --program
tcp        0      0 192.168.21.1:53         0.0.0.0:*               LISTEN      -               
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      -               
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -

sudo netstat -ln --program
tcp        0      0 192.168.21.1:53         0.0.0.0:*               LISTEN      2566/named      
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      2566/named      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      3125/sshd

Из man-страницы netstat:

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

Откуда ты знаешь, что нет ни одного бегущего? Если порт используется, имеет смысл, что он немедленно завершит работу с ошибкой «используется сокет». что происходит, когда вы telnet к порту?

telnet localhost 5666

4

выполнить 'netstat --tcp --udp --listening --program' от имени пользователя root . в противном случае вы не будете давать PID / название программы

затем используйте команду kill -9 PID


3

Я на самом деле написал небольшой сценарий оболочки, чтобы помочь идентифицировать эти случайные вопросы:

#! /bin/bash
([ "$1" = "" ] || [ "$2" = "" ]) && echo "Usage: tracer <space> <port>" && exit 0
for i in `fuser -n $1 $2`
 do
  ps aux | grep $i | grep -v 'grep'
 done

сохранить как / usr / local / bin / tracer; выход:

root@mo-log:/usr/flows# tracer tcp 80
80/tcp:             
root     27904  0.0  0.0 111668  3292 ?        Ss   Aug04   0:03 /usr/sbin/apache2 -k start
www-data 32324  0.0  0.0 335332  3560 ?        Sl   Aug05   0:00 /usr/sbin/apache2 -k start
www-data 32327  0.0  0.0 335324  3560 ?        Sl   Aug05   0:00 /usr/sbin/apache2 -k start

Вам понадобятся права суперпользователя, чтобы использовать его


Хорошо, но мне нужно больше, мне нужно выполнить его для каждого соединения в netstat. Затем я могу определить, что делает одна программа. Это коробка без lsof / fstat или других полезных утилит, и я не могу установить их как root из-за других проблем.
Аки

3

Я смог отследить процесс, получив его инод через netstat, а затем используя этот инод с lsof. Смотрите мой более подробный ответ в /server//a/847910/94376 .


2

Иногда программы, связанные с NFS, не отображаются в списке программ.

Кроме того, модули pap LDAP и libnss_ldap открывают соединения с серверами ldap, но фактический процесс, удерживающий соединение открытым, не существует, поэтому netstat -tnp показывает активное соединение без процесса.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.