Обмежити трафік SSH?


11

Я хотів би мати можливість обмежити пропускну здатність SSH на своєму сервері. Тобто кожен sshd процес повинен бути обмежений 200Kb / s або щось подібне.

scp має таку функціональність, але ssh, будучи більш розробленим для чуйного інтерактивного використання, не має такої можливості. Я, однак, хотів би поєднати функціональність -D (SOCKS proxy) з деякою здатністю якось обмежити трафік.

Чи взагалі є варіанти для цього?


Ви хочете це зробити на сервері SSH, чи це нормально робити на брандмауері між двома машинами?
Марк Хендерсон

Я дійсно краще зробити це на сервері, оскільки у мене немає доступу до брандмауера.
user10640

Якщо ви із задоволенням робите це на клієнті, спробуйте утиліту командного рядка 'drizzle'.
Alex J

Хоча команда drizzle виглядає корисною, я в кінцевому підсумку не можу довіряти користувачам виконувати її. Схоже, я застряг, дивлячись на щось трохи складніше, ніж я сподівався: P. Дякую всім!
користувач10640

Відповіді:


4

Я не впевнений, чи довіряти користувачам є частиною рівняння, але trickleдуже зручно для обмеження швидкості заданої команди. Коли я завантажую пакети з дому, то сусідки по кімнаті, що звикають до WoW, помічають, коли я забуваю щось подібне, оскільки воно в значній мірі домінує над трубою.


1
Trickle може працювати як демон і керувати загальною пропускною здатністю для декількох команд на одній машині. Зручно, коли ви хочете одночасно здійснити купу незалежних операцій передачі, але хочете, щоб вони загалом використовували не більше встановленої швидкості передачі даних.
Девід Спіллетт

1
На жаль, я не думаю, що це допоможе мені у виконанні sshd - це розщеплює нові sshds, коли надходять нові з'єднання.
користувач10640

wtf, чому це головна відповідь? trickleне працює з жодним процесом, який розвивається. Це включає sshd!
Навін

1

Варто було б розібратися у здійсненні формування трафіку HTB за допомогою tc. Моє рішення подібної проблеми полягало у використанні сценарію htb.init, знайденого на веб-сайті http://sourceforge.net/projects/htbinit/

Я встановив його на основі обмеження трафіку з порту 22, але ви також можете використовувати iptables для маркування / манглювання пакетів, які потім обробляються на основі позначки.


+1 за єдину tcвідповідь на даний момент.
Спулер

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

Я знаю, що ця нитка досить стара, але сподіваюся, що це комусь допоможе.


1
Прикро, що двоє людей спростували вашу відповідь, не принаймні коментуючи. Я припускаю, що scpце ssh досить специфічний випадок використання. Я перевірив, scp -lі це працює, хоча зауважте, що це кілобіт (кб) в секунду, а не кілобайт (кБ).
mwfearnley

0

Є кілька варіантів.

Загальним є впровадження QoS на порт 22 на брандмауері / маршрутизаторі між сервером і клієнтами.

Якщо вони знаходяться в одній локальній мережі (тобто немає маршрутизаторів або брандмауерів між ними), я вважаю, що ви можете використовувати IPTables для обмеження пропускної здатності до порту 22 ... Подивіться тут, щоб отримати додаткові відомості про те, як це зробити.


1
Вам потрібно бути обережним, використовуючи обмежувач швидкості iptables з такою послугою, як ssh, тому що "Важливо дотримуватися, що обмеження швидкості концептуально відрізняється від зменшення / обмеження пропускної здатності; з'єднання, обмежене пропускною здатністю, призведе до черги пакетів і обмежить швидкість, з якою вони передаються / приймаються. Обмеження швидкості цього не зробить; якщо ви використовуєте обмеження швидкості, наприклад, при спробі вхідного TCP-з'єднання на ваш ідентифікатор, а з'єднання, що перевищують вказаний ліміт, буде відхилено; немає черги пакетів . "
msanford

Хммм-гуд-очко
Марк Хендерсон

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.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.