Решено: Настройка iptables + iproute (CentOS 6.3)

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

Модераторы: SLEDopit, Модераторы разделов

WaterGhost
Сообщения: 7
ОС: CentOS 6.3

Решено: Настройка iptables + iproute (CentOS 6.3)

Сообщение WaterGhost »

Всем привет и С НАСТУПИВШИМ НОВЫМ 2013 ГОДОМ!!!! :) Пытаюсь ограничить полосу для FTP по приему. Сразу скажу что сижу уже часов 6 с этой проблемой и перечитал много. Ничего не помогает ( FTP работает в пассивном режиме, поэтому ограничиваю скорость по пассивным портам.

Вот мои правила:

Код: Выделить всё

tc qdisc add dev eth0 root handle 1:0 cbq avpkt 10000 bandwidth 1024kbit
tc class add dev eth0 parent 1:0 classid 1:101 cbq rate 900kbit allot 1500 bounded isolated
tc filter add dev eth0 parent 1:0 protocol ip handle 0x1 fw flowid 1:101

iptables -t mangle -A INPUT -p tcp -m tcp --dport 61000:61999 -j MARK --set-mark 0x1


Правила маркируются верно, но iproute их не обрабатывает. Не пойму в чем дело. Помогите, люди добрые :)))
Спасибо сказали:
Аватара пользователя
Bluetooth
Сообщения: 4395
Статус: Блюзовый
ОС: Debian Squeeze amd64

Re: Решено: Настройка iptables + iproute (CentOS 6.3)

Сообщение Bluetooth »

пытаетесь ограничить полосу пропускания для ftp сервера или для ftp клиента? Если для клиента, то как быть, если сервер принимает пассивные соединения на других портах?
Спасибо сказали:
WaterGhost
Сообщения: 7
ОС: CentOS 6.3

Re: Решено: Настройка iptables + iproute (CentOS 6.3)

Сообщение WaterGhost »

Моя задача заключается в ограничении скорости скачки\закачки для клиентов FTP. Полоса пропускания для FTP должна быть к примеру 5мбит full_duplex (в приведенном примере стоит другое ограничение, просто для теста). Т.е. в обе стороны (прием\отдача) максимальная скорость по 5мбит (для закачки 5мбит и для скачки 5мбит) для всех клиентов. Пассивные порты (порты по которым происходит закачка\скачка файлов) это TCP 61000-61999 (так настроено в FTP сервере).
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: Решено: Настройка iptables + iproute (CentOS 6.3)

Сообщение KiWi »

Легче ограничить самим сервером(из популярных vsftpd и proftpd(+модуль) умеют сами резать скорость).
Спасибо сказали:
WaterGhost
Сообщения: 7
ОС: CentOS 6.3

Re: Решено: Настройка iptables + iproute (CentOS 6.3)

Сообщение WaterGhost »

Конечно проще, но не предоставляется возможным. На графиках сети появляются "пики", т.к. скорость постепенно анализируется и снижается до выделенного лимита. Так вот когда такие пики возникают потребляемая полоса резко возрастает и превышает выделенную. Все пакеты что свыше определенной скорости полосы пропускания дропаются (эта политика дата-центра) =\ И многие, даже существующие, коннекты обрываются с таймаутами до тех пор пока скорость не понизится до лимита, выставленного на FTP сервере. Так что необходим шейпер и это точно, т.к. помимо ФТП необходимо ограничить еще некоторые виды трафика. Вопрос остается открытым.
Спасибо сказали:
WaterGhost
Сообщения: 7
ОС: CentOS 6.3

Re: Решено: Настройка iptables + iproute (CentOS 6.3)

Сообщение WaterGhost »

Тут возник еще 1н вопрос. Вот я поределил очередь на интерфейсе и описал что пропускная способность канала к примеру 35мбит

Код: Выделить всё

tc qdisc add dev eth0 root handle 1: htb default 30
tc class add dev eth0 parent 1: classid 1:1 htb rate 35mbit burst 15k


35мбит это FullDuplex? Т.е. одновременная передача\прием могут быть по 35мбит? Или это half duplex, т.е. на прием и передачу будет делиться 35мбит? Просто если 1ый вариант не верен, то необходимо объявлять не 35мбит а 70мбит в моем случае.
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: Решено: Настройка iptables + iproute (CentOS 6.3)

Сообщение KiWi »

WaterGhost писал(а):
08.01.2013 01:45
Тут возник еще 1н вопрос. Вот я поределил очередь на интерфейсе и описал что пропускная способность канала к примеру 35мбит

Код: Выделить всё

tc qdisc add dev eth0 root handle 1: htb default 30
tc class add dev eth0 parent 1: classid 1:1 htb rate 35mbit burst 15k


35мбит это FullDuplex? Т.е. одновременная передача\прием могут быть по 35мбит? Или это half duplex, т.е. на прием и передачу будет делиться 35мбит? Просто если 1ый вариант не верен, то необходимо объявлять не 35мбит а 70мбит в моем случае.

Это просто 35Мбит.
tc работает с исходящим трафиком, соответственно, для ограничения входящего трафика используются костыли в виде ifb/imq, который весь входящий трафик пропускают через виртуальный интерфейс(для него этот трафик уже является исходящим и, соответственно, ограничивается так же, как и исходящий на реальном интерфейсе).

И, до кучи: если есть возможность изменить диапозон портов, то можно обойтись без iptables -- tc filter умеет проверять порты(порт + маска -- см. tc filter ... u32 ... dport).
Спасибо сказали:
WaterGhost
Сообщения: 7
ОС: CentOS 6.3

Re: Решено: Настройка iptables + iproute (CentOS 6.3)

Сообщение WaterGhost »

Спасибо за ответ! Обошелся диапазоном портов u32, хотя это полный велосипед получается, т.к. чтобы покрыть данный диапазон необходимо 8 правил с масками =\
Насчет траффика уже поэкспериментировал и в живую прочувствовал что входящий трафф никак не ограничить ( Обошелся тупым дропанием лишних пакетов до необходимой полосы. Но все же хочется научиться перенаправлять входящий траф на виртуальный интерфейс для нормальной фильтрации и последующего шейпинга. Буду благодарен если направите или покажете где почитать про создание виртуальных интерфейсов и перенаправления на них входящего трафика.
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: Решено: Настройка iptables + iproute (CentOS 6.3)

Сообщение KiWi »

WaterGhost писал(а):
09.01.2013 00:42
Спасибо за ответ! Обошелся диапазоном портов u32, хотя это полный велосипед получается, т.к. чтобы покрыть данный диапазон необходимо 8 правил с масками =\

Поэтому и стоит поменять диапозон так, чтобы это было 1 маской. :)
Насчет траффика уже поэкспериментировал и в живую прочувствовал что входящий трафф никак не ограничить ( Обошелся тупым дропанием лишних пакетов до необходимой полосы. Но все же хочется научиться перенаправлять входящий траф на виртуальный интерфейс для нормальной фильтрации и последующего шейпинга. Буду благодарен если направите или покажете где почитать про создание виртуальных интерфейсов и перенаправления на них входящего трафика.

IFB: http://forum.nag.ru/forum/index.php?showtopic=63988 (ну и вообще много чего находится по tc ingress ifb)
IMQ: http://lartc.org/howto/lartc.imq.html
Спасибо сказали:
WaterGhost
Сообщения: 7
ОС: CentOS 6.3

Re: Решено: Настройка iptables + iproute (CentOS 6.3)

Сообщение WaterGhost »

Поэтому и стоит поменять диапозон так, чтобы это было 1 маской.


Понял :)

IFB: http://forum.nag.ru/forum/index.php?showtopic=63988 (ну и вообще много чего находится по tc ingress ifb)
IMQ: http://lartc.org/howto/lartc.imq.html


Вообще супер! Буду разбираться. Благодарю :rolleyes:
Спасибо сказали: