Замедлять отдельные соединения, проходящие через роутер Linux?

8

У нас есть сервер Linux, выступающий в качестве маршрутизатора / брандмауэра для нашего офиса. Иногда кто-то загружает большой файл, который занимает всю нашу пропускную способность. Я не хочу реализовывать какие-либо сложные правила или формирование трафика, но мне интересно, есть ли способ замедлить одно соединение на месте? Я нашел tcpnice , но это не замедляет передачу в моем тестировании.

Davr
источник

Ответы:

6

Если формирование трафика не формирует трафик должным образом как для оболочки, так и для активных загрузок (думаю, что может, но не уверен), тогда вы можете:

а) запустить ssh на двух портах - вы можете назначить один для передачи файлов и один для интерактивной работы.

б) ограничить общую скорость SSH - единственная проблема заключается в том, если вы заполните емкость загрузки ссылки, и SSH будет работать хорошо в интерактивном режиме, если вы ограничите скорость до 50 Кбит / с (это заставит пользователей использовать какой-то другой протокол для передачи больших файлов )

в) расставьте приоритеты трафика по адресу источника, если можете

Кроме того, формирование трафика должно сделать трафик более сбалансированным независимо от того, чтобы одно соединение не монополизировало весь канал.

РЕДАКТИРОВАТЬ: Вот пример, который использует скрипт bash. В нем упоминается, что ssh действительно устанавливает TOS из интерактивного в интерактивное, поэтому я хотел бы предположить, что Wondershaper воспользуется этим.

Если вам нужны другие варианты, кроме Wondershaper, обязательно посмотрите на shorewall или pyshape .

Shorewall довольно зрелый и приятный баланс гибкости, мощи и простоты.

неразумность
источник
4

Wondershaper может творить чудеса, и его довольно легко настроить. Помимо этого, вы можете найти некоторые пользовательские программы для этого. В Linux есть Trickle , могут быть эквиваленты для Windows.

Но на самом деле вы хотите ограничить трафик - люди забудут запустить программу и т. Д. Простое ограничение количества загрузок чуть меньше, чем ваша полная емкость, вероятно, принесет вам много пользы.

Алекс
источник
1
Основная проблема, с которой я сталкиваюсь при формировании трафика, заключается в том, что AFAIK нет времени, чтобы отличить загрузку файла через SFTP / SCP от интерактивного сеанса SSH. Я хочу расставить приоритеты в моих интерактивных сеансах SSH, но при этом также расставим приоритеты в моих
загрузках, отказавшись
2
Я считаю, что ssh отличает интерактивное использование (ssh) от неинтерактивного (scp / sftp) с помощью заголовка TOS TCP / IP, и Wondershaper использует это.
Алекс
К сожалению, ни Putty (интерактивный SSH-клиент), ни Filezilla (SFTP-клиент, передающий файлы) не установили флаги TOS TCP / IP. Так что мой брандмауэр не может различить их.
2010 г.
Также Wondershaper 8 лет ... кажется, вечность в интернете.
2010 г.
2

Посмотрите на connrate на странице iptables (8). Вы можете сопоставить скорость соединения и замедлить соединение, которое загружается слишком быстро, либо поместив его в соответствующий класс tc, либо отбрасывая, либо tarpit, либо все, что вам подходит.

Александар Иванишевич
источник
1

Задумывались ли вы о том, чтобы настроить обратный прокси-сервер Squid и настроить пулы задержки ? Вы также можете сделать это с помощью директивы limit iptables.

Одна проблема, с которой я столкнулся в связи с вашим запросом, заключается в том, что вы, похоже, хотите начать ограничивать скорость передачи уже установленного соединения, что будет довольно сложно сделать, поскольку все, о чем я могу подумать, захочет начать работать на новое соединение, и оставит существующие соединения работающими.

Я должен согласиться с Алексом в том, что вам, вероятно, понадобится какой-нибудь формирователь трафика, на что вы хотите посмотреть - это количество пакетов в секунду, поскольку интерактивная оболочка будет иметь значительно меньшее значение, чем скромная передача файлов.

d34dh0r53
источник