วิธีค้นหารายการพอร์ตที่เปิดทั้งหมดใน Linux
ในบทความนี้ เราจะพูดถึงพอร์ตต่างๆ ในระบบเครือข่ายคอมพิวเตอร์โดยย่อ และมาดูกันว่าคุณจะแสดงรายการพอร์ตที่เปิดอยู่ใน Linux ได้อย่างไร
ในระบบเครือข่ายคอมพิวเตอร์ และแน่นอนกว่านั้นในแง่ของซอฟต์แวร์ พอร์ตคือเอนทิตีเชิงตรรกะซึ่งทำหน้าที่เป็นจุดสิ้นสุดของการสื่อสารเพื่อระบุแอปพลิเคชันหรือกระบวนการที่กำหนดบนระบบปฏิบัติการ Linux เป็นตัวเลข 16 บิต (0 ถึง 65535) ซึ่งทำให้แอปพลิเคชันหนึ่งแตกต่างจากอีกระบบหนึ่งบนระบบปลายทาง
โปรโตคอลการรับส่งข้อมูลทางอินเทอร์เน็ตที่ได้รับความนิยมสูงสุด 2 รายการ ได้แก่ Transmission Control Protocol (TCP) และ User Datagram Protocol (UDP) และโปรโตคอลอื่นๆ ที่ไม่ค่อยมีใครรู้จักใช้หมายเลขพอร์ตสำหรับเซสชันการสื่อสาร (หมายเลขพอร์ตต้นทางและปลายทางร่วมกับที่อยู่ IP ต้นทางและปลายทาง)
นอกจากนี้ การรวมกันของที่อยู่ IP พอร์ต และโปรโตคอล เช่น TCP/UDP เรียกว่าซ็อกเก็ต และทุกบริการจะต้องมีซ็อกเก็ตที่ไม่ซ้ำกัน
ด้านล่างนี้เป็นพอร์ตประเภทต่างๆ:
- 0-1023 – พอร์ตที่รู้จักกันดีหรือที่เรียกว่าพอร์ตระบบ
- 1024-49151 – พอร์ตที่ลงทะเบียนหรือที่เรียกว่าพอร์ตผู้ใช้
- 49152-65535 – พอร์ตไดนามิก หรือเรียกอีกอย่างว่าพอร์ตส่วนตัว
คุณสามารถดูรายการแอปพลิเคชันต่างๆ และการรวมกันของพอร์ต/โปรโตคอลในไฟล์ /etc/services
ใน Linux โดยใช้คำสั่ง cat:
cat /etc/services
OR
cat /etc/services | less
/etc/services:
$Id: services,v 1.48 2009/11/11 14:32:31 ovasik Exp $
#
Network services, Internet style
IANA services version: last updated 2009-11-10
#
Note that it is presently the policy of IANA to assign a single well-known
port number for both TCP and UDP; hence, most entries here have two entries
even if the protocol doesn't support UDP operations.
Updated from RFC 1700, ``Assigned Numbers'' (October 1994). Not all ports
are included, only the more common ones.
#
The latest IANA port assignments can be gotten from
http://www.iana.org/assignments/port-numbers
The Well Known Ports are those from 0 through 1023.
The Registered Ports are those from 1024 through 49151
The Dynamic and/or Private Ports are those from 49152 through 65535
#
Each line describes one service, and is of the form:
#
service-name port/protocol [aliases ...] [# comment]
tcpmux 1/tcp # TCP port service multiplexer
tcpmux 1/udp # TCP port service multiplexer
rje 5/tcp # Remote Job Entry
rje 5/udp # Remote Job Entry
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
systat 11/tcp users
systat 11/udp users
daytime 13/tcp
daytime 13/udp
qotd 17/tcp quote
qotd 17/udp quote
msp 18/tcp # message send protocol
msp 18/udp # message send protocol
chargen 19/tcp ttytst source
chargen 19/udp ttytst source
ftp-data 20/tcp
ftp-data 20/udp
21 is registered to ftp, but also used by fsp
ftp 21/tcp
ftp 21/udp fsp fspd
ssh 22/tcp # The Secure Shell (SSH) Protocol
ssh 22/udp # The Secure Shell (SSH) Protocol
telnet 23/tcp
telnet 23/udp
หากต้องการแสดงรายการพอร์ตที่เปิดอยู่ทั้งหมดหรือพอร์ตที่ทำงานอยู่ในปัจจุบัน รวมถึง TCP และ UDP ใน Linux เราจะใช้ netstat ซึ่งเป็นเครื่องมือที่มีประสิทธิภาพสำหรับการตรวจสอบการเชื่อมต่อเครือข่ายและสถิติ
$ netstat -lntu
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN
tcp 0 0 :::22 :::* LISTEN
tcp 0 0 :::80 :::* LISTEN
tcp 0 0 :::25 :::* LISTEN
udp 0 0 0.0.0.0:68 0.0.0.0:*
ที่ไหน,
-l
– พิมพ์เฉพาะซ็อกเก็ตการฟังเท่านั้น-n
– แสดงหมายเลขพอร์ต-t
– เปิดใช้งานรายการพอร์ต TCP-u
– เปิดใช้งานรายการพอร์ต udp
คุณยังสามารถใช้คำสั่ง ss ซึ่งเป็นยูทิลิตีที่มีประโยชน์ที่รู้จักกันดีในการตรวจสอบซ็อกเก็ตในระบบ Linux เรียกใช้คำสั่งด้านล่างเพื่อแสดงรายการพอร์ต TCP และ UCP ที่เปิดอยู่ทั้งหมด:
$ ss -lntu
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 *:68 *:*
tcp LISTEN 0 128 :::22 :::*
tcp LISTEN 0 128 *:22 *:*
tcp LISTEN 0 50 *:3306 *:*
tcp LISTEN 0 128 :::80 ::*
tcp LISTEN 0 100 :::25 :::*
tcp LISTEN 0 100 *:25
แนะนำให้อ่าน man page ของคำสั่งด้านบนเพื่อดูข้อมูลการใช้งานเพิ่มเติม
โดยสรุป การทำความเข้าใจแนวคิดของพอร์ตในระบบเครือข่ายคอมพิวเตอร์มีความสำคัญมากสำหรับผู้ดูแลระบบและผู้ดูแลระบบเครือข่าย คุณสามารถอ่านคู่มือ netstat นี้ได้ด้วยตัวอย่างที่เรียบง่าย แม่นยำ และอธิบายได้ดี
สุดท้ายแต่ไม่ท้ายสุด ติดต่อเราโดยแบ่งปันวิธีการอื่นในการแสดงรายการพอร์ตที่เปิดอยู่ใน Linux หรือถามคำถามผ่านแบบฟอร์มตอบกลับด้านล่าง