วิธีใช้คำสั่ง Netstat บน Mac

คำสั่ง netstat ใน macOS เป็นคำสั่ง Terminal ที่แสดงข้อมูลโดยละเอียดเกี่ยวกับการสื่อสารบนเครือข่ายของคอมพิวเตอร์ของคุณ การสื่อสารผ่านเครือข่ายรวมถึงวิธีที่ Mac ของคุณพูดคุยกับโลกภายนอกในทุกพอร์ตและแอปพลิเคชันทั้งหมด การพิชิต netstat สามารถช่วยให้คุณเข้าใจการเชื่อมต่อคอมพิวเตอร์ของคุณและสาเหตุ


กำลังเรียกใช้ Netstat

คำสั่ง netstat พร้อมใช้งานบนเครื่อง Mac โดยค่าเริ่มต้น คุณไม่จำเป็นต้องดาวน์โหลดหรือติดตั้ง

ในการเรียกใช้ netstat ให้เปิดหน้าต่าง Terminal ที่ การใช้งาน > ยูทิลิตี้ > สถานีปลายทาง. ชนิด netstat และกด เข้าสู่ เพื่อรันคำสั่ง

 รูปภาพ wakila / Getty 

ข้อความจำนวนมากจะเริ่มเลื่อนบนหน้าจอของคุณ หากคุณไม่ใช้แฟล็กที่มีอยู่ (ดูด้านล่าง) netstat จะรายงานการเชื่อมต่อเครือข่ายที่ใช้งานอยู่ทั้งหมดบน Mac ของคุณ เมื่อพิจารณาถึงจำนวนฟังก์ชันที่อุปกรณ์เครือข่ายสมัยใหม่ทำงานคุณสามารถคาดหวังว่ารายการจะมีความยาว รายงานมาตรฐานสามารถทำงานได้ดีกว่า 1000 บรรทัด

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


Netstat ธงและตัวเลือก

หากต้องการดูตัวเลือกทั้งหมดของ netstat ให้พิมพ์ man netstat ที่พรอมต์คำสั่งเพื่อเปิดเผย man page ของ netstat คุณยังสามารถดู man page ของ netstat เวอร์ชันออนไลน์ได้อีกด้วย

"Man" ย่อมาจาก "manual"

วากยสัมพันธ์

ในการเพิ่มแฟล็กและอ็อพชันให้กับ netstat ให้ใช้ไวยากรณ์ต่อไปนี้:

netstat [-AabdgiLlmnqrRsSvWx] [-c คิว] [-f address_family] [-I อินเทอร์เฟซ] [-p โปรโตคอล] [-w รอ]

netstat บน macOS ไม่ทำงานในลักษณะเดียวกับ netstat บน Windows และ Linux การใช้แฟล็กหรือไวยากรณ์จากการนำ netstat ไปใช้อาจไม่ส่งผลให้เกิดลักษณะการทำงานที่คาดไว้

หากการจดชวเลขข้างต้นไม่สามารถเข้าใจได้โดยสิ้นเชิงให้เรียนรู้วิธีอ่านไวยากรณ์คำสั่ง

ธงที่มีประโยชน์

นี่คือแฟล็กที่ใช้บ่อยที่สุด:

  • -a รวมพอร์ตเซิร์ฟเวอร์ในเอาต์พุตของ netstat ซึ่งไม่รวมอยู่ในเอาต์พุตเริ่มต้น
  • -g แสดงข้อมูลที่เกี่ยวข้องกับการเชื่อมต่อแบบหลายผู้รับ
  • -I อินเทอร์เฟซจัดเตรียมข้อมูลแพ็คเก็ตสำหรับอินเทอร์เฟซที่ระบุ สามารถดูอินเทอร์เฟซที่มีอยู่ทั้งหมดได้ด้วยไฟล์ -i ธง แต่ en0 โดยทั่วไปจะเป็นอินเทอร์เฟซเครือข่ายขาออกเริ่มต้น (สังเกตอักษรตัวพิมพ์เล็ก)
  • -n ระงับป้ายกำกับของที่อยู่ระยะไกลที่มีชื่อ สิ่งนี้จะเพิ่มความเร็วเอาต์พุตของ netstat อย่างมากในขณะที่เสียสละเฉพาะข้อมูลที่ จำกัด
  • -p โปรโตคอลจะแสดงรายการทราฟฟิกที่เกี่ยวข้องกับโปรโตคอลเครือข่ายเฉพาะ ดูรายการโปรโตคอลทั้งหมดได้ที่ / etc / โปรโตคอลแต่สิ่งที่สำคัญที่สุดคือ UDP TCP.
  • -r แสดงตารางเส้นทางซึ่งแสดงว่าแพ็กเก็ตถูกส่งไปรอบ ๆ เครือข่ายอย่างไร
  • -s แสดงสถิติเครือข่ายสำหรับโปรโตคอลทั้งหมดไม่ว่าจะมีการใช้งานอยู่หรือไม่ก็ตาม
  • -v เพิ่มความละเอียดโดยเฉพาะโดยการเพิ่มคอลัมน์ที่แสดง ID กระบวนการ (PID) ที่เชื่อมโยงกับพอร์ตที่เปิดแต่ละพอร์ต

ตัวอย่าง Netstat

ลองพิจารณาตัวอย่างเหล่านี้:

netstat -apv TCP

คำสั่งนี้ส่งคืนเฉพาะการเชื่อมต่อ TCP บน Mac ของคุณรวมถึงพอร์ตที่เปิดอยู่และพอร์ตที่ใช้งานอยู่ นอกจากนี้ยังใช้เอาต์พุตแบบละเอียดแสดงรายการ PID ที่เกี่ยวข้องกับการเชื่อมต่อแต่ละรายการ

netstat -a | grep -i "ฟัง"

การรวมกันของ netstat grep เผยพอร์ตที่เปิด - พอร์ตที่กำลังรับฟังข้อความ อักขระไปป์ | ส่งเอาต์พุตของคำสั่งหนึ่งไปยังคำสั่งอื่น ที่นี่ผลลัพธ์ของ netstat ท่อถึง grepโดยให้คุณค้นหาคำหลัก "ฟัง" และค้นหาผลลัพธ์


การเข้าถึง Netstat ผ่านยูทิลิตี้เครือข่าย

คุณยังสามารถเข้าถึงไฟล์ netstat ของ การทำงานผ่านแอพ Network Utility ที่ ระบบ > ห้องสมุด > CoreServices > การใช้งาน.

คลิก netstat แท็บเพื่อเข้าถึงอินเทอร์เฟซแบบกราฟิก

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

คำสั่ง netstat สำหรับปุ่มตัวเลือกแต่ละปุ่มมีดังนี้:

  • แสดงข้อมูลตารางเส้นทาง ทำงาน netstat -r.
  • แสดงสถิติเครือข่ายที่ครอบคลุมสำหรับแต่ละโปรโตคอล ทำงาน netstat -s.
  • แสดงข้อมูลมัลติคาสต์ ทำงาน netstat -g.
  • แสดงสถานะของการเชื่อมต่อซ็อกเก็ตปัจจุบันทั้งหมด ทำงาน netstat.


การเสริม Netstat ด้วย Lsof

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

Lsof แสดงไฟล์ใด ๆ ที่เปิดอยู่ในแอพใด ๆ คุณยังสามารถใช้เพื่อตรวจสอบพอร์ตที่เปิดที่เชื่อมโยงกับแอป วิ่ง lsof -iและคุณจะเห็นรายการแอปพลิเคชันทั้งหมดที่สื่อสารผ่านอินเทอร์เน็ต โดยทั่วไปจะเป็นเป้าหมายเมื่อใช้ netstat บนเครื่อง Windows อย่างไรก็ตามวิธีเดียวที่มีความหมายในการทำงานนั้นให้สำเร็จบน macOS ไม่ใช่ด้วย netstat แต่ใช้ lsof

Lsof Flags และตัวเลือก

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

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

  • -i แสดงการเชื่อมต่อเครือข่ายแบบเปิดทั้งหมดและชื่อของกระบวนการที่ใช้การเชื่อมต่อ การเพิ่มไฟล์ 4เช่นเดียวกับใน -i4จะแสดงเฉพาะการเชื่อมต่อ IPv4 การเพิ่มไฟล์ 6 แทน (-i6) จะแสดงเฉพาะการเชื่อมต่อ IPv6
  • แพทเทิร์น -i แฟล็กยังสามารถขยายเพื่อระบุรายละเอียดเพิ่มเติม -iTCP หรือ -iUDP จะส่งคืนเฉพาะการเชื่อมต่อ TCP และ UDP -iTCP: 25 จะส่งคืนเฉพาะการเชื่อมต่อ TCP บนพอร์ต 25 ช่วงของพอร์ตสามารถระบุได้ด้วยเครื่องหมายขีดกลางเนื่องจาก -iTCP: 25-50
  • การใช้ [email protected] จะส่งคืนเฉพาะการเชื่อมต่อไปยังที่อยู่ IPv4 1.2.3.4 ที่อยู่ IPv6 สามารถระบุได้ในลักษณะเดียวกัน นอกจากนี้ยังสามารถใช้ @ precursor เพื่อระบุชื่อโฮสต์ในลักษณะเดียวกัน แต่ไม่สามารถใช้ทั้งที่อยู่ IP ระยะไกลและชื่อโฮสต์พร้อมกันได้
  • -s โดยทั่วไปจะบังคับให้ lsof แสดงขนาดไฟล์ แต่เมื่อจับคู่กับ -i ธง, -s ทำงานแตกต่างกัน แต่จะอนุญาตให้ผู้ใช้ระบุโปรโตคอลและสถานะเพื่อให้คำสั่งส่งคืน
  • -p จำกัด lsof เฉพาะ ID กระบวนการ (PID) สามารถตั้งค่า PID หลายตัวได้โดยใช้คอมมอนส์เช่น -p 123,456,789 นอกจากนี้ยังสามารถยกเว้นรหัสกระบวนการด้วย ^ เช่น 123, ^ 456 ซึ่งจะยกเว้น PID 456 โดยเฉพาะ
  • -P ปิดใช้งานการแปลงหมายเลขพอร์ตเป็นชื่อพอร์ตเร่งความเร็วเอาต์พุต
  • -n ปิดใช้งานการแปลงหมายเลขเครือข่ายเป็นชื่อโฮสต์ เมื่อใช้กับ -P ด้านบนสามารถเร่งความเร็วเอาต์พุตของ lsof ได้อย่างมาก
  • -u ผู้ใช้ส่งคืนคำสั่งที่เป็นของผู้ใช้ที่ระบุชื่อเท่านั้น

ตัวอย่าง lsof

วิธีใช้ lsof มีดังนี้

lsof -nP [email protected]: 513

คำสั่งที่ดูซับซ้อนนี้แสดงรายการการเชื่อมต่อ TCP ทั้งหมดที่มีชื่อโฮสต์ lsof.itap และพอร์ต 513. นอกจากนี้ยังรัน lsof โดยไม่ต้องเชื่อมต่อชื่อกับที่อยู่ IP และพอร์ตทำให้คำสั่งทำงานเร็วขึ้นอย่างเห็นได้ชัด

lsof -iTCP -sTCP: LISTEN

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

sudo lsof -i -u ^ $ (whoami)

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

คาเร็ต (^) สำหรับการปฏิเสธ ผลลัพธ์จะไม่รวมสิ่งที่ตรงกับข้อความหลังเครื่องหมายรูปหมวก คุณสามารถรับชื่อของผู้ใช้ที่เข้าสู่ระบบในปัจจุบันได้โดยเรียกใช้ whoami ภายใน lsof คำสั่งล้อมรอบด้วย $ () ที่จะ lsof เข้าถึงผลลัพธ์เป็นข้อความ การทำงานด้วย sudo ช่วยให้คุณเห็นงานที่คุณไม่ได้เป็นเจ้าของ การรันคำสั่งนี้โดยไม่มี sudo ส่งคืนรายการว่าง

คำสั่งเครือข่ายอื่น ๆ

คำสั่งเครือข่ายเทอร์มินัลอื่น ๆ ที่อาจสนใจในการตรวจสอบเครือข่ายของคุณ ได้แก่ arp, ping และ ipconfig