Skip to main content

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

[ Command Prompt ] คำสั่ง cmd พื้นฐาน #1 (เมษายน 2025)

[ Command Prompt ] คำสั่ง cmd พื้นฐาน #1 (เมษายน 2025)
Anonim

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

ใช้ Netstat

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

เมื่อต้องการเรียกใช้ netstat ให้เปิดหน้าต่างเทอร์มินัล หากคุณไม่คุ้นเคยกับ Terminal ก็พบได้ที่ /Applications/Utilities/Terminal.app ชนิด netstat และกด Enter เพื่อรันคำสั่ง

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

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

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

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

netstat -AabdgiLlmnqrRsSvWx -c คิว -f address_family -ผม อินเตอร์เฟซ -p โปรโตคอล -w รอ

Netstat บน macOS ไม่ทำงานเช่นเดียวกับ netstat บน Windows หรือ netstat บน Linux การใช้ธงหรือไวยากรณ์จากการใช้งานของ netstat อาจไม่ส่งผลต่อพฤติกรรมที่คาดหมาย

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

-r แสดงตารางเส้นทางแสดงให้เห็นว่าแพ็กเก็ตถูกส่งผ่านเครือข่ายอย่างไร

-p โปรโตคอล แสดงการเข้าชมที่เกี่ยวข้องกับโปรโตคอลเครือข่ายเฉพาะ ในขณะที่รายการโปรโตคอลเต็มรูปแบบสามารถพบได้ที่ / etc / โปรโตคอลสิ่งสำคัญคือ udp และ tcp

-v เพิ่มคำฟุ่มเฟื่อยโดยเฉพาะการเพิ่มคอลัมน์ที่แสดง ID กระบวนการ (PID) ที่เกี่ยวข้องกับแต่ละพอร์ตที่เปิดอยู่

-ผม อินเตอร์เฟซ ให้ข้อมูลแพคเก็ตสำหรับอินเทอร์เฟซที่ระบุ อินเทอร์เฟซที่ใช้ได้ทั้งหมดสามารถดูได้โดยใช้แถบ -i แต่ en0 เป็นส่วนติดต่อเครือข่ายขาออกเริ่มต้น หมายเหตุตัวพิมพ์เล็ก

-G แสดงข้อมูลที่เกี่ยวข้องกับการเชื่อมต่อแบบหลายผู้รับ

-s แสดงสถิติเครือข่ายสำหรับโปรโตคอลทั้งหมดไม่ว่าจะมีการใช้งานอยู่หรือไม่ก็ตาม

-n ยับยั้งป้ายกำกับของที่อยู่ระยะไกลที่มีชื่อ นี้ช่วยเพิ่มความเร็วในการผลิตของ netstat ในขณะที่เสียสละข้อมูลที่ จำกัด เท่านั้น

-a รวมพอร์ตเซิร์ฟเวอร์ในเอาต์พุตของ netstat ซึ่งไม่รวมอยู่ในผลลัพธ์เริ่มต้น

ตัวอย่าง Netstat

เพื่อนำความเข้าใจของเราไปปฏิบัติลองดูตัวอย่าง netstat บาง

netstat -apv TCP

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

netstat -a | grep -i "listen"

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

การเข้าถึง netstat ผ่าน Network Utility

นอกเหนือจากการใช้งานที่มีคุณสมบัติครบถ้วนผ่านอินเทอร์เฟซบรรทัดคำสั่ง Terminal ฟังก์ชันการทำงานของ netstat บางส่วนสามารถเข้าถึงได้จาก App Network Utility แอ็พพลิเคชัน macOS ในตัวนี้สามารถดูได้ที่ / Applications / Utilities / Network Utility.app เปิดแอปพลิเคชันและคลิกที่ netstat เพื่อเข้าถึงอินเทอร์เฟซแบบกราฟิกสำหรับ netstat

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

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

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

เสริม netstat กับ lsof

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

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

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

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

-ผม แสดงการเชื่อมต่อเครือข่ายแบบเปิดทั้งหมดและชื่อของกระบวนการที่ใช้การเชื่อมต่อ เพิ่ม 4, เช่นเดียวกับค่ะ -i4จะแสดงเฉพาะการเชื่อมต่อ IPv4 เท่านั้น เพิ่ม 6 แทน (-i6) จะแสดงเฉพาะการเชื่อมต่อ IPv6 เท่านั้น

-ผม ธงยังสามารถขยายเพื่อระบุรายละเอียดเพิ่มเติม -iTCP หรือ -iUDP จะคืนค่าการเชื่อมต่อ TCP และ UDP เท่านั้น -iTCP: 25 จะคืนค่าการเชื่อมต่อ TCP ที่พอร์ต 25 เท่านั้นคุณสามารถระบุช่วงของพอร์ตได้โดยใช้เส้นประเช่นเดียวกับ -iTCP: 25-50

การใช้ [email protected] จะส่งคืนเฉพาะการเชื่อมต่อไปยังที่อยู่ IPv4 1.2.3.4 เท่านั้น ที่อยู่ IPv6 สามารถระบุได้ในแบบเดียวกัน นอกจากนี้ยังสามารถใช้ @ precursor เพื่อระบุชื่อโฮสต์ได้เช่นเดียวกัน แต่ทั้งที่อยู่ IP และชื่อโฮสต์ระยะไกลไม่สามารถใช้งานพร้อมกันได้

-s โดยปกติจะบังคับให้ lsof แสดงขนาดไฟล์ แต่เมื่อจับคู่กับ -ผม ธง, -s ทำงานแตกต่างกัน แต่จะช่วยให้ผู้ใช้สามารถระบุโปรโตคอลและสถานะสำหรับคำสั่งที่จะส่งคืน

-p จำกัด lsof ให้กับ ID กระบวนการเฉพาะ (PID) PID จำนวนมากสามารถตั้งค่าได้โดยใช้ commons เช่น -p 123,456,789 รหัสกระบวนการสามารถยกเว้นด้วย ^ เช่นเดียวกับใน 123, ^ 456 ซึ่งจะยกเว้น PID 456 โดยเฉพาะ

-P ปิดใช้งานการแปลงหมายเลขพอร์ตเป็นชื่อพอร์ตเร่งความเร็วเอาต์พุต

-n ปิดใช้งานการแปลงหมายเลขเครือข่ายเป็นชื่อโฮสต์ เมื่อใช้กับ -P ข้างต้นมันอย่างมีนัยสำคัญสามารถเร่งการส่งออกของ lsof

-ยู ผู้ใช้งาน ส่งคืนคำสั่งที่เป็นของผู้ใช้ที่มีชื่อเท่านั้น

ตัวอย่าง lsof

เช่นเดียวกับ netstat การดูตัวอย่างของ 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)

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

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

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

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