Мережевий порт відкритий, але жодного процесу не додано?


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      -  

У моєму конкретному випадку на порту 5666 прослуховується демон nrpe (opsview install), але немає демона 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

З сторінки netstat:

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

Звідки ти знаєш, що немає жодного бігу? Якщо порт використовується, є сенс, що він негайно вийде з помилкою "socket in use". що трапиться, коли ви звертаєтесь до порту?

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

Для його використання вам знадобляться привілеї root


Добре, але мені потрібно більше, мені потрібно виконати його для кожного з'єднання в netstat. Тоді я можу визначити, що робить одна програма. Це поле без lsof / fstat або інших приємних утиліт, і як root, я не можу їх встановити через інші проблеми.
Акі

3

Я зміг відстежити процес, отримавши його inode через netstat, а потім скориставшись індедом з lsof. Дивіться мою більш детальну відповідь на /server//a/847910/94376 .


2

Іноді програми, пов'язані з nfs, не можна побачити у списку програм.

Також модулі пам’яті LDAP і libnss_ldap відкривають з'єднання з серверами ldap, але немає фактичного процесу, який тримає з'єднання відкритим, тому netstat -tnp показує активне з'єднання без процесу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.