Назад | Перейти на главную страницу

Используйте формирование трафика с tc в debian jessie, чтобы ограничить только один виртуальный IP-адрес

У моего сервера несколько IP-адресов, из которых только один соответствует входящему физическому интерфейсу eth0. Другие IP-адреса обрабатываются виртуально через iptables / DNAT.

Я хочу ограничить трафик одного из моих lxc-контейнеров под названием «service1» (192.168.123.2 для внутреннего использования) до макс. 50 Мбит / с.

Из внешнего источника я достигаю "гипервизора" основного сервера через x.x.x.90, но брандмауэр направляет все необходимые порты для x.x.x.89 на "service1" (я использую только порты 10000 и 5666).

Как я могу формировать трафик с помощью tc к максимальному пределу 50 Мбит / с для трафика, который достигает service1 contianer на IP x.x.x.89?

Я бы начал с

DEV=eth0
IPT=/sbin/iptables
TC=/sbin/tc
$IPT -t mangle -F
# clear old rules:
$TC qdisc del dev $DEV ingress > /dev/null 2>&1
$TC qdisc del dev $DEV root > /dev/null 2>&1
$TC qdisc del dev lo root > /dev/null 2>&1
# initialize shaping and set default to channel 12: 
$TC qdisc add dev $DEV root handle 1:0 htb default 12 r2q 6
# set max limit to 1GBit
$TC class add dev $DEV parent 1:0 classid 1:1 htb rate 1Gbit ceil 1Gbit

Это мои правила iptables (iptables-save):

-A PREROUTING -d x.x.x.89/32 -i eth0 -p tcp -m tcp --dport 5666 -j DNAT --to-destination 192.168.123.2:5666
-A PREROUTING -d x.x.x.89/32 -i eth0 -p udp -m udp --dport 5666 -j DNAT --to-destination 192.168.123.2:5666
-A PREROUTING -d x.x.x.89/32 -i eth0 -p tcp -m tcp --dport 10000 -j DNAT --to-destination 192.168.123.2:10000
-A PREROUTING -d x.x.x.89/32 -i eth0 -p udp -m udp --dport 10000 -j DNAT --to-destination 192.168.123.2:10000
-A POSTROUTING -s 192.168.123.0/24 -o eth0 -j SNAT --to-source x.x.x.89

Теперь, как мне определить правила для ограничения трафика до максимального значения 50Mit только для этих двух портов 10000 и 5666 от и до "service1"?

Для начала вам следует использовать tcng для генерации правил tc:

http://linux-ip.net/gl/tcng/node10.html