มอนิเตอร์จำนวนไบต์ที่ถ่ายโอนไปยัง / จากที่อยู่ IP บนพอร์ต


19

ใครสามารถแนะนำเครื่องมือบรรทัดคำสั่ง linux เพื่อตรวจสอบจำนวนไบต์ที่ถ่ายโอนระหว่างเซิร์ฟเวอร์ท้องถิ่นและที่อยู่ IP ที่ระบุ / พอร์ต

คำสั่ง tcpdump ที่เทียบเท่าจะเป็น:

tcpdump -s 0 -i any -w mycapture.trc port 80 host google.com

ผลลัพธ์ใด:

46 packets captured
131 packets received by filter
0 packets dropped by kernel

ฉันต้องการสิ่งที่คล้ายกันที่เอาท์พุท:

54 bytes out, 176 bytes in

ฉันต้องการให้ RHEL ทำงานและเป็นอิสระ / โอเพนซอร์ส มันจะดีถ้ามีเครื่องมือที่มีอยู่ซึ่งฉันเพิ่งหายไปด้วย!

คำตอบ:


14

คุณสามารถใช้ iptables หากคุณยังไม่ได้ใช้งานคุณสามารถใช้การกำหนดค่ายอมรับแบบเปิด แต่มีกฎในการนับ

ตัวอย่างเช่นใน RHEL /etc/sysconfig/iptablesไฟล์ของคุณอาจมีลักษณะดังนี้:

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD -j INPUT
-A INPUT -s 10.10.1.1 -p tcp -m tcp --sport 80 -j ACCEPT
-A OUTPUT -d 10.10.1.1 -p tcp -m tcp --dport 80 -j ACCEPT

โดยที่ 10.10.1.1:80 เป็นโฮสต์: พอร์ตที่คุณต้องการนับการรับส่งข้อมูล (คุณไม่สามารถใช้ชื่อโฮสต์) จากนั้นคุณสามารถตรวจสอบปริมาณข้อมูลด้วยคำสั่งiptables -nvxLเป็นรูท

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

Chain INPUT (policy ACCEPT 7133268 packets, 1057227727 bytes)
    pkts      bytes target     prot opt in     out     source               destination     
 7133268 1057227727 ACCEPT     tcp  --  *      *       10.10.1.1            0.0.0.0/0              tcp spt:80


Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
    pkts      bytes target     prot opt in     out     source               destination     
       0          0 INPUT      all  --  *      *       0.0.0.0/0            0.0.0.0/0       

Chain OUTPUT (policy ACCEPT 7133268 packets, 1057227727 bytes)
    pkts      bytes target     prot opt in     out     source               destination     
 7133268 1057227727 ACCEPT     tcp  --  *      *       0.0.0.0/0            10.10.1.1              tcp dpt:80

7
นอกจากนี้ยังเป็นกฎหมายอย่างสมบูรณ์ที่จะมีกฎโดยไม่มีเป้าหมายเพียงเพื่อวัตถุประสงค์ในการนับเช่น iptables -A INPUT -d 1.2.3.4 -p tcp --dport 3456 มันจะไม่ทำอะไรกับทราฟฟิกเนื่องจากไม่มีอาร์กิวเมนต์ "-j" แต่แพ็คเก็ตที่ตรงกันแต่ละอันจะชนจำนวน
MadHatter สนับสนุนโมนิก้า

9

ฉันกำลังจะแนะนำ wireshark (เพราะมันมีคุณสมบัติ ' การสนทนา ' หลายอย่าง) แต่มันไม่ใช่เครื่องมือบรรทัดคำสั่ง คุณสามารถลองtshark ได้ซึ่งเป็นเครื่องมือวิเคราะห์บรรทัดคำสั่งที่ใกล้เคียงกับ wireshark ผลลัพธ์ควรมี (ค่อนข้าง) สิ่งที่คุณกำลังมองหา (ตัวอย่างด้านล่าง):

tshark -R "ip.addr == 10.2.3.67" -z conv,ip -p -f "tcp port 22"

ผลลัพธ์:

                                     |       <-      | |       ->      | |     Total     |
                                     | Frames  Bytes | | Frames  Bytes | | Frames  Bytes |
10.2.3.23           <-> 10.2.3.67        42     15341      35      4890      77     20231

7

นอกจากนี้ยังมีเครื่องมือที่เรียกว่า 'iftop' ซึ่งแสดงการใช้แบนด์วิดท์บนอินเตอร์เฟสโดยโฮสต์ ฉันคิดว่า iftop สามารถทำสิ่งที่คุณอธิบายได้ แต่โดยปกติแล้วอินเทอร์เฟซของมันจะเป็น 'top'

สำหรับตัวอย่างของคุณฉันคิดว่าคุณสามารถสร้างไฟล์ปรับแต่งเพื่อให้รหัสตัวกรองของคุณ

ดังนั้นนี่คือรหัสตัวกรองของฉันในไฟล์ปรับแต่งของฉัน

$ cat /tmp/conf
filter-code: port http and host google.com

จากนั้นฉันรันสิ่งต่อไปนี้เพื่อดูการดูแลเครือข่าย

$ sudo iftop -c /tmp/conf

ไม่แน่ใจว่านี่เป็นตัวเลือกที่ดีที่สุดหรือไม่ แต่ก็เป็นวิธีหนึ่งในการบรรลุสิ่งที่คุณต้องการ HTH


3
นอกจากนี้คุณยังสามารถระบุตัวกรองในบรรทัดคำสั่งโดยไม่ต้องใช้ไฟล์ปรับแต่ง:iftop -f 'port 80 and host google.com'
gioele

ต้องการแสดงผลเป็นไบต์ทั้งหมดที่โอนย้ายไม่ใช่แบนด์วิดท์สามารถiftopแสดงได้หรือไม่
arainone

3

คุณยังสามารถลอง "iptraf" ที่เบาและเรียบง่าย มันสามารถกรองตามพอร์ตและให้ข้อมูลระดับสูงไม่มีข้อมูลน้ำหนักบรรทุก ฯลฯ

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