Замедлять отдельные соединения, проходящие через роутер Linux?
У нас есть сервер Linux, выступающий в качестве маршрутизатора / брандмауэра для нашего офиса. Иногда кто-то загружает большой файл, который занимает всю нашу пропускную способность. Я не хочу реализовывать какие-либо сложные правила или формирование трафика, но мне интересно, есть ли способ замедлить одно соединение на месте? Я нашел tcpnice, но это не замедляет передачу в моем тестировании.
4 ответа
Если формирование трафика не формирует трафик должным образом как для оболочки, так и для активных загрузок (думаю, что может, но не уверен), тогда вы можете:
а) запустить ssh на двух портах - вы можете назначить один для передачи файлов и один для интерактивной работы.
б) ограничить общую скорость SSH - единственная проблема заключается в том, что если вы заполните емкость загрузки ссылки, и SSH будет работать хорошо в интерактивном режиме, если вы ограничите скорость примерно до 50 Кбит / с (это заставит пользователей использовать какой-то другой протокол для передачи больших файлов)
в) расставьте приоритеты трафика по адресу источника, если можете
Кроме того, формирование трафика должно сделать трафик более сбалансированным независимо от того, чтобы одно соединение не монополизировало весь канал.
РЕДАКТИРОВАТЬ: Вот пример, который использует скрипт bash. В нем упоминается, что ssh действительно устанавливает TOS из интерактивного в интерактивное, поэтому я бы предположил, что Wondershaper этим воспользуется.
Если вам нужны другие варианты, кроме Wondershaper, обязательно посмотрите на shorewall или pyshape.
Shorewall достаточно зрелый и приятный баланс гибкости, мощи и простоты.
Wondershaper может творить чудеса, и его довольно легко настроить. Помимо этого, вы можете найти некоторые пользовательские программы для этого. В Linux есть Trickle, могут быть эквиваленты для Windows.
Но на самом деле вы хотите ограничить трафик - люди забудут запустить программу и т. Д. Простое ограничение количества загрузок чуть меньше, чем ваша полная емкость, вероятно, принесет вам много пользы.
Посмотрите на connrate на странице iptables(8). Вы можете сопоставить скорость соединения и замедлить соединение с слишком быстрой загрузкой, либо поместив его в соответствующий класс t c, либо отбрасывая, либо tarpit, либо все, что вам подходит.
Задумывались ли вы о том, чтобы настроить обратный прокси-сервер Squid и настроить пулы задержки? Вы также можете сделать это с помощью директивы limit iptables.
Одна проблема, с которой я столкнулся в связи с вашим запросом, заключается в том, что вы, похоже, хотите начать ограничивать скорость передачи уже установленного соединения, что будет довольно сложно сделать, поскольку все, о чем я могу подумать, захочет начать работать на новое соединение, и оставит существующие соединения работающими.
Я должен согласиться с Алексом в том, что вам, вероятно, понадобится какой-нибудь формирователь трафика, на что вы хотите посмотреть - это количество пакетов в секунду, поскольку интерактивная оболочка будет иметь значительно меньшее значение, чем скромная передача файлов.