LINUX.ORG.RU
ФорумAdmin

Как ограничить скорость трафика с конкретным ip адресом?

 , , , ,


4

1

говорят вроде как для этого хорошо подходит IPtables или shorewall. Но мануалы какие-то большие и что-то всё сложно, нигде не могу просто найти как конкретно выглядит команда, чтобы ограничить трафик например по ip и всё.
Мне нужно ограничить исходящий трафик с браузера в CentOS, но и ограничение для одного ip пока сойдет.

iptables здесь опосредованно, тебе нужен iproute2

tc qdisc add dev eth0 root handle 1: htb
tc class add dev eth0 parent 1: classid 1:1 htb rate 10Mbit quantum 3000
tc filter add dev eth0 parent 1: protocol ip handle 100 fw flowid 1:1

Здесь мы создаём очередь и класс на устройстве eth0, лимитируем общую скорость до 10 мегабит/сек для этого класса. Также указываем что трайфик, промаркированный меткой 100 отправится в этот класс. Теперь осталось только указать в iptables что направить в этот класс.

iptables -t mangle -A PREROUTING -i eth0 -p tcp --sport 80 -j MARK --set-mark 100

В данном примере весь трафик с портом источника 80 с интерфейса eth0 будет отправлен в этот класс. Если eth0 - это устройство через которое у тебя идет Интернет, это означает что трафик с веб-сайтов с 80 порта не сможет занять больше чем 10 мегабит/сек полосы пропускания на eth0.

Сразу скажу - можно было обойтись и без меток и шейпить сразу правилом tc. Но с метками получается несколько гибче, лично мое мнение - синтаксис iproute2 гораздо более зубодробительный чем iptables.

Вопрос агрегации и шейпинга трафика с нескольких интерфейсов(через IFB или IMQ) оставляю на самостоятельное изучение ;-)

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 2)
Ответ на: комментарий от Pinkbyte

спасиб) а с помощью них нельзя конкретную приложуху или конкретный ip ограничить? Просто у меня есть сервак удаленный, и мне иногда нужно заходить на него и через браузер загружать большой файлик на чужой сайт. И нужно ограничить исходящий траф с этого браузера, потому что на моем сервере есть сайты, которые начнут тупить)

AlexLichi ()
Ответ на: комментарий от AlexLichi

конкретную приложуху

В общем случае нельзя. Но можно запускать приложение из под другого пользователя, а уже все процессы запущенные из под этого пользователя ограничивать через iptables

конкретный ip

Опять же - iptables

Pinkbyte ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.