เคล็ดลับและเทคนิค netstat


13

ในหลอดเลือดดำเดียวกันกับคำถาม "บรรทัดคำสั่งที่เป็นประโยชน์" (สำหรับWindows , LinuxและMac ) ฉันคิดว่ามันจะมีประโยชน์หากมี "วิธีการใช้ยูทิลิตี้ x" ที่เป็นประโยชน์ หน้าคนบอกคุณว่าพารามิเตอร์ทำอะไร แต่ไม่จำเป็นว่าทำไมคุณถึงต้องใช้มันผลที่ได้คืออะไรสิ่งที่มีประโยชน์คือคำสั่งที่คุณไม่เคยรู้มาก่อนหากไม่มีการทดลองอย่างกว้างขวางหรือวิธีการได้รับคำตอบที่คุณต้องการ

ผมอยากจะรู้เกี่ยวกับnetstat ดูเหมือนว่าฉันควรจะสามารถคิดได้ว่ากระบวนการใดที่ใช้แบนด์วิดท์และแน่นอนว่าระบบใช้แบนด์วิดท์รวดเร็วเพียงใด นอกจากนี้ยังมีประโยชน์สำหรับการตรวจจับการเชื่อมต่อที่ไม่ต้องการ (น่าจะเป็น virii) และให้ข้อมูลการกำหนดเส้นทางทุกประเภท (ที่ฉันต้องเล่นเมื่อพยายามทำให้ Sharp Zaurus PDA ใช้ TCP / IP ผ่าน USB) กล่าวอีกนัยหนึ่งคือ ฟังดูเหมือนเหมืองทองคำและฉันหวังว่าพวกคุณบางคนจะแบ่งปันข้อมูลนักเก็ตที่คุณพบ

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

คำตอบ:


4

แสดงพอร์ต TCP / UDP สำหรับการฟังในเครื่องและกระบวนการที่เป็นของ:

sudo netstat -tulpn

4
ดูเหมือนว่า Mac จะเทียบเท่ากับ "sudo lsof -i -n -P | grep LISTEN" (Ommitting แฟล็ก -n และ -P จะทำให้ค้นหาชื่อโฮสต์และพอร์ต)
Clinton Blackmore

1
คลินตัน - นั่นคือคำสั่งที่ยอดเยี่ยมอย่างหนึ่ง
SpacemanSpiff

3

ตารางเส้นทาง Netstat

[สิ่งนี้ได้รับการทดสอบบน Mac OS X 10.5.7 ฉันสงสัยว่าผลลัพธ์จะใกล้เคียงกันในทุกแพลตฟอร์มเนื่องจากมีการระบุให้ทำงานกับ Solaris]

netstat -r 

จะให้ตารางเส้นทาง

netstat -nr

เหมือนกัน แต่จะให้ IP ดิบแก่คุณแทนที่จะค้นหาชื่อเครื่อง ผลลัพธ์ของมันมีลักษณะเช่นนี้ (อีกต่อไปเท่านั้น):

Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            192.168.40.250     UGSc       19        1    en1
127                127.0.0.1          UCS         0        0    lo0
127.0.0.1          127.0.0.1          UH          1     3140    lo0
169.254            link#5             UCS         0        0    en1
169.254.33.92      127.0.0.1          UHS         0        0    lo0
192.168.40         link#5             UCS        11        0    en1
192.168.40.1       0:17:f2:ca:a0:94   UHLW        0        0    en1   1150
...

Internet6:
Destination                             Gateway                         Flags      Netif Expire
::1                                     link#1                          UHL         lo0
fe80::%lo0/64                           fe80::1%lo0                     Uc          lo0
fe80::1%lo0                             link#1                          UHL         lo0
fe80::%en0/64                           link#4                          UC          en0
...
ff02::/32                               link#7                          UC          en2
ff02::/32                               link#8                          UC          en3

คอลัมน์:

ปลายทางและเกตเวย์: ปลายทางคือที่อยู่ (หรือช่วงที่อยู่) ที่เราอาจต้องการส่งข้อมูลไปให้ ข้อมูลทั้งหมดที่ส่งไปยังปลายทางนั้นจะไปที่เกตเวย์ที่เกี่ยวข้อง เกตเวย์รู้ตำแหน่งที่จะส่งข้อมูลไปยัง 'hop' ถัดไปในการเดินทาง หากเราต้องการส่งข้อมูลไปยังปลายทางที่ไม่มีรายการในตารางเส้นทางเราจะผ่านเกตเวย์เริ่มต้น

ธง: หน้า man / info แสดงรายการธงทั้งหมด นี่คือความหมายของการตั้งค่าในเกตเวย์เริ่มต้นของฉัน:

UGSc
U       - RTF_UP           Route usable
 G      - RTF_GATEWAY      Destination requires forwarding by intermediary
  S     - RTF_STATIC       Manually added
   c    - RTF_PRCLONING    Protocol-specified generate new routes on use

มันอยากรู้ว่ามันอ้างว่าจะถูกเพิ่มด้วยตนเองเมื่อมันมาถึง DHCP

Refs: "ฟิลด์ refcnt ให้จำนวนการใช้งานในปัจจุบันของเส้นทางโดยปกติโปรโตคอลที่มุ่งเน้นการเชื่อมต่อจะยึดเส้นทางเดียวในช่วงระยะเวลาของการเชื่อมต่อในขณะที่โปรโตคอลไร้สายจะได้รับเส้นทางขณะที่ส่งไปยังปลายทางเดียวกัน" (หน้าคน)

การใช้: "ฟิลด์ใช้ระบุจำนวนแพ็คเก็ตที่ส่งโดยใช้เส้นทางนั้น"

Netif: "รายการอินเตอร์เฟสระบุว่าอินเตอร์เฟสเครือข่ายที่ใช้สำหรับเส้นทางนั้น"

บน Mac ของฉัน

  • lo0 เป็นอินเตอร์เฟสลูปแบ็ค
  • en0 คืออีเธอร์เน็ต
  • en1 เป็นแบบไร้สาย
  • en2 และ en3 ถูกใช้โดยเครื่องเสมือน

หมดอายุ:จาก manpage สำหรับ netstat รุ่นอื่น: "แสดงเวลา (เป็นนาที) ที่เหลือก่อนที่เส้นทางจะหมดอายุ"



2

ใน windows:

c:>netstat -a | find /c "TCP"
68

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


OS X 10.5.7 อุปกรณ์: netstat -a | grep -c tcp
Clinton Blackmore

2

อัตราการส่ง / รับ

บน Mac [OS X 10.5.7]:

netstat -i -w 10

[ดูคำตอบของ chuckสำหรับหมายเหตุเกี่ยวกับการใช้งานบน Solaris และ Linux]

ผลลัพธ์ดูเหมือนว่า:

            input        (Total)           output
   packets  errs      bytes    packets  errs      bytes colls
       794     0    1166796        763     0      50358     0
       789     0    1167773        765     0      52542     0
       792     0    1166548        765     0      51174     0
       796     0    1167262        598     0      40152     0
       929     0    1278561        846     0      65625     0
       563     0     815570        530     0      36828     0
        32     0       4360          1     0        774     0
         9     0        705          0     0        684     0
         9     0        631          0     0          0     0

นี่แสดงจำนวนของแพ็คเก็ตและไบต์ที่ถูกถ่ายโอนในช่วงเวลาที่กำหนด (ในตัวอย่างนี้ 10 วินาที) ฉันเชื่อมต่อกับ youtube และดาวน์โหลดเกิน 1 MB ทุกช่วงเวลาจนกว่าฉันจะปิดแท็บเบราว์เซอร์และอัตราต่ำสุด

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

โปรดทราบว่าคำสั่งด้านบนจะแสดงปริมาณงานทั้งหมดในส่วนต่อประสานทั้งหมด หากต้องการกำหนดขอบเขตให้กับอินเทอร์เฟซเฉพาะ (WiFi ในตัวอย่างนี้) ให้ใช้การ-Iตั้งค่าสถานะดังนี้:

netstat -I en1 -w 10

1

ของ windows:

Netstat -n
(Show active TCP connections, don't slow down trying to do name resolution)

Proto  Local Address          Foreign Address        State
TCP    192.168.1.38:4853    69.59.196.212:80       ESTABLISHED

แสดงการเชื่อมต่อ TCP ที่ใช้งานอยู่ แต่ไม่มีกิจกรรม UDP

Netstat -an
  (Show all connections, don't slow down trying to do name resolution)

Proto  Local Address          Foreign Address        State
TCP    0.0.0.0:80             0.0.0.0:0              LISTENING
TCP    192.168.1.38:4853    69.59.196.212:80       ESTABLISHED

แสดงการเชื่อมต่อ TCP ที่ใช้งานอยู่ทั้งหมดรวมถึงการฟังการเชื่อมต่อ TCP และ UDP ไม่แสดงกิจกรรม UDP ขาออกที่นี่


ฉันจะเพิ่มความคิดเห็นในตอนนี้ แต่เมื่อฉันมีตัวแทนเพียงพอฉันจะแก้ไขคำตอบ netstat บน Mac OS X 10.5.7 ที่เทียบเท่า - เพิ่ม -p tcp ดังนั้นจึงถูก จำกัด อยู่ที่ tcp protocoal กล่าวคือ netstat -p tcp -nหรือnetstat -p tcp -an
Clinton Blackmore

อีกสองสวิตช์ที่มีประโยชน์บน Windows คือ -o (แสดง PID ที่เป็นเจ้าของของแต่ละซ็อกเก็ต) และ -b (แสดงชื่อกระบวนการที่เป็นเจ้าของของแต่ละซ็อกเก็ต) มีประโยชน์อย่างยิ่งเมื่อตรวจสอบเครื่องที่คุณสงสัยว่าถูกบุกรุก
Murali Suriar

-nt netstat จะเป็นสิ่งเดียวกัน (ตัวเลขและ TCP เท่านั้น)
Jauder โฮ


1

Windows 7 (อาจเป็นไปได้ตั้งแต่ก่อนหน้านี้):

netstat -ano

แสดงรายการเซสชันที่ใช้งานด้วย PID ที่เกี่ยวข้อง

Active Connections

  Proto  Local Address          Foreign Address        State           PID
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       776
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:554            0.0.0.0:0              LISTENING       1724

หรือเพื่อบันทึกขั้นตอน

netstat -anb

(จากพรอมต์ CMD ที่ยกระดับ) ให้ชื่อกระบวนการ

Active Connections

  Proto  Local Address          Foreign Address        State
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING
  RpcSs
 [svchost.exe]
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING
 Can not obtain ownership information
  TCP    0.0.0.0:554            0.0.0.0:0              LISTENING
 [wmpnetwk.exe]
  TCP    0.0.0.0:2048           0.0.0.0:0              LISTENING

1

ฉันแน่ใจว่าฉันกำลัง reinventing ล้อ แต่นี่เป็นสคริปต์ Perl ง่าย ๆในการเรียกใช้ netstat และเรียงลำดับผลลัพธ์เพื่อให้ IP ที่เชื่อมต่อส่วนใหญ่ในปัจจุบันออกมาด้านบน โปรแกรมนี้ใช้ดีที่สุดกับโปรแกรม 'นาฬิกา' สำหรับการอัพเดตในช่วงเวลา 2 วินาที

อัปเดต: เขียนครั้งสำคัญ 2013-02-11 เพื่อกำจัดปัญหามากมายและแสดงชื่อโฮสต์

ตัวอย่างผลลัพธ์:

Distant inbound connections: 2
   85.93.216.17:772               <-- 78.141.139.10       :    1        ip-78-141-139-10.dyn.luxdsl.pt.lu     1 x ESTABLISHED
   80.90.47.155:443               <-- 78.141.139.10       :    1        ip-78-141-139-10.dyn.luxdsl.pt.lu     1 x ESTABLISHED
Distant outbound connections: 3
   80.90.63.61                    --> 80.90.63.48:25      :    2        smtp.m-plify.net                      2 x TIME_WAIT
   85.93.216.17                   --> 85.93.216.18:772    :    1        maya.m-plify.net                      1 x ESTABLISHED
Looping connections: 57 (10 duplicates)
   127.0.0.1                      --> 127.0.0.1:9355      :   20                                              1 x ESTABLISHED, 8 x TIME_WAIT, 11 x CLOSE_WAIT
   127.0.0.1                      --> 127.0.0.1:4713      :   10                                             10 x CLOSE_WAIT
   127.0.0.1                      --> 127.0.0.1:9353      :    9                                              4 x TIME_WAIT, 5 x CLOSE_WAIT
   127.0.0.1                      --> 127.0.0.1:3306      :    8                                              6 x ESTABLISHED, 1 x TIME_WAIT, 1 x CLOSE_WAIT
   127.0.0.1                      --> 127.0.0.1:5445      :    5                                              1 x ESTABLISHED, 4 x TIME_WAIT
   127.0.0.1                      --> 127.0.0.1:9354      :    2                                              2 x CLOSE_WAIT
   127.0.0.1                      --> 127.0.0.1:7998      :    1                                              1 x TIME_WAIT
   127.0.0.1                      --> 127.0.0.1:3351      :    1                                              1 x ESTABLISHED
   127.0.0.1                      --> 127.0.0.1:32000     :    1                                              1 x ESTABLISHED


0

จากหนังสือ Wicked Cool Shell Script:

สคริปต์ # 90.1 : ทุก ๆ นาที 'คว้าค่า netstats (ผ่าน crontab)

สคริปต์ # 90.2 : วิเคราะห์ netstat ที่รันบันทึกประสิทธิภาพระบุผลลัพธ์และแนวโน้มที่สำคัญ

(รักหนังสือเล่มนี้ - คุ้มค่าที่จะซื้อ!)


0

บน Solaris ผู้คนจำนวนมากคุ้นเคยกับการทำ "netstat -i 1" เพื่อรับจำนวนแพ็คเก็ตที่ทำงานอยู่ ลินุกซ์ netstat มีฟีเจอร์นี้ที่ไร้ประโยชน์เพราะมันแสดงจำนวนดิบและไม่ใช่เดลต้า เพื่อให้ได้ผลลัพธ์ที่คล้ายกันทำ "sar -n DEV 1 0" ลองพิจารณาจริง ๆ "LANG = C sar -n DEV 1 0 | grep interfacename" (sar ใส่เวลากับ AM และ PM ที่จุดเริ่มต้นของบรรทัดในบางตำแหน่งที่ตั้งดังนั้นจึงเป็นนิสัยที่ดีที่สุดในการใช้งานเสมอ "LANG = C sar "ในกรณีที่คุณจะแยกวิเคราะห์มัน)


สำหรับการส่งออกตัวอย่างและการใช้งาน Mac ดูserverfault.com/questions/11289/netstat-tips-and-tricks/...
Clinton Blackmore

0

บนโซลาริส

netstat -k

แสดงข้อมูลสรุปของสถิติต่างๆ มีประโยชน์สำหรับการตรวจสอบข้อผิดพลาด ฯลฯ


0

ตั้งแต่ยังไม่มีใครพูดถึง:

netstat -s 

แสดงสถิติที่มีประโยชน์มากมายโดยโปรโตคอลภายใต้ linux

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.