Мой сервер имеет несколько дюйм/с, на котором только один - картопостроитель к входящему физическому интерфейсу eth0. Другой дюйм/с обрабатывается виртуальным способом через iptables/DNAT.
Я хочу ограничить трафик одним из моих lxc контейнеров, названных "service1" (192.168.123.2 внутренне) к макс. 50MBit/s.
От внешнего я достигаю своего основного сервера "гипервизор" через x.x.x.90, но Брандмауэр направляет все необходимые порты для x.x.x.89 к "service1" (я только использую Порт 10000 и 5666),
Как я могу сформировать трафик с tc
к макс. пределу 50Mbit/s для трафика, который достигает 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"?