<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Lucifer&#039;s sandbox &#187; htb</title>
	<atom:link href="http://www.anavaro.com/blog/tag/htb/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.anavaro.com/blog</link>
	<description>Where the devil plays</description>
	<lastBuildDate>Sun, 18 Jul 2010 10:09:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>qdisc htb &#8230; или лесен за правене shaper</title>
		<link>http://www.anavaro.com/blog/qdisc-htb-%d0%b8%d0%bb%d0%b8-%d0%bb%d0%b5%d1%81%d0%b5%d0%bd-%d0%b7%d0%b0-%d0%bf%d1%80%d0%b0%d0%b2%d0%b5%d0%bd%d0%b5-shaper/</link>
		<comments>http://www.anavaro.com/blog/qdisc-htb-%d0%b8%d0%bb%d0%b8-%d0%bb%d0%b5%d1%81%d0%b5%d0%bd-%d0%b7%d0%b0-%d0%bf%d1%80%d0%b0%d0%b2%d0%b5%d0%bd%d0%b5-shaper/#comments</comments>
		<pubDate>Tue, 12 May 2009 08:56:05 +0000</pubDate>
		<dc:creator>Lucifer</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[PC]]></category>
		<category><![CDATA[geek time]]></category>
		<category><![CDATA[htb]]></category>
		<category><![CDATA[qdisc]]></category>
		<category><![CDATA[shaper]]></category>

		<guid isPermaLink="false">http://www.anavaro.com/blog/?p=225</guid>
		<description><![CDATA[И така &#8230; седя си аз на работа и се чудя как да се боря с големите лоши потребители, които ми заемата канала и не мога да си играя играта и да си точна порното. Ядосвам се! Писна ми да ги забранявам IP по IP. Зачетах се из интернет &#8230; добрия стар чичо Google ме [...]]]></description>
			<content:encoded><![CDATA[
<p>И така &#8230; седя си аз на работа и се чудя как да се боря с големите лоши потребители, които ми заемата канала и не мога да си играя играта и да си точна порното. Ядосвам се! Писна ми да ги забранявам IP по IP. Зачетах се из интернет &#8230; добрия стар чичо Google ме препрати към <a href="lartc.org" target="_blank">lartc.org</a> . Изтеглих си аз ръководството от там (препоръчвам го н а всички) и се хванах да го прочета. О очудване! То Правенето на shaper не било сложно!</p>
<p>Този shaper работи в моята мрежа. Не твърдя да е сложен, защото нямам нужда да се боря с хакери (потребителите ми са &#8220;многознайковци&#8221; (вие представяте ли си идота който ми се развика защо нямал нет, като се оказа, че сам си е преинсталирал Windows-a  и не е сложил драйвери за дъно и LAN)).</p>
<p>Така, сега по същество:</p>
<p>Конструкция:</p>
<p>Имам 3 LAN мрежи:</p>
<p>192.168.0.0/24 &#8211; локална мрежа за администрацията, най-често използвана за служебни задължения, с изключение на 1 поттребител.</p>
<p>192.168.10.0/24 &#8211; локална мрежа за залата за обучение, която и трябва web, с изключение на 2-те машини зад които седя.</p>
<p>192.168.3.0/24 &#8211; Wi-Fi мрежа за гостите на хотела, която е отворена и безотчетна</p>
<p>Имам 12 Mbit/s biz download на 2Mbit/s upload от приятелите от БТК.</p>
<p>Slackware 12 машинка с 2 LAN карти (WAN и LAN)</p>
<p>Защо HTB?</p>
<p>HTB, ли? Ми защото се пише по-лесно от CBQ, а и в кернела-а на моя комп го има. Няма да ви лъжа, че е по-стабилен или по-напреднал. Аз съм си мързелив. Просто ми е най-лесен.</p>
<p>Лимитации.</p>
<p>За съжаление qdisc не се справя много добре с shape на igress трафик, за това се възползва от опцията на мрежовите протоколи да пращат само колкото бързо можеш да получиш. За това ще работим с egress трафика (изходящия).</p>
<p>Началото.</p>
<blockquote><address>#/bin/sh</address>
<address>WAN=eth1</address>
<address>LAN=eth2</address>
</blockquote>
<p>Дефинираме bash скрипта и дефинираме LAN картите. Тук е мястото тези от вас които си вдигат лан картите или правят специфични настройки като &#8220;ip a a&#8221; да ги направят:</p>
<blockquote><address>ifconfig $LAN 192.168.0.1 netmask 255.255.255.0</address>
<address>ifconfig $LAN:1 192.168.10.1 netmask 255.255.255.0</address>
<address>ifconfig $LAN:2 192.168.3.1 netmask 255.255.255.0</address>
<address>ip a a dev $WAN xx.xx.xx.xx</address>
</blockquote>
<p>Препръчвам да правите всички мрежови настройки преди да започнете да правите shape-а. Започваме с орязване на входящия тряфик. Както казахме, всъщност не можем да го орежем, но можем да ограничим и контролираме изхода от картата към вътрешните мрежи (в случая $LAN).</p>
<blockquote><address>tc qdisc del dev $LAN root</address>
<address>tc qdisc add dev $LAN root handle 1: htb default 30</address>
</blockquote>
<p>Или преведено на човешки &#8211; изтрий всички устройства коит &#8220;висят&#8221; на интерфейс $LAN и добави root &#8220;устройство&#8221; закачено на $LAN с идентификатор 1: и използващо htb (честно казано не знам какво прави default и 30, но си ги търси). Следващата стъпка е да създадем &#8220;правила&#8221; за устрйството.</p>
<blockquote><address>tc class add dev $LAN parent 1: classid 1:1 htb rate 12000kbit ceil 12000kbit burst 15k</address>
<address>tc class add dev $LAN parent 1:1 classid 1:10 htb rate 5000kbit ceil 12000kbit burst 15k prio 1</address>
<address>tc class add dev $LAN parent 1:1 classid 1:20 htb rate 1000kbit ceil 2000kbit burst 15k prio 2</address>
</blockquote>
<p>Обяснявам и тук &#8211; добавяме клас 1:1 с &#8220;родител&#8221; 1: използвайки htb за контрол с минимална скорост 12000 kbit/s (винаги давайте по малки скорости от реалните) и максималан същата. Създаваме 2 &#8220;деца&#8221; на този клас 1:10 и 1:20. Като 1:10 има запазени 5000 kbit/s и максимум от 12000 kbit/s (когато има други клиенти има гарантирани 5000, но когато останалия канал е свободен, може да го ползва целия), 1:20 е с осигурен 1000 kbit/s и максимум от 2000 kbit/s. Сега, нека пратим трафика по класовете &#8211; това става с <em>tc filter</em>.</p>
<blockquote><address>tc filter add dev $LAN protocol ip parent 1: prio 1 u32 match ip dst 192.168.10.0/24 flowid 1:10</address>
<address>tc filter add dev $LAN protocol ip parent 1: prio 1 u32 match ip dst 192.168.0.0/24 flowid 1:10</address>
<address>tc filter add dev $LAN protocol ip parent 1: prio 2 u32 match ip dst 192.168.3.0/24 flowid 1:20</address>
</blockquote>
<p>Използваме така наречените <em>u32 match-</em>ове. В случая изпозлваме <em>ip dst</em> или <em>destination ip</em>. <em>u32</em> позволява да се фитрира по много показатели:</p>
<ul>
<li>dst</li>
<li>src</li>
<li>dport</li>
<li>sport</li>
<li>tos</li>
<li>protcol*</li>
</ul>
<p>*protocol филтъра взима променливите си от /etc/protcols, например ако icmp е 1, то <em>match ip protocol 1 0xff</em></p>
<p>като могат да се правят n на брой комбинации.</p>
<p>И така какво имам до тук? Имаме едно &#8220;дърво&#8221;:</p>
<pre>  1:
   |
  1:1
   /\
  /  \
 |    |
1:10 1:20</pre>
<p>И филтри които да пращат към &#8220;клоните&#8221;. Това е за входящия трафик. Сега да направим същото за изходящия (извинете но тук няма да обяснявам, защото до сега го обясних достатъчно подробно). Та за $WAN интерфейса:</p>
<blockquote><address>tc qdisc del dev $WAN root<br />
tc qdisc add dev $WAN root handle 1: htb default 30<br />
tc class add dev $WAN parent 1: classid 1:1 htb rate 2000kbit ceil 2000kbit burst 15k<br />
tc class add dev $WAN parent 1:1 classid 1:10 htb rate 1000kbit ceil 2000kbit burst 15k prio 1<br />
tc class add dev $WAN parent 1:1 classid 1:20 htb rate 512kbit ceil 1000kbit burst 15k prio 2<br />
tc filter add dev $WAN protocol ip parent 1: prio 1 u32 match ip src 192.168.10.0/24 flowid 1:10<br />
tc filter add dev $WAN protocol ip parent 1: prio 1 u32 match ip src 192.168.0.0/24 flowid 1:10<br />
tc filter add dev $WAN protocol ip parent 1: prio 2 u32 match ip src 192.168.3.0/24 flowid 1:20<br />
</address>
</blockquote>
<p>След този момент вече сте свободни да работите с <em>iptables</em> и да си направите колкото си искате правила за портове и настройки.</p>
<p>Отново подчертавам, че това е една малка и проста конструкция предиведна за SOHO мрежа. Както виждате има и слабо място, но смятам и това да изчистя. Когато го направя ще пиша още.</p>
<p>Ваш,</p>
<p>Lucifer</p>
<p><script type='text/javascript'>
svejo_url='http://www.anavaro.com/blog/qdisc-htb-%D0%B8%D0%BB%D0%B8-%D0%BB%D0%B5%D1%81%D0%B5%D0%BD-%D0%B7%D0%B0-%D0%BF%D1%80%D0%B0%D0%B2%D0%B5%D0%BD%D0%B5-shaper';
svejo_skin='standard';
svejo_theme='black';
</script><br />
<script src='http://svejo.net/javascripts/svejo_button.js' type='text/javascript'></script></p>
<div class="topsy_widget_data topsy_theme_jade" style="float: left;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.anavaro.com%252Fblog%252Fqdisc-htb-%2525d0%2525b8%2525d0%2525bb%2525d0%2525b8-%2525d0%2525bb%2525d0%2525b5%2525d1%252581%2525d0%2525b5%2525d0%2525bd-%2525d0%2525b7%2525d0%2525b0-%2525d0%2525bf%2525d1%252580%2525d0%2525b0%2525d0%2525b2%2525d0%2525b5%2525d0%2525bd%2525d0%2525b5-shaper%252F%22%2C%20%22style%22%3A%20%22small%22%2C%20%22title%22%3A%20%22qdisc%20htb%20...%20%D0%B8%D0%BB%D0%B8%20%D0%BB%D0%B5%D1%81%D0%B5%D0%BD%20%D0%B7%D0%B0%20%D0%BF%D1%80%D0%B0%D0%B2%D0%B5%D0%BD%D0%B5%20shaper%22%20%7D);"></div>

<p><a href="http://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.anavaro.com%2Fblog%2Fqdisc-htb-%25d0%25b8%25d0%25bb%25d0%25b8-%25d0%25bb%25d0%25b5%25d1%2581%25d0%25b5%25d0%25bd-%25d0%25b7%25d0%25b0-%25d0%25bf%25d1%2580%25d0%25b0%25d0%25b2%25d0%25b5%25d0%25bd%25d0%25b5-shaper%2F&amp;linkname=qdisc%20htb%20%26%238230%3B%20%D0%B8%D0%BB%D0%B8%20%D0%BB%D0%B5%D1%81%D0%B5%D0%BD%20%D0%B7%D0%B0%20%D0%BF%D1%80%D0%B0%D0%B2%D0%B5%D0%BD%D0%B5%20shaper" title="Twitter" rel="nofollow" target="_blank"><img src="http://www.anavaro.com/blog/wp-content/plugins/add-to-any/icons/twitter.png" width="16" height="16" alt="Twitter"/></a> <a href="http://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fwww.anavaro.com%2Fblog%2Fqdisc-htb-%25d0%25b8%25d0%25bb%25d0%25b8-%25d0%25bb%25d0%25b5%25d1%2581%25d0%25b5%25d0%25bd-%25d0%25b7%25d0%25b0-%25d0%25bf%25d1%2580%25d0%25b0%25d0%25b2%25d0%25b5%25d0%25bd%25d0%25b5-shaper%2F&amp;linkname=qdisc%20htb%20%26%238230%3B%20%D0%B8%D0%BB%D0%B8%20%D0%BB%D0%B5%D1%81%D0%B5%D0%BD%20%D0%B7%D0%B0%20%D0%BF%D1%80%D0%B0%D0%B2%D0%B5%D0%BD%D0%B5%20shaper" title="Facebook" rel="nofollow" target="_blank"><img src="http://www.anavaro.com/blog/wp-content/plugins/add-to-any/icons/facebook.png" width="16" height="16" alt="Facebook"/></a> <a href="http://www.addtoany.com/add_to/svejo?linkurl=http%3A%2F%2Fwww.anavaro.com%2Fblog%2Fqdisc-htb-%25d0%25b8%25d0%25bb%25d0%25b8-%25d0%25bb%25d0%25b5%25d1%2581%25d0%25b5%25d0%25bd-%25d0%25b7%25d0%25b0-%25d0%25bf%25d1%2580%25d0%25b0%25d0%25b2%25d0%25b5%25d0%25bd%25d0%25b5-shaper%2F&amp;linkname=qdisc%20htb%20%26%238230%3B%20%D0%B8%D0%BB%D0%B8%20%D0%BB%D0%B5%D1%81%D0%B5%D0%BD%20%D0%B7%D0%B0%20%D0%BF%D1%80%D0%B0%D0%B2%D0%B5%D0%BD%D0%B5%20shaper" title="Svejo" rel="nofollow" target="_blank"><img src="http://www.anavaro.com/blog/wp-content/plugins/add-to-any/icons/svejo.png" width="16" height="16" alt="Svejo"/></a> <a href="http://www.addtoany.com/add_to/google_reader?linkurl=http%3A%2F%2Fwww.anavaro.com%2Fblog%2Fqdisc-htb-%25d0%25b8%25d0%25bb%25d0%25b8-%25d0%25bb%25d0%25b5%25d1%2581%25d0%25b5%25d0%25bd-%25d0%25b7%25d0%25b0-%25d0%25bf%25d1%2580%25d0%25b0%25d0%25b2%25d0%25b5%25d0%25bd%25d0%25b5-shaper%2F&amp;linkname=qdisc%20htb%20%26%238230%3B%20%D0%B8%D0%BB%D0%B8%20%D0%BB%D0%B5%D1%81%D0%B5%D0%BD%20%D0%B7%D0%B0%20%D0%BF%D1%80%D0%B0%D0%B2%D0%B5%D0%BD%D0%B5%20shaper" title="Google Reader" rel="nofollow" target="_blank"><img src="http://www.anavaro.com/blog/wp-content/plugins/add-to-any/icons/reader.png" width="16" height="16" alt="Google Reader"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save">Сподели</a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.anavaro.com/blog/qdisc-htb-%d0%b8%d0%bb%d0%b8-%d0%bb%d0%b5%d1%81%d0%b5%d0%bd-%d0%b7%d0%b0-%d0%bf%d1%80%d0%b0%d0%b2%d0%b5%d0%bd%d0%b5-shaper/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
