netstat คืออะไร: วิธีใช้งานคำสั่ง netstat เบื้องต้น

คำสั่ง netstat (ย่อมาจาก Network Statistics) เป็นหนึ่งในเครื่องมือที่สำคัญที่สุดสำหรับผู้ดูแลระบบ นักพัฒนาเครือข่าย หรือผู้ใช้ที่ต้องการตรวจสอบสถานะการเชื่อมต่อของระบบ เครื่องมือนี้สามารถใช้ในการตรวจสอบว่ามีการเชื่อมต่อไปยังปลายทางใดบ้าง ใช้พอร์ตไหน กำลังรอการเชื่อมต่อจากที่ใด หรือกำลังมีการรับส่งข้อมูลระหว่างระบบใดกับระบบใดอยู่

netstat คืออะไร

netstat คือเครื่องมือบรรทัดคำสั่ง (command line) ที่ใช้ตรวจสอบและวิเคราะห์สถานะของเครือข่ายที่เกี่ยวข้องกับเครื่องคอมพิวเตอร์หรือเซิร์ฟเวอร์ สามารถดูสถานะของพอร์ต TCP และ UDP ที่กำลังเปิดอยู่ แสดงการเชื่อมต่อแบบ active รวมถึงสามารถแสดงสถิติของเครือข่าย เช่น จำนวนแพ็กเก็ตที่ส่งหรือรับ ตาราง routing interface และอื่น ๆ

เครื่องมือนี้มีอยู่ในหลายระบบปฏิบัติการ เช่น Windows, Linux, macOS โดยอาจมีลักษณะการใช้งานหรือสวิตช์ที่แตกต่างกันบ้างตามระบบ

การใช้งาน netstat เบื้องต้น

คำสั่งพื้นฐานที่สุดคือการเรียก netstat โดยไม่ใส่พารามิเตอร์เพิ่มเติม ซึ่งจะได้ผลลัพธ์แสดงการเชื่อมต่อ TCP ที่มีอยู่ในขณะนั้น เช่น

netstat

จะได้ผลลัพธ์ที่แสดงประมาณนี้:

Proto Local Address Foreign Address State
TCP 127.0.0.1:5000 127.0.0.1:6000 ESTABLISHED

คำอธิบายแต่ละคอลัมน์:

  • Proto: ประเภทของโปรโตคอล (TCP/UDP)
  • Local Address: IP และพอร์ตของเครื่องท้องถิ่น
  • Foreign Address: IP และพอร์ตของปลายทาง
  • State: สถานะของการเชื่อมต่อ เช่น ESTABLISHED, LISTENING, TIME_WAIT เป็นต้น

3. ตัวเลือกยอดนิยมของ netstat

-a (all)

แสดงทุกการเชื่อมต่อ ทั้งที่ active และที่รอรับการเชื่อมต่อ (listening)

netstat -a

-n (numeric)

แสดงหมายเลข IP แทนชื่อ host เพื่อความรวดเร็ว

netstat -an

-o (เฉพาะ Windows)

แสดงหมายเลข process ID (PID) ที่เกี่ยวข้องกับการเชื่อมต่อ

netstat -ano

-p (Linux/macOS)

แสดงชื่อโปรเซสหรือโปรแกรมที่เปิดพอร์ตนั้น

netstat -ap

-r

แสดงตาราง routing (routing table)

netstat -r

-s

แสดงสถิติการใช้โปรโตคอล เช่น TCP, UDP, ICMP

netstat -s

4. ตัวอย่างการใช้งานในสถานการณ์จริง

ตรวจสอบว่าเครื่องกำลังฟังพอร์ตอะไรอยู่

Windows:

netstat -an | find "LISTEN"

Linux:

netstat -tuln

คำอธิบายสวิตช์:

  • -t = TCP
  • -u = UDP
  • -l = listening
  • -n = แสดง IP แบบตัวเลข

ดูการเชื่อมต่อทั้งหมดพร้อม PID

Windows:

netstat -ano

จากนั้นใช้คำสั่งนี้หาชื่อโปรเซสที่เกี่ยวข้อง:

tasklist | findstr [PID]

Linux:

netstat -tunap

ตรวจสอบว่ามีการเชื่อมต่อไปยัง IP ใดบ้าง

netstat -an | find "ESTABLISHED"

สามารถวิเคราะห์ได้ว่าเครื่องกำลังติดต่อกับเซิร์ฟเวอร์ภายนอกใดอยู่บ้าง

5. คำอธิบายสถานะของ TCP

สถานะที่พบได้บ่อย:

  • LISTENING – โปรแกรมกำลังรอฟังการเชื่อมต่อ
  • ESTABLISHED – การเชื่อมต่อถูกสร้างขึ้นและใช้งานอยู่
  • TIME_WAIT – การเชื่อมต่อถูกปิดแล้วแต่ยังรอเพื่อให้แน่ใจว่าแพ็กเก็ตสุดท้ายถูกส่งแล้ว
  • CLOSE_WAIT – อีกฝั่งปิดการเชื่อมต่อ แต่โปรแกรมเรายังไม่ได้ปิด
  • SYN_SENT – ส่งคำขอเชื่อมต่อไปแล้ว รอการตอบกลับ
  • SYN_RECEIVED – ได้รับการเชื่อมต่อและรอยืนยันกลับ

6. เปรียบเทียบกับเครื่องมือใหม่

ในระบบ Linux ปัจจุบัน netstat มักถูกแทนที่ด้วยคำสั่ง ss ที่ประมวลผลได้เร็วกว่า

ดูพอร์ต TCP/UDP ทั้งหมดที่เปิดอยู่:

ss -tuln

ดูโปรเซสที่เปิดพอร์ต:

ss -tulnp

นอกจากนี้ยังมีคำสั่ง lsof ที่สามารถใช้ร่วมกันได้ เช่น:

lsof -i :80

จะช่วยระบุว่า process ใดเปิดพอร์ต 80 อยู่

7. การใช้ netstat ร่วมกับคำสั่งอื่น

ใน Linux/macOS สามารถใช้ grep เพื่อกรองข้อมูล:

netstat -an | grep 443

ใน Windows ใช้ findstr:

netstat -an | findstr 443

8. การวิเคราะห์ความปลอดภัย

สามารถใช้ netstat วิเคราะห์พฤติกรรมแปลก ๆ เช่น:

  • เครื่องเชื่อมต่อไปยังหลาย IP โดยไม่ทราบสาเหตุ อาจเป็น botnet หรือ malware
  • พอร์ตที่ไม่ควรเปิด (เช่น พอร์ตของ remote desktop ที่ไม่จำเป็น)

การตรวจสอบเหล่านี้สามารถช่วยลดความเสี่ยงจากภัยคุกคามทางไซเบอร์

9. ใช้งานใน PowerShell

netstat สามารถใช้งานได้ใน PowerShell เช่นเดียวกับ Command Prompt และสามารถใช้ร่วมกับ pipeline ได้ เช่น

netstat -an | Where-Object { $_ -match "443" }

10. เขียนสคริปต์เพื่อตรวจสอบพอร์ต

ใน Linux/Bash สามารถเขียนสคริปต์เพื่อตรวจสอบพอร์ตอัตโนมัติได้ เช่น

PORT=22
netstat -tuln | grep ":$PORT " > /dev/null
if [ $? -eq 0 ]; then
echo "Port $PORT is open."
else
echo "Port $PORT is closed."
fi

11. ข้อจำกัดของ netstat

แม้ netstat จะมีประโยชน์มาก แต่ก็มีข้อจำกัด เช่น:

  • ไม่สามารถแสดงผลแบบเรียลไทม์
  • ไม่มีฟีเจอร์วิเคราะห์ลึกเท่าเครื่องมือรุ่นใหม่
  • netstat อาจไม่ได้ติดตั้งใน Linux รุ่นใหม่ ต้องติดตั้งแพ็กเกจ net-tools เพิ่มเติม

12. สรุป

netstat เป็นเครื่องมือพื้นฐานที่ผู้ดูแลระบบควรรู้จัก ใช้สำหรับ:

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

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