จะตรวจสอบแบนด์วิดธ์เครือข่ายต่อผู้ใช้บนเซิร์ฟเวอร์ Ubuntu ได้อย่างไร


12

ฉันมีผู้ใช้เชลล์บางรายบนเซิร์ฟเวอร์ที่มีการถ่ายโอนข้อมูลรายเดือน 300GB ฉันจะตรวจสอบการใช้แบนด์วิดธ์ต่อผู้ใช้อย่างไร


เป็นไปได้ไหม ดูเหมือนว่าในทางทฤษฎีแล้วมันจะยุ่งยากมากกว่าความคุ้มค่าเพราะโดยทางเทคนิคแล้วคุณต้องมีแต่ละขั้นตอนโดยใช้อินเทอร์เน็ตระบุว่าใครกำลังใช้งานอยู่ เหตุผลเฉพาะใด ๆ ที่คุณต้องการตรวจสอบต่อผู้ใช้นอกเหนือจากผู้ใช้เชลล์ที่คุณมี? เนื่องจากมีข้อมูลเข้า / ออก 300GB ต่อเดือนจึงไม่น่าเป็นไปได้ที่คุณจะเป็น: /
Thomas Ward

จะต้องเป็นไปได้ ISP อื่นจะกำหนดแบนด์วิดท์สูงสุดต่อผู้ใช้อย่างไร
djeikyb

@EvilPhoenix ฉันต้องการตรวจสอบการใช้งานต่อ user.300GB นั้นไม่มากสำหรับเซิร์ฟเวอร์ที่มีผู้ใช้อย่างน้อย 20 คนที่ใช้เซิร์ฟเวอร์นี้เป็นพร็อกซีเซิร์ฟเวอร์
Pedram

1
ดูเหมือนว่าคุณจะได้คำตอบที่เป็นประโยชน์จาก Kees Cook แต่ถ้าคุณยังคงมองหาวิธีการอยู่ฉันสงสัยว่าการใช้คำถามที่แตกต่างอาจช่วยได้หรือไม่ ฉันพบคู่มือนี้ googling "วิธีการ จำกัด แบนด์วิดท์ของผู้ใช้บน linux": faqs.org/docs/Linux-HOWTO/Bandwidth-Limiting-HOWTO.html
djeikyb

คำตอบ:


13

อย่างน้อยที่สุดคุณสามารถวัดทราฟฟิกขาออกบนพื้นฐานต่อผู้ใช้โดยใช้โมดูล "owner" ของ iptables หากผู้ใช้ทั้งหมดที่คุณต้องการตรวจสอบอยู่/root/list-of-users.txtคุณสามารถทำได้:

for login in $(cat /root/list-of-users.txt);
do
    iptables -N out_user_$login
    iptables -A OUTPUT -m owner --uid-owner $(id -u $login) -j out_user_$login
done

จากนั้นแพ็คเก็ตและไบต์จะนับสำหรับทราฟฟิกขาออกของผู้ใช้แต่ละราย:

iptables -L OUTPUT -n -v | grep out_

สิ่งนี้สามารถขยายเพิ่มเติมได้ด้วย CONNMARK เพื่อติดตามด้านขาเข้าด้วย


ขอบคุณมันเยี่ยมมากฉันทำอย่างนี้ แต่ทำไมฉันไม่สามารถใช้วิธีเดียวกันกับ INPUT ได้
Pedram

1
เจ้าของแพ็คเก็ตไม่เป็นที่รู้จักสำหรับแพ็กเก็ตที่เข้ามาเพราะจากมุมมองของเคอร์เนลมันมาจากนอกเครื่อง CONNMARK สามารถใช้ในการผูกแพ็คเก็ตในสตรีม TCP กับผู้เริ่มต้นเป็นต้น แต่ฉันไม่มีตัวอย่างการทำงานนี้
Kees Cook

7

ฉันเพิ่งเจอNetHogs :

NetHogs เป็นเครื่องมือ 'net top' ขนาดเล็ก แทนที่จะแบ่งทราฟฟิกลงตามโพรโทคอลหรือต่อซับเน็ตเช่นเดียวกับเครื่องมือส่วนใหญ่จะจัดกลุ่มแบนด์วิดท์ตามกระบวนการ

ป้อนคำอธิบายรูปภาพที่นี่

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


นอกจากนี้ยังสามารถเริ่มในโหมดเพื่อสรุปทราฟฟิก: sudo nethogs -v 3 eth0(หรือกดmซ้ำ ๆ หลังจากเริ่มวนรอบโหมด) ใช้ร่วมกับtmuxเพื่อให้ทำงานได้อย่างต่อเนื่อง (แม้ว่าsshเซสชันของคุณจะล่ม)
tanius

6

คุณสามารถใช้Cacti

Cacti เป็นส่วนหน้าที่สมบูรณ์ของ RRDTool โดยจะเก็บข้อมูลที่จำเป็นทั้งหมดเพื่อสร้างกราฟและเติมข้อมูลลงในฐานข้อมูล MySQL ส่วนหน้าขับเคลื่อนด้วย PHP อย่างสมบูรณ์ นอกเหนือจากความสามารถในการบำรุงรักษากราฟแหล่งข้อมูลและ Round Robin Archives ในฐานข้อมูลแล้ว cacti จะจัดการกับการรวบรวมข้อมูล นอกจากนี้ยังมีการสนับสนุน SNMP สำหรับผู้ที่เคยสร้างกราฟการจราจรด้วย MRTG

หรือvnStat

vnStat เป็นเครื่องตรวจสอบการรับส่งข้อมูลเครือข่ายแบบคอนโซลสำหรับ Linux และ BSD ที่เก็บบันทึกการรับส่งข้อมูลเครือข่ายสำหรับส่วนต่อประสานที่เลือก ใช้สถิติอินเตอร์เฟสเครือข่ายที่เคอร์เนลจัดเตรียมไว้เป็นแหล่งข้อมูล ซึ่งหมายความว่า vnStat จะไม่ดมกลิ่นการรับส่งข้อมูลใด ๆ และยังช่วยให้มั่นใจได้ว่าการใช้ทรัพยากรระบบมีน้อย

ทั้งสองอย่างยอดเยี่ยม


2
ขอบคุณ แต่ฉันเห็นทั้งคู่แล้วและดูเหมือนว่าไม่ใช่ของพวกเขาที่มีต่อการตรวจสอบของผู้ใช้ฉันต้องการตรวจสอบการใช้งานต่อผู้ใช้
Pedram

5

ฉันดูแล้วฉันไม่พบแพ็คเกจ gui ที่ครอบคลุมที่คุณต้องการ หวังว่าจะมีอยู่และใครบางคนจะโพสต์เกี่ยวกับที่นี่ในที่สุด

ฉันไม่ใช่คนเครือข่ายจริงๆ แต่จากสิ่งที่ฉันได้อ่านท่ามกลางสิ่งอื่น ๆ มากมายnetstatและiptablesควรจะทำเพื่อบัญชีผู้ใช้ ip / host -based สิ่งที่acctเครื่องมือทำสำหรับกระบวนการบัญชีระบบ ลิงค์ cyberciti.biz นี้อาจช่วยให้คุณพัฒนาระบบด้วยเครื่องมือเหล่านี้:

http://www.cyberciti.biz/faq/linux-configuring-ip-traffic-accounting/


ขอบคุณ แต่อย่างที่คุณบอกว่าพวกเขาใช้สำหรับการบัญชีผู้ใช้แบบอิงไอพีฉันมีผู้ใช้เชลล์บางคนที่อาจใช้เซิร์ฟเวอร์ในสถานที่ต่างกันโดยเฉพาะในแผนกมหาวิทยาลัยที่มีที่อยู่ IP เดียวกัน (หลัง NAT) ดังนั้นฉัน กำลังมองหาโซลูชันการบัญชีที่อิงตามผู้ใช้หากเป็นไปได้
Pedram

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