Android

วิธีตรวจสอบพอร์ตการฟังใน linux (พอร์ตที่ใช้งาน)

Devar Bhabhi hot romance video देवर à¤à¤¾à¤à¥€ की साथ हॉट रोमाà¤

Devar Bhabhi hot romance video देवर à¤à¤¾à¤à¥€ की साथ हॉट रोमाà¤

สารบัญ:

Anonim

เมื่อแก้ไขปัญหาการเชื่อมต่อเครือข่ายหรือปัญหาเฉพาะแอปพลิเคชันสิ่งแรกที่ควรตรวจสอบควรเป็นพอร์ตใดที่ใช้งานจริงในระบบของคุณและแอปพลิเคชันใดที่กำลังฟังบนพอร์ตเฉพาะ

บทความนี้จะอธิบายวิธีการค้นหาว่าบริการใดกำลังรับฟังว่าพอร์ตใดที่ใช้คำ netstat , ss และ lsof คำแนะนำนี้ใช้ได้กับระบบปฏิบัติการ Linux และ Unix ทั้งหมดเช่น macOS

พอร์ตการฟังคืออะไร

พอร์ตเครือข่ายจะระบุด้วยหมายเลขที่อยู่ IP ที่เกี่ยวข้องและประเภทของโปรโตคอลการสื่อสารเช่น TCP หรือ UDP

พอร์ตการฟังคือพอร์ตเครือข่ายที่แอปพลิเคชันหรือกระบวนการรับฟังทำหน้าที่เป็นจุดสิ้นสุดการสื่อสาร

พอร์ตการรับฟังแต่ละพอร์ตสามารถเปิดหรือปิด (กรอง) โดยใช้ไฟร์วอลล์ โดยทั่วไปแล้วพอร์ตเปิดคือพอร์ตเครือข่ายที่รับแพ็คเก็ตขาเข้าจากสถานที่ห่างไกล

คุณไม่สามารถรับฟังบริการสองพอร์ตในที่อยู่ IP เดียวกันได้

ตัวอย่างเช่นหากคุณใช้ Apache เว็บเซิร์ฟเวอร์ที่ฟังพอร์ต 80 และ 443 และคุณพยายามติดตั้ง Nginx ในภายหลังจะไม่สามารถเริ่มทำงานได้เนื่องจากพอร์ต HTTP และ HTTPS ใช้งานอยู่แล้ว

ตรวจสอบพอร์ตการฟังด้วย netstat

netstat เป็นเครื่องมือบรรทัดคำสั่งที่สามารถให้ข้อมูลเกี่ยวกับการเชื่อมต่อเครือข่าย

ในการแสดงรายการพอร์ต TCP หรือ UDP ทั้งหมดที่กำลังฟังอยู่รวมถึงบริการที่ใช้พอร์ตและสถานะซ็อกเก็ตให้ใช้คำสั่งต่อไปนี้:

sudo netstat -tunlp

ตัวเลือกที่ใช้ในคำสั่งนี้มีความหมายต่อไปนี้:

  • -t - แสดงพอร์ต TCP -u - แสดงพอร์ต UDP -n - แสดงที่อยู่ตัวเลขแทนการแก้ไขโฮสต์ -l - แสดงพอร์ตการฟังเท่านั้น -p - แสดง PID และชื่อของกระบวนการของผู้ฟัง ข้อมูลนี้แสดงต่อเมื่อคุณรันคำสั่งในฐานะผู้ใช้รูทหรือ sudo

ผลลัพธ์จะมีลักษณะดังนี้:

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 445/sshd tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 929/master tcp6 0 0:::3306:::* LISTEN 534/mysqld tcp6 0 0:::80:::* LISTEN 515/apache2 tcp6 0 0:::22:::* LISTEN 445/sshd tcp6 0 0:::25:::* LISTEN 929/master tcp6 0 0:::33060:::* LISTEN 534/mysqld udp 0 0 0.0.0.0:68 0.0.0.0:* 966/dhclient

คอลัมน์สำคัญในกรณีของเราคือ:

  • Proto - โปรโตคอลที่ใช้โดยซ็อกเก็ต Local Address - Local Address IP และหมายเลขพอร์ตที่กระบวนการรับฟัง PID/Program name - PID และชื่อของกระบวนการ

sudo netstat -tnlp | grep:22

ผลลัพธ์แสดงว่าในเครื่องของพอร์ตนี้ 22 ใช้เซิร์ฟเวอร์ SSH:

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 445/sshd tcp6 0 0:::22:::* LISTEN 445/sshd

หากเอาต์พุตว่างหมายความว่าไม่มีสิ่งใดฟังอยู่บนพอร์ต

คุณยังสามารถกรองรายการตามเกณฑ์เช่น PID, โปรโตคอล, สถานะและอื่น ๆ

netstat ล้าสมัยและถูกแทนที่ด้วย ss และ ip แต่ก็ยังเป็นคำสั่งที่ใช้มากที่สุดในการตรวจสอบการเชื่อมต่อเครือข่าย

ตรวจสอบพอร์ตการฟังด้วย ss

ss คือ netstat ใหม่ มันขาดคุณสมบัติ netstat บางตัว แต่จะเปิดเผยสถานะ TCP มากกว่าและเร็วกว่าเล็กน้อย ตัวเลือกคำสั่งส่วนใหญ่เหมือนกันดังนั้นการเปลี่ยนจาก netstat เป็น ss นั้นไม่ยาก

ในการรับรายการพอร์ตการฟังทั้งหมดด้วย ss คุณจะต้องพิมพ์:

sudo ss -tunlp

เอาต์พุตเกือบจะเหมือนกับที่รายงานโดย netstat :

State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd", pid=445, fd=3)) LISTEN 0 100 0.0.0.0:25 0.0.0.0:* users:(("master", pid=929, fd=13)) LISTEN 0 128 *:3306 *:* users:(("mysqld", pid=534, fd=30)) LISTEN 0 128 *:80 *:* users:(("apache2", pid=765, fd=4), ("apache2", pid=764, fd=4), ("apache2", pid=515, fd=4)) LISTEN 0 128:22:* users:(("sshd", pid=445, fd=4)) LISTEN 0 100:25:* users:(("master", pid=929, fd=14)) LISTEN 0 70 *:33060 *:* users:(("mysqld", pid=534, fd=33))

ตรวจสอบพอร์ตการฟังด้วย lsof

lsof เป็นโปรแกรมอรรถประโยชน์บรรทัดคำสั่งที่มีประสิทธิภาพที่ให้ข้อมูลเกี่ยวกับไฟล์ที่เปิดโดยกระบวนการ

ใน Linux ทุกอย่างเป็นไฟล์ คุณสามารถนึกถึงซ็อกเก็ตเป็นไฟล์ที่เขียนไปยังเครือข่าย

ในการรับรายการพอร์ต TCP ที่รับฟังทั้งหมดที่มีประเภท lsof :

sudo lsof -nP -iTCP -sTCP:LISTEN

ตัวเลือกที่ใช้มีดังนี้:

  • -n - อย่าแปลงหมายเลขพอร์ตเป็นชื่อพอร์ต -p - อย่าแก้ไขชื่อโฮสต์แสดงที่อยู่เป็นตัวเลข -iTCP -sTCP:LISTEN - แสดงเฉพาะไฟล์เครือข่ายที่มีสถานะ TCP LISTEN

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 445 root 3u IPv4 16434 0t0 TCP *:22 (LISTEN) sshd 445 root 4u IPv6 16445 0t0 TCP *:22 (LISTEN) apache2 515 root 4u IPv6 16590 0t0 TCP *:80 (LISTEN) mysqld 534 mysql 30u IPv6 17636 0t0 TCP *:3306 (LISTEN) mysqld 534 mysql 33u IPv6 19973 0t0 TCP *:33060 (LISTEN) apache2 764 www-data 4u IPv6 16590 0t0 TCP *:80 (LISTEN) apache2 765 www-data 4u IPv6 16590 0t0 TCP *:80 (LISTEN) master 929 root 13u IPv4 19637 0t0 TCP *:25 (LISTEN) master 929 root 14u IPv6 19638 0t0 TCP *:25 (LISTEN)

ชื่อคอลัมน์เอาต์พุตส่วนใหญ่อธิบายตนเองได้:

  • COMMAND , PID , USER - ชื่อ, pid และผู้ใช้ที่รันโปรแกรมที่เชื่อมโยงกับพอร์ต NAME - หมายเลขพอร์ต

หากต้องการค้นหากระบวนการที่กำลังฟังบนพอร์ตเฉพาะเช่นพอร์ต 3306 คุณจะใช้:

sudo lsof -nP -iTCP:3306 -sTCP:LISTEN

ผลลัพธ์แสดงว่าพอร์ต 3306 ใช้โดยเซิร์ฟเวอร์ MySQL:

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mysqld 534 mysql 30u IPv6 17636 0t0 TCP *:3306 (LISTEN)

สำหรับข้อมูลเพิ่มเติมโปรดไปที่หน้า man lsof และอ่านเกี่ยวกับตัวเลือกอันทรงพลังอื่น ๆ ของเครื่องมือนี้

ข้อสรุป

เราได้แสดงให้คุณเห็นคำสั่งต่าง ๆ ที่คุณสามารถใช้เพื่อตรวจสอบว่าพอร์ตใดที่ใช้งานอยู่ในระบบของคุณและวิธีค้นหากระบวนการที่ฟังบนพอร์ตเฉพาะ

สถานีปลายทาง