<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Linux Forum &mdash; Шейпер создаёт много правил в iptables как это сократить?]]></title>
		<link>https://linuxforum.ru/viewtopic.php?id=24833</link>
		<atom:link href="https://linuxforum.ru/extern.php?action=feed&amp;tid=24833&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Шейпер создаёт много правил в iptables как это сократить?».]]></description>
		<lastBuildDate>Tue, 23 Oct 2012 07:36:32 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Шейпер создаёт много правил в iptables как это сократить?]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=305374#p305374</link>
			<description><![CDATA[<p>У меня такая проблема, есть скрипт шейпера который граничил 300чел. теперь людей стало около 1000 и скрипт засыпает iptables правилами (около 1500!) с которыми он не справляется, а по вечерам загружает процессор на 100%... Помогите как можно сократить правила или оптимизировать?<br />Сервер: Проц. - Xeon 1220, ОЗУ - 8гб<br />Скрипт:</p><div class="codebox"><pre><code>#!/bin/bash
USER_IFACE=&#039;eth1.2 eth1.4 eth1.5 eth1.6 eth1.7 eth1.8 eth1.9&#039;
EXT_IFACE=&#039;eth0&#039;
CONF=&quot;/usr/conf&quot;
DATA=&#039;/usr/conf/unlimit.dat&#039;
UFLAG=&#039;/usr/conf/unlimit.flg&#039;
TCBIN=&#039;/sbin/tc&#039;
IPT=&#039;/usr/local/sbin/iptables&#039;
#
stopp () {
    $IPT -t mangle -F
    for i in $USER_IFACE $EXT_IFACE; do
        ${TCBIN} qdisc del dev $i root &gt;/dev/null 2&gt;&amp;1
    done
}
init () {
    stopp
    for i in $USER_IFACE $EXT_IFACE; do
        ${TCBIN} qdisc add dev $i root handle 1: htb
    done
}
startt () {
    init
    n=3
    cat $DATA | while read ip rate;do
    USER_IFACE=`/sbin/ip -o route get $ip | sed &#039;s/.*dev \(\S*\).*/\1/&#039;`
    ${TCBIN} class add dev $EXT_IFACE parent 1: classid 1:$n htb rate $rate ceil $rate
    ${TCBIN} filter add dev $EXT_IFACE protocol ip parent 1: prio 0 handle $n fw classid 1:$n
    ${TCBIN} qdisc add dev $EXT_IFACE parent 1:$n handle $n: sfq perturb 10
    #$IPT -t mangle -A FORWARD -m set --match-set src_shaper src -s $ip/32 -j MARK --set-mark $n
    $IPT -t mangle -A FORWARD -s $ip/32 -j MARK --set-mark $n
    let n++                            
    ${TCBIN} class add dev $USER_IFACE parent 1: classid 1:$n htb rate $rate ceil $rate
    ${TCBIN} filter add dev $USER_IFACE protocol ip parent 1: prio 0  handle $n fw classid 1:$n
    ${TCBIN} qdisc add dev $USER_IFACE parent 1:$n handle $n: sfq perturb 10
    #$IPT -t mangle -A FORWARD -m set --match-set dst_shaper dst -d $ip/32 -j MARK --set-mark $n
    $IPT -t mangle -A FORWARD -d $ip/32 -j MARK --set-mark $n
    let n++
    done
    if [ -f ${UFLAG} ]; then
         /bin/rm ${UFLAG}
    fi
}
checkk () {
    /usr/bin/md5sum -c $CONF/unlimit.dat.md5 &gt; /dev/null 2&gt;&amp;1
    if [ $? = 0 ]
    then
    echo `date`\ Список\ не\ изменился\ шейпер\ не\ запускаеться... &gt;&gt; /var/log/messages
    else
    echo `date`\ Список\ изменился\ шейпер\ запускаеться... &gt;&gt; /var/log/messages
    /usr/bin/md5sum /usr/local/accnt/conf/unlimit.dat &gt; /usr/local/accnt/conf/unlimit.dat.md5
    startt
    fi
}
showw () {
    for i in $USER_IFACE $EXT_IFACE; do
        echo --== $i ==-- --== $i ==-- --== $i ==-- --== $i ==--
        ${TCBIN} qdisc show dev $i
        echo =Classes= =Classes= =Classes= =Classes=
        ${TCBIN} class show dev $i
        echo =Filters= =Filters= =Filters= =Filters=
        ${TCBIN} filter show dev $i
    done
}
case $1 in
        start)
                startt
        ;;
        check)
                checkk
        ;;
        stop)
                stopp
        ;;
        show)
                showw
        ;;
        *)
          echo &quot;Usage: {start|stop|show|check}&quot;
          exit 1
esac</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (DECAL)]]></author>
			<pubDate>Tue, 23 Oct 2012 07:36:32 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=305374#p305374</guid>
		</item>
	</channel>
</rss>
