ในโลกของการบริหารจัดการระบบเครือข่ายและ DevOps การมองเห็นสิ่งที่เกิดขึ้นภายใต้พื้นผิวของระบบปฏิบัติการถือเป็นทักษะที่สำคัญอย่างยิ่ง เมื่อแอปพลิเคชันทำงานผิดปกติ หรือเมื่อสงสัยว่ามีบริการที่ไม่ได้รับอนุญาตกำลังเปิดพอร์ตอยู่ การตรวจสอบสถานะการเชื่อมต่อ (Connection State) และ Socket ที่ใช้งานอยู่นับเป็นขั้นตอนแรกและสำคัญที่สุดในการวินิจฉัยปัญหาเหล่านี้
เจาะลึกรายละเอียดและประเด็นสำคัญ
เครื่องมืออย่าง netstat และ ss คือเสาหลักในการตรวจสอบสถานะเหล่านี้ โดยพื้นฐานแล้วทั้งสองคำสั่งมีวัตถุประสงค์เดียวกันคือการแสดงข้อมูลเกี่ยวกับ Network Connections, Routing Tables, และ Socket ต่างๆ อย่างไรก็ตาม ในระบบปฏิบัติการ Linux สมัยใหม่ คำสั่ง ss (Socket Statistics) ได้รับการพัฒนาให้เร็วกว่าและมีความสามารถในการดึงข้อมูลที่ละเอียดกว่า netstat ทำให้มันกลายเป็นเครื่องมือที่แนะนำสำหรับการใช้งานในงาน DevOps ระดับสูง
เมื่อเราใช้คำสั่งเหล่านี้ เราไม่ได้เพียงแค่ดูว่าพอร์ตไหนเปิดอยู่เท่านั้น แต่ยังสามารถระบุได้ว่า “ใคร” (Process ID หรือ PID) เป็นเจ้าของการเชื่อมต่อนั้นๆ ด้วย การใช้ Flag ต่างๆ เช่น -t (TCP), -u (UDP), -l (Listening ports), และที่สำคัญที่สุดคือ -p (Process) จะช่วยให้เราสามารถเจาะลึกถึงต้นตอของปัญหาได้อย่างแม่นยำ ไม่ว่าจะเป็นการหาบริการที่เปิดพอร์ตผิดปกติ หรือการตรวจสอบว่ามีกระบวนการใดกำลังส่งข้อมูลออกภายนอกอย่างต่อเนื่อง
BASH / Shell
# ตรวจสอบสถานะ Socket ทั้งหมด (TCP, UDP) ที่กำลังฟังการเชื่อมต่อ และแสดง Process ID
ss -tulnpa
# หรือใช้ netstat แบบดั้งเดิมเพื่อความเข้ากันได้กับระบบเก่า
netstat -tulnp | grep LISTEN