LINUX.ORG.RU
ФорумAdmin

IMQ


0

0

Помогите раставить все точки над всеми И. Немогу понять как всетки правильно управлять входящим трафиком на сервер со стороны интернета. Прочел кучу доков с разными способами. Во всех говорится что нужно перенаправлять трафик на устройства IMQ или IFB. Зачем нужно перенаправлять входящий трафик на сервер со стороны интернета, который предназначен какому-то клиенту, на устройство IMQ? Если этот трафик можно словить меткой на интрефейсе который смотрит на локальную сеть в цепочке POSTROUTING. Вот выставляю кусок примера шейпера. IF_LAN смотрит в локальную сеть. Вместо eth1 вписывал и imq0. Разницы неощутил. Везде на форумах встречаю что-то типа «входящий трафик после ната, если не перенаправлен на IMQ или IFB, не шейпится или шейпится криво». Вообщем мрак какой-то особенно после «шейпится криво», как это? Ну и последний вопрос: если все таки нужно перенаправлять входящий трафик на IMQ, то с какими опциями его нужно собирать, если используется SNAT, АВ или ВА?

#!/bin/bash IF_INET=eth0 IF_LAN=eth1 IP=10.10.1.5

#iptables -t mangle -N JUMP #iptables -t mangle -A JUMP -o eth1 -j IMQ --todev 0

#UP tc qdisc del dev $IF_INET root tc qdisc add dev $IF_INET root handle 1: htb default 2 tc class add dev $IF_INET parent 1: classid 1:1 htb rate 512kbit ceil 512kbit tc class add dev $IF_INET parent 1:1 classid 1:2 htb rate 256kbit ceil 512kbit prio 3 tc qdisc add dev $IF_INET parent 1:2 handle 2: sfq perturb 10 #DOWN tc qdisc del dev $IF_LAN root tc qdisc add dev $IF_LAN root handle 1: htb default 2 tc class add dev $IF_LAN parent 1: classid 1:1 htb rate 5mbit ceil 5mbit tc class add dev $IF_LAN parent 1:1 classid 1:2 htb rate 512kbit ceil 5mbit prio 3 tc qdisc add dev $IF_LAN parent 1:2 handle 2: sfq perturb 10

iptables -A INPUT -s $IP -j ACCEPT iptables -A FORWARD -s $IP -j ACCEPT iptables -A FORWARD -d $IP -j ACCEPT iptables -A OUTPUT -d $IP -j ACCEPT

iptables -t nat -A POSTROUTING -o $IF_INET -s $IP -j SNAT --to-source 10.54.109.64

#UP iptables -t mangle -A POSTROUTING -s $IP -o $IF_INET -j MARK --set-mark 100 iptables -t mangle -A POSTROUTING -s $IP -o $IF_INET -j RETURN #iptables -t mangle -A POSTROUTING -s $IP -o $IF_INET -j JUMP

#DOWN iptables -t mangle -A POSTROUTING -d $IP -o $IF_LAN -j MARK --set-mark 100 iptables -t mangle -A POSTROUTING -d $IP -o $IF_LAN -j RETURN #iptables -t mangle -A POSTROUTING -d $IP -o $IF_LAN -j JUMP

#UP tc class add dev $IF_INET parent 1:1 classid 1:100 htb rate 75kbit ceil 512kbit prio 1 tc qdisc add dev $IF_INET parent 1:100 handle 100: sfq perturb 10 tc filter add dev $IF_INET parent 1: protocol ip prio 1 handle 100 fw classid 1:100

#DOWN tc class add dev $IF_LAN parent 1:1 classid 1:100 htb rate 128kbit ceil 1024kbit prio 1 tc qdisc add dev $IF_LAN parent 1:100 handle 100: sfq perturb 10 tc filter add dev $IF_LAN parent 1: protocol ip prio 1 handle 100 fw classid 1:100

> Зачем нужно перенаправлять входящий трафик на сервер со стороны интернета.... Если этот трафик можно словить меткой на интрефейсе который смотрит на локальную сеть

В этом случае он перестанет быть входящим для интерфейса с шейпером.
Понимаете, под "входящим" люди имели в виду не глобально входящий откуда-то (в вашем случае пришедший из internet-а), а "входящий" по отношению к интерфейсу, на котором висит shaper/policer/... .

В вашем случае действительно никаких IMQ и IFB не нужно.
А вот если б вам нужно было нарезать трафик, который непосредственно идёт на ваш маршрутизатор (не транзитный), тогда был бы только входящий интерфейс, и на дисциплине ingress не разгонишься. В этом случае и пришлось бы обратиться к IFB/IMQ.

spirit ★★★★★
()

> «шейпится криво», как это?
Это надо спрашивать у автора этой фразы :-)

> с какими опциями его нужно собирать, если используется SNAT, АВ или ВА?
Всё зависит от конкретной задачи. Если вам нужно анализировать IP-адреса (src или dst), подвергающиеся NAT-у, тогда момент прохождения пакета через IMQ будет важен: если в IMQ пакет попадёт до SNAT-а - в фильтрах (tc filter) будет фозможность проверять оригинальные src IP, если после - все src IP будут в виде одного, на который они заменятся после выполнения SNAT.
Я, например, никогда не встречал необходимости указывать что-то отличное от AB (CONFIG_IMQ_BEHAVIOR_AB=y).
AB - After DNAT (будут видны dst IP, на которые действительно пойдёт пакет), Before SNAT (всё ещё будут видны src IP перед подменой).

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

значит, получается если мне нужно зашейпить транзитный трафик в обоих направлениях, достаточно будет повесить шейперы на интерфейсах eth0 и eth1? spirit, спасибо за информацию, как раз то чего мне нехватало насчет IMQ.

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

> достаточно будет повесить шейперы на интерфейсах eth0 и eth1?
Да, именно так, всё остальное будет лишним.

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