Ограничить трафик SSH?

11

Я хотел бы иметь возможность ограничить пропускную способность SSH на моем сервере. Т.е. каждый процесс sshd должен быть ограничен 200Kb / s или что-то в этом роде.

У scp есть такая функциональность, но ssh, более предназначенная для адаптивного интерактивного использования, похоже, не имеет этой опции. Однако я хотел бы объединить функциональность -D (SOCKS proxy) с некоторой способностью каким-либо образом ограничивать трафик.

Есть ли варианты для этого вообще?

user10640
источник
Вы хотите сделать это на SSH-сервере, или это нормально делать на брандмауэре между двумя компьютерами?
Марк Хендерсон
Я бы предпочел сделать это на сервере, так как у меня нет доступа к брандмауэру.
user10640
Если вы счастливы сделать это на клиенте, попробуйте утилиту командной строки 'drizzle'.
Алекс Дж
Хотя команда drizzle выглядит полезной, я не могу доверять пользователям ее запуск. Похоже, я застрял, глядя на что-то более сложное, чем я надеялся: P. Спасибо всем!
user10640

Ответы:

4

Я не уверен, что доверие пользователей является частью уравнения, но trickleочень удобно для ограничения скорости выполнения данной команды. Когда я загружаю пакеты из дома, соседи по комнате наркомана WoW замечают, когда я забываю что-то подобное, так как это в значительной степени доминирует в трубе.

jldugger
источник
1
Trickle может работать как демон и управлять общей пропускной способностью для нескольких команд на одном компьютере. Удобно, когда вы хотите одновременно запустить несколько независимых операций передачи, но хотите, чтобы они использовали не более, чем заданную скорость передачи данных.
Дэвид Спиллетт
1
К сожалению, я не думаю, что это поможет мне с sshd - он разветвляет новые sshds по мере появления новых соединений. Возможно, я застряну с каким-нибудь решением на уровне брандмауэра, которое будет немного сложнее реализовать.
user10640
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.
rkthkr
источник