Ограничить исходящую пропускную способность на конкретном интерфейсе

32

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

Какое самое простое решение? Я знаю, что мог бы использовать, iptablesно я ищу простую установку / настройку.

Гейб
источник
HTB прекрасно работает. Очень гибкое ограничение скорости. sourceforge.net/projects/htbinit

Ответы:

37

Ethtool

Вы можете изменить совокупную скорость порта NIC, используя ethtool.

$ sudo ethtool -s eth0 speed 10

Например, для порта будет установлено значение 10 МБ.

Wondershaper

Вы также можете использовать инструмент, wondershaperчтобы сделать это. ПРИМЕЧАНИЕ. Скорость должна быть в килобитах в секунду.

$ sudo wondershaper eth1 downspeed upspeed

Например:

$ sudo wondershaper eth0 10000 280

струйка

Третий вариант - это Трикл . Trickle может использоваться пользователями для каждой программы или в качестве демона, который полностью ограничивает NIC.

Режим пользователя - ручная страница

$ sudo trickle -d 20 -u 20 wget http://www.google.com/bigfile

Дросселирует 20К / с как для восходящего, так и для нисходящего трафика только для этого wget, все остальное не будет ограничено.

Режим демона - ручная страница

В режиме демона trickledможет ограничивать группу программ фиксированным пределом пропускной способности. Чтобы запустить демон, выполните команду trickled:

$ sudo trickled -d 20 -u 20

pyshaper

4-й вариант - пышапер . Это уникальная опция среди вариантов в том, что она включает в себя графический интерфейс и динамически контролирует и устанавливает пропускную способность с течением времени. Вы можете проверить man-страницу pyshaper для более подробной информации.

                                            pyshaper gui

Ссылки

SLM
источник
Ограничение использования полосы пропускания проблемных приложений через cgroups, вероятно, также будет целесообразно, если их ядро ​​будет поддерживать это.
Братчли
Wondershaper не работает, я не знаю, почему (даже у Wondershaper Eth0 1000 1000 нет такой же пропускной способности интернета, как у 'sudo trickled -d 20 -u 20`.) Мне нужно ограничить один сетевой интерфейс. Пропускная способность не только конкретных приложений. как можно это сделать?
Араш
струйка не сработала для меня, но чудотворца добились цели!
Песчу
1

Последний раз Wondershaper был отредактирован в 2002 году, но до сих пор работает на Fedora 21. Но обратите внимание, что в качестве аргументов доступно только несколько параметров, и вы не можете указать скорость загрузки / выгрузки в командной строке, как указано здесь - по крайней мере, не в версии 1.1a Download, выпущенной 16 апреля 2002 года. Вы должны отредактировать файл, и это сценарий оболочки. Не сложно для тех, кто знает немного оболочки.

Использование это:

wondershaper (этот будет устанавливать пропускную способность в соответствии со значениями в файле)

wondershaper status
wondershaper stop

Вы можете использовать его, пока ссылка активна, что приятно.

Майк С
источник
1

Другим вариантом является iproute2 , который является зрелым и широко доступным инструментом маршрутизации / формирования трафика. Я нашел его как RPM (вероятно, и многие другие пакеты, я не смотрел). На момент написания этой статьи самой последней версией была 4.4.0, созданная 25 января 2016 года.

Если посмотреть на синтаксис конфигурации, он выглядит относительно простым (хотя и не таким простым, как ifconfigили route.)

зеленый
источник
6
В вашем ответе не говорится о том, как на самом деле использовать iproute2 для ограничения исходящей полосы пропускания. Можете ли вы уточнить, пожалуйста?
Майкл