จำกัด การรับส่งข้อมูล SSH หรือไม่


11

ฉันต้องการ จำกัด แบนด์วิดท์ SSH บนเซิร์ฟเวอร์ของฉัน นั่นคือแต่ละกระบวนการ sshd ควรถูก จำกัด ที่ 200Kb / s หรืออะไรทำนองนั้น

scp มีฟังก์ชั่นนี้ แต่ ssh ได้รับการออกแบบให้ใช้งานแบบโต้ตอบได้ดีขึ้นดูเหมือนจะไม่มีตัวเลือกนี้ อย่างไรก็ตามฉันต้องการรวมการทำงานของ -D (SOCKS proxy) เข้ากับความสามารถในการ จำกัด ปริมาณการใช้งาน

มีตัวเลือกสำหรับสิ่งนี้หรือไม่?


คุณกำลังมองหาการทำเช่นนี้บนเซิร์ฟเวอร์ SSH หรือไม่หรือที่จะทำในไฟร์วอลล์ระหว่างเครื่องทั้งสอง
Mark Henderson

ฉันควรทำสิ่งนี้บนเซิร์ฟเวอร์เนื่องจากฉันไม่สามารถเข้าถึงไฟร์วอลล์ได้
user10640

หากคุณมีความสุขที่ได้ทำสิ่งนี้บนไคลเอนต์ให้ลองใช้ยูทิลิตี้บรรทัดคำสั่ง 'ละอองฝน'
Alex J

ในขณะที่คำสั่ง drizzle นั้นดูมีประโยชน์ในที่สุดฉันก็ไม่สามารถเชื่อใจผู้ใช้ในการรัน ดูเหมือนว่าฉันจะมองสิ่งที่ซับซ้อนกว่าที่ฉันหวังไว้: หน้า ขอบคุณทุกๆคน!
user10640

คำตอบ:


4

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


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

1
แต่น่าเสียดายที่ฉันไม่คิดว่ามันจะช่วยฉันด้วย sshd - มันปิดการใช้งาน sshds ใหม่เมื่อมีการเชื่อมต่อใหม่ ๆ ฉันอาจติดอยู่กับโซลูชันระดับไฟร์วอลล์บางตัว
user10640

wtf ทำไมนี่คือคำตอบสูงสุด trickleไม่ทำงานกับกระบวนการใด ๆ ที่ forks นั่นรวมถึง sshd!
Navin

1

มันจะคุ้มค่าที่จะใช้การสร้างปริมาณข้อมูลของ HTB โดยใช้ tc วิธีแก้ปัญหา simular ของฉันคือการใช้สคริปต์ htb.init ที่http://sourceforge.net/projects/htbinit/

ฉันตั้งค่าตามการ จำกัด ทราฟฟิกจากพอร์ต 22 แต่คุณสามารถใช้ iptables เพื่อทำเครื่องหมาย / ยั่วยุให้แพ็กเก็ตถูกประมวลผลตามเครื่องหมายแล้ว


+1 สำหรับtcคำตอบที่เกี่ยวข้องเท่านั้นจนถึงตอนนี้
Spooler

1
scp -l 8192 file.txt user_name@111.111.1.11:/tmp
//8192  = 8192 KB per second

ฉันรู้ว่ากระทู้นี้ค่อนข้างเก่า แต่หวังว่าจะช่วยได้บ้าง


1
มันน่ารำคาญที่คนสองคนลงคะแนนให้กับคำตอบของคุณโดยไม่แสดงความคิดเห็นอย่างน้อย ฉันสันนิษฐานว่าเป็นเพราะscpเป็นกรณีการใช้งานที่ค่อนข้างเฉพาะของ ssh ฉันได้ทดสอบscp -lและใช้งานได้แล้วโปรดทราบว่ามันเป็นกิโลบิต (kb) ต่อวินาทีและไม่ใช่กิโลไบต์ (kB)
mwfearnley

0

มีตัวเลือกน้อย

สิ่งที่พบได้ทั่วไปคือการใช้ QoS บนพอร์ต 22 บนไฟร์วอลล์ / เราเตอร์ระหว่างเซิร์ฟเวอร์และไคลเอนต์

หากพวกเขาอยู่ในเครือข่ายท้องถิ่นเดียวกัน (เช่นไม่มีเราเตอร์หรือไฟร์วอลล์ระหว่างพวกเขา) ฉันเชื่อว่าคุณสามารถใช้ IPTables เพื่อ จำกัด แบนด์วิดท์ให้กับพอร์ต 22 ... ดูที่นี่สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทำเช่นนี้


1
คุณต้องระมัดระวังในการใช้ตัว จำกัด อัตราของ iptables ด้วยบริการอย่าง ssh เพราะ "สิ่งสำคัญคือต้องสังเกตว่าการ จำกัด อัตราความคิดแตกต่างจากการ จำกัด ปริมาณแบนด์วิดท์ / การ จำกัด การเชื่อมต่อแบนด์วิดท์ที่ จำกัด ปริมาณจะคิวแพ็คเก็ต จะถูกส่งไปรับ / อัตรา จำกัด จะไม่ทำเช่นนี้. เมื่อคุณใช้การ จำกัด อัตราในตัวอย่างเช่นเข้ามาความพยายามในการเชื่อมต่อ TCP identd ของคุณและการเชื่อมต่อเกินขีด จำกัด ที่ระบุจะได้รับการปฏิเสธ; มีคิวของแพ็กเก็ตไม่มี ".
msanford

จุด goood Hmmm
Mark Henderson

0

คุณสามารถดูบางอย่างเช่นiprelay :

User-space bandwidth shaping TCP proxy daemon
iprelay can shape the TCP traffic forwarded through it to a specified
bandwidth and allow this bandwidth to be changed on-the-fly. Multiple
data streams to different sockets may be shaped to the same total
bandwidth, much like a traffic shaping router would. However, this
application runs in user space, and works by acting as a TCP proxy.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.