netstat แสดงพอร์ตการฟังที่ไม่มี pid แต่ lsof ไม่ได้


21

คำถามนี้คล้ายกับพอร์ตเครือข่ายที่เปิดอยู่ แต่ไม่มีกระบวนการเชื่อมต่อหรือไม่

ฉันลองทุกอย่างจากที่นั่นตรวจสอบบันทึก ฯลฯ ... และหาอะไรไม่พบ

netstat ของฉันแสดงพอร์ตการฟัง TCP และพอร์ต UDP โดยไม่มี pid เมื่อฉันค้นหาพอร์ตเหล่านั้นไม่มีอะไรเกิดขึ้น

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:*                           - 

คำสั่งต่อไปนี้ไม่แสดงผลใด ๆ :

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

หลังจากรีบูตเครื่องแล้วการเชื่อมต่อทั้งสอง "เดียวกัน" จะมียกเว้นด้วยหมายเลขพอร์ตใหม่

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:*                           - 

และอีกครั้งคำสั่ง lsof และ fuser ไม่แสดงอะไรเลย

ความคิดใด ๆ ที่พวกเขาคืออะไร? ฉันควรจะกังวลเกี่ยวกับพวกเขาหรือไม่

คำตอบ:


11

จากข้อมูลที่คุณให้ฉันบอกว่ามันเกี่ยวข้องกับการเมานต์ NFS บางอย่างหรือบางอย่างที่ใช้ RPC

คุณสามารถตรวจสอบrpcinfo -pหาพอร์ตที่อาจใช้โดยบริการที่เกี่ยวข้องของ RPC

นี่คือลักษณะของระบบของฉัน

# 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
ถ้าคุณมีปัญหานี้และต้องการที่จะบังคับให้ nlockmgr กับการใช้พอร์ตเฉพาะพยายามแก้ปัญหานี้: fclose.com/39625/fixing-ports-used-by-nfs-server
Ryan Walls

13

กระบวนการ / pids บางอย่างสามารถรูทได้เท่านั้น ลอง

sudo netstat -antlp

มันควรคืนค่า pid ของทุกพอร์ตที่เปิดซึ่งไม่ได้อยู่ในสถานะ TIME_WAIT


2
ทุกพอร์ต TCP ที่เปิดอยู่เฉพาะกับคำสั่งนี้ พอร์ต UDP จะไม่ปรากฏขึ้น
petrus

8

จากคำแนะนำจาก @ user202173 และอื่น ๆ ฉันสามารถใช้สิ่งต่อไปนี้เพื่อติดตามกระบวนการที่เป็นเจ้าของพอร์ตแม้ว่าจะอยู่ในรายการ-ใน netstat ก็ตาม

นี่คือสถานการณ์เริ่มต้นของฉัน sudo netstatพอร์ตการแสดงกับ PID / -โครงการ lsof -iไม่แสดงอะไรเลย

$ 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
$

ตอนนี้ไปตกปลากันเถอะ ก่อนอื่นมารับไอโหนดโดยเพิ่ม-eการnetstatเรียกของเรา

$ 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           -

ใช้ถัดไปlsofเพื่อรับกระบวนการที่แนบกับ 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)

ตอนนี้เรารู้รหัสกระบวนการเพื่อให้เราสามารถดูกระบวนการ และน่าเสียดายที่มันเป็นกระบวนการที่หมดอายุ และ PPID ของมันคือ 1 ดังนั้นเราจึงไม่สามารถฆ่าผู้ปกครองได้ (ดูที่ฉันจะฆ่ากระบวนการที่ผู้ปกครองเป็นเจ้าของได้อย่างไร ) ในทางทฤษฎีแล้วในที่สุดอาจทำความสะอาดได้ แต่ฉันเบื่อที่จะต้องรอและรีบูท

$ 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
ค้นหาโซลูชันนี้มาหลายเดือนแล้ว ขอบคุณสำหรับ jem นี้
manish Prasad

ฉันกำลังมองหาวิธีแก้ปัญหาเช่นนี้มานานหลายปี ขอขอบคุณ! หนึ่งในข้อเสียที่นี่คือว่าหากไคลเอนต์หรือเซิร์ฟเวอร์ NFS จมอยู่ในนั้นดังนั้นlsof | awk 'NR==1 || /212698803/'(แม้lsof -Nจะแสดง NFS เท่านั้น) อาจช้ามากในการตอบสนองและอาจหมดเวลา ข้อเสียอีกอย่างหนึ่งคือไอโหนดอาจเปลี่ยนแปลงได้ในขณะที่คุณกำลังแก้ไขปัญหานี้
Stefan Lasiewski

4

ฉันไม่ทราบว่าสิ่งเหล่านี้เฉพาะเจาะจง แต่เคอร์เนลโมดูล (ตัวอย่างเช่น NFS) ไม่มี PID เพื่อเชื่อมโยงกับซ็อกเก็ตเหล่านี้ ค้นหาสิ่งที่สงสัยใน lsmod


lsmod ส่งคืนอะไร เซิร์ฟเวอร์นี้เป็นไคลเอ็นต์ NFS ปัจจุบันเป็นผู้ต้องสงสัยอันดับ 1 ของฉัน
mhost

นั่นจะอธิบายสาเหตุที่พอร์ตไคลเอ็นต์เปลี่ยนแปลงหลังจากอินสแตนซ์ใหม่ของเคอร์เนล
andyortlieb

คุณไม่ควรถูกลดระดับลงเนื่องจากนี่เป็นคำตอบที่ถูกต้องสมบูรณ์ มันช่วยฉันค้นหากรณีที่คำตอบอื่น ๆ (โดยใช้ rpcbind หรือ lsof) ไม่ได้ช่วย (และใช่มันเป็น NFS) ขอบคุณ!
ปีเตอร์แฮนเซน

อืมฉันสงสัยว่าทำไมมันไม่ได้กำหนด PID ให้กับไคลเอนต์ NFS เพื่อให้คุณสามารถเห็นว่าเกิดอะไรขึ้นกับ ... ฉันคิดว่ามันต้องมีเธรดคนงานหรืออะไรซักอย่าง?
SamB

3

ฉันไม่รู้ว่ามันจะมีประโยชน์หรือไม่ ฉันมีปัญหาเดียวกันและสิ่งที่ฉันทำมีดังต่อไปนี้: ก่อนอื่นฉันเรียก netstat พร้อมตัวเลือก -a (all) และ -e (ขยาย) ด้วยตัวเลือกหลังฉันสามารถดู Inode ที่เกี่ยวข้องกับพอร์ตที่ใช้ จากนั้นฉันเรียก lsof | grep ด้วยหมายเลขไอโหนดที่ได้รับและฉันได้รับ PID ของกระบวนการที่เกี่ยวข้องกับไอโหนดนั้น ที่ทำงานในกรณีของฉัน


0

มีการรับส่งข้อมูลใด ๆ ที่มาหรือไปจากพอร์ตนี้หรือไม่ตรวจสอบด้วยการtcpdump -vv -x s 1500 port 37398 -w trace.outบันทึกการจับภาพของคุณในไฟล์ trace.out จากนั้นคุณสามารถเปิดด้วย wireshark หรือtcpdump -vv port 37398ดูว่าเกิดอะไรขึ้นโดยตรง

ลอง telnet ไปที่พอร์ตนั้นใช้ netcat สำหรับซ็อกเก็ต udp บางทีคุณอาจได้แบนเนอร์ที่ช่วยได้

รับ rkhunter และตรวจสอบระบบของคุณสำหรับลับๆ

เปรียบเทียบ md5 hash ของ lsof / netstat กับที่มาจากสื่อบันทึกการติดตั้งของคุณโดยสมมติว่าไฟล์ที่ไม่ได้อัปเดต


ฉันพยายาม netcat ภายในเครื่องไปยังพอร์ตทั้งสองและไม่แสดงอะไรเลย สำหรับพอร์ต tcp จะปิดลงถ้าฉันพิมพ์อะไรก็ได้จากนั้นป้อน UDP จะปิดลงถ้าฉันกด Ctrl + C เท่านั้น ฉันมี iptables และไม่อนุญาตให้มีการเชื่อมต่อกับพอร์ตเหล่านั้นดังนั้นหากพวกเขาข้าม iptables ฉันไม่สามารถจินตนาการได้ว่ามีบางสิ่งเชื่อมต่อกับพวกเขา
mhost

เซิร์ฟเวอร์ประเภทใดที่คุณใช้คือ DB, APP .. คุณใช้ซอฟต์แวร์ชนิดใด
Izac

มันเป็นเว็บเซิร์ฟเวอร์ที่ใช้ apache และไม่มีอะไรอื่นนอกจาก cron และ syslog
mhost
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.