netstat cho thấy một cổng nghe không có pid nhưng lsof thì không


21

Câu hỏi này tương tự như cổng mạng mở, nhưng không có quy trình kèm theo?

Tôi đã thử mọi thứ từ đó, xem lại nhật ký, v.v ... và không thể tìm thấy gì.

Netstat của tôi hiển thị cổng nghe TCP và cổng UDP không có pid. Khi tôi tìm kiếm lsof cho các cổng đó, không có gì xuất hiện.

netstat -lntup
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:44231           0.0.0.0:*               LISTEN      -               
udp        0      0 0.0.0.0:55234           0.0.0.0:*                           - 

Các lệnh sau không hiển thị gì:

lsof | grep 44231
lsof | greo 55234
fuser -n tcp 44231
fuser -n udp 55234

Sau khi khởi động lại, hai kết nối "giống nhau" đó sẽ xuất hiện ngoại trừ số cổng mới:

netstat -lntup
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:45082           0.0.0.0:*               LISTEN      -               
udp        0      0 0.0.0.0:37398           0.0.0.0:*                           - 

Và một lần nữa, các lệnh lsof và fuser không hiển thị gì.

Bất kỳ ý tưởng họ là gì? Tôi có nên quan tâm đến họ?

Câu trả lời:


11

Từ dữ liệu bạn cung cấp, tôi muốn nói rằng nó có liên quan đến một số gắn kết NFS hoặc một cái gì đó sử dụng RPC.

bạn có thể kiểm tra rpcinfo -pcác cổng có thể được sử dụng bởi một số dịch vụ liên quan đến RPC.

Đây là giao diện của hệ thống của tôi

# netstat -nlp | awk '{if ($NF == "-")print $0}'
tcp        0      0 0.0.0.0:55349           0.0.0.0:*               LISTEN      -               
udp        0      0 0.0.0.0:18049           0.0.0.0:*                           - 

# rpcinfo -p
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  10249  status
    100024    1   tcp  10249  status
    100021    1   udp  18049  nlockmgr
    100021    3   udp  18049  nlockmgr
    100021    4   udp  18049  nlockmgr
    100021    1   tcp  55349  nlockmgr
    100021    3   tcp  55349  nlockmgr
    100021    4   tcp  55349  nlockmgr

1
Nếu bạn gặp vấn đề này và muốn buộc nlockmgr sử dụng các cổng cụ thể, hãy thử giải pháp này: fclose.com/39425/fixing-ports- used-by-nfs-server .
Ryan Walls

13

Một số quy trình / pids chỉ có sẵn để root. Thử

sudo netstat -antlp

nó sẽ trả về giá trị của mỗi cổng mở không ở trạng thái TIME_WAIT


2
mỗi cổng TCP mở chỉ với lệnh này. Các cổng UDP sẽ không được hiển thị.
petrus

8

Dựa trên gợi ý từ @ user202173 và những người khác, tôi đã có thể sử dụng cách sau để theo dõi quá trình sở hữu một cổng ngay cả khi nó được liệt kê như -trong netstat.

Đây là tình huống bắt đầu của tôi. sudo netstathiển thị cổng với PID / Chương trình của -. lsof -icho thấy không có gì.

$ sudo netstat -ltpna | awk 'NR==2 || /:8785/'
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp6       0      0 :::8785                 :::*                    LISTEN      -
tcp6       1      0 ::1:8785                ::1:45518               CLOSE_WAIT  -
$ sudo lsof -i :8785
$

Bây giờ hãy đi câu cá. Trước tiên, hãy lấy inode bằng cách thêm -evào netstatcuộc gọi của chúng tôi .

$ sudo netstat -ltpnae | awk 'NR==2 || /:8785/'
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode       PID/Program name
tcp6       0      0 :::8785                 :::*                    LISTEN      199179     212698803   -
tcp6       1      0 ::1:8785                ::1:45518               CLOSE_WAIT  0          0           -

Tiếp theo sử dụng lsofđể có được quá trình gắn liền với inode đó.

$ sudo lsof | awk 'NR==1 || /212698803/'
COMMAND      PID    TID                USER   FD      TYPE             DEVICE   SIZE/OFF       NODE NAME
envelope_ 145661 145766               drees   15u     IPv6          212698803        0t0        TCP *:8785 (LISTEN)

Bây giờ chúng tôi biết id quá trình để chúng tôi có thể xem xét quá trình. Và thật không may, đó là một quá trình không còn tồn tại. Và PPID của nó là 1 vì vậy chúng ta cũng không thể giết cha mẹ của nó (xem Làm thế nào tôi có thể giết một quá trình có cha mẹ là init? ). Về lý thuyết, init có thể sẽ dọn sạch nó, nhưng tôi cảm thấy mệt mỏi vì phải chờ đợi và khởi động lại.

$ ps -lf -p 145661
F S UID         PID   PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
0 Z drees    145661      1  2  80   0 -     0 exit   May01 ?        00:40:10 [envelope] <defunct>

1
Đã tìm kiếm giải pháp này trong nhiều tháng nay. cảm ơn bạn đã Jem này
Manish Prasad

Tôi đã tìm kiếm một giải pháp như thế này trong nhiều năm. Cảm ơn bạn! Một trong những nhược điểm ở đây là nếu máy khách hoặc máy chủ NFS bị sa lầy, thì lsof | awk 'NR==1 || /212698803/'(ngay cả lsof -Nkhi chỉ hiển thị NFS) có thể rất chậm phản hồi và có thể hết thời gian. Một nhược điểm khác là inode có thể thay đổi trong khi bạn đang khắc phục sự cố này.
Stefan Lasiewski

4

Tôi không biết những thứ này cụ thể là gì, nhưng các mô-đun hạt nhân (ví dụ NFS) không có PID để liên kết với các ổ cắm này. Tìm kiếm một cái gì đó nghi ngờ trong lsmod.


Lsmod không trả lại gì cả. Máy chủ này là một máy khách NFS. Đó hiện là nghi phạm số 1 của tôi.
mhost

Điều đó sẽ giải thích tại sao các cổng máy khách đã thay đổi sau một phiên bản mới của kernel.
andyortlieb

Bạn không nên bị hạ thấp vì đây là một câu trả lời hoàn toàn hợp pháp. Nó giúp tôi tìm ra một trường hợp mà các câu trả lời khác (sử dụng rpcbind hoặc lsof) không giúp được gì. (Và vâng, đó là NFS.) Cảm ơn!
Peter Hansen

Hmm, tôi tự hỏi tại sao nó không gán PID cho máy khách NFS chỉ để bạn có thể thấy điều gì xảy ra với điều đó ... Tôi đoán rằng sẽ yêu cầu nó phải có một luồng công nhân hay cái gì đó?
SamB

3

Tôi không biết nếu điều này có thể hữu ích. Tôi có cùng một vấn đề và những gì tôi đã làm là như sau: Đầu tiên, tôi gọi netstat với các tùy chọn -a (tất cả) và -e (mở rộng). Với tùy chọn thứ hai, tôi có thể thấy Inode được liên kết với cổng được sử dụng. Sau đó, tôi đã gọi lsof | grep với số inode thu được và tôi đã nhận được quy trình PID liên quan đến inode đó. Điều đó đã làm việc trong trường hợp của tôi.


0

Có lưu lượng truy cập nào đến hoặc đi từ cổng này không, hãy kiểm tra xem với tcpdump -vv -x s 1500 port 37398 -w trace.outLưu bản ghi của bạn trong tệp theo dõi. Sau đó, bạn có thể mở nó bằng wireshark hoặc tcpdump -vv port 37398xem trực tiếp những gì đang diễn ra.

Cố gắng telnet đến cổng đó bằng netcat cho ổ cắm udp có thể bạn sẽ nhận được một số biểu ngữ giúp.

Nhận rkhunter và kiểm tra hệ thống của bạn cho một cửa hậu.

So sánh băm md5 của lsof / netstat với hàm băm từ phương tiện cài đặt của bạn, giả sử các tệp không cập nhật.


Tôi đã cố gắng để netcat cục bộ đến cả hai cổng và nó không hiển thị gì. Đối với cổng tcp, nó sẽ đóng nếu tôi gõ bất cứ thứ gì và sau đó nhập. Cái UDP chỉ đóng nếu tôi nhấn Ctrl + C. Tôi có iptables tại chỗ và nó không cho phép kết nối với các cổng đó, vì vậy trừ khi chúng bỏ qua iptables, tôi không thể tưởng tượng được thứ gì đó đang kết nối với chúng.
mhost

DB, APP là loại máy chủ nào?
Izac

Nó là một máy chủ web chạy apache và không có gì khác ngoài những thứ như cron và syslog.
mhost
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.