<?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>Projekt V-Smart &#187; Load Balancing</title>
	<atom:link href="http://www.v-smart.pl/tag/load-balancing/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.v-smart.pl</link>
	<description>Zaplecze linuxowe do systemu LMS</description>
	<lastBuildDate>Wed, 24 Sep 2014 14:33:37 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.2.39</generator>
	<item>
		<title>LMS Router &#8211; dwa łącza WAN w trybie load balancing, sterowania usługami oraz ruchem IP z LAN</title>
		<link>http://www.v-smart.pl/routery-linuxowe/lms-router-dwa-lacza-multi-wan-uslugi-load-balancing/</link>
		<comments>http://www.v-smart.pl/routery-linuxowe/lms-router-dwa-lacza-multi-wan-uslugi-load-balancing/#comments</comments>
		<pubDate>Sat, 15 Jan 2011 09:21:29 +0000</pubDate>
		<dc:creator><![CDATA[yarzombo]]></dc:creator>
				<category><![CDATA[Routery linuxowe]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[IProute]]></category>
		<category><![CDATA[Iptables]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[LMS]]></category>
		<category><![CDATA[Load Balancing]]></category>
		<category><![CDATA[Routing IP]]></category>

		<guid isPermaLink="false">http://www.v-smart.pl/?p=246</guid>
		<description><![CDATA[Temat dość często poruszany wśród adminów, którzy obsługują małe sieci lokalne, gdzie trzeba męczyć się z DSLami. Jest to również temat, o który Wy (użytkownicy moich rozwiązań) pytacie w komentarzach na tym blogu. Zatem spróbujmy powolutku wyjaśnić o co w tym tak na prawdę kaman. Omówimy tutaj trzy podstawowe możliwości obsługi dwóch lub więcej łączy [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Temat dość często poruszany wśród adminów, którzy obsługują małe sieci lokalne, gdzie trzeba męczyć się z DSLami. Jest to również temat, o który Wy (użytkownicy moich rozwiązań) pytacie w komentarzach na tym blogu. Zatem spróbujmy powolutku wyjaśnić o co w tym tak na prawdę kaman. Omówimy tutaj trzy podstawowe możliwości obsługi dwóch lub więcej łączy WAN.<span id="more-246"></span></p>
<p><span style="color: #ff0000;">Opis znajdujący się poniżej operuje na jednej dodatkowej tabeli routingu. Lepsze podejście znajdziecie na </span><a title="LoadBalancing i MultiWAN" href="http://forum.v-smart.pl/viewtopic.php?t=346">forum (klik)</a>.</p>
<p>Dla uproszczenia sprawy obczajmy najpierw system do zarządzania routerem w wersji podstawowej, którego w miarę pełny i aktualizowany na bieżąco <a href="http://www.v-smart.pl/routery-linuxowe/htb-linux-router-dhcp-podzial-pasma-lms-faktury/">opis znajdziecie tutaj (kliknij)</a>. Po instalacji powinniśmy mieć dwie karty sieciowe w kompie czyli 1xWAN i 1xLAN. Następnie dokładamy kolejny interfejs (karta sieciowa, śledzik czy jak to tam zwą) do maszynki, który w systemie przyjmie po restarcie nazwę <strong>eth2</strong>. Podczas dalszego pisania bajki o multi-wan będziemy wykonywać następujące kroki niezależnie od oczekiwanego efektu końcowego:</p>
<ul>
<li>przypisanie adresacji IP do nowego łącza WAN oraz utworzenie kolejnego interfejsu IMQ dla HTB</li>
<li>utworzenie tablicy routingu dla nowego łącza (sprawa konieczna absolutnie) oraz reguł routingu opartych o markowanie pakietów/połączeń</li>
<li>ustawienie parametrów NATa dla nowego łącza</li>
<li>ustawienia parametrów HTB czyli dynamicznego podziału ruchu na tym drugim łączu WAN</li>
<li>wreszcie i nareszcie metody sterowania przepływem pakietów poprzez multi-wan.</li>
</ul>
<p>Załóżmy bez większego zastanowienia, że drugie łącze ma następującą adresację IP:</p>
<p>ADRES IPv4: <strong>89.10.11.12</strong><br />
MASKA PODSIECI: <strong>255.255.255.240</strong> (<strong>/28</strong>)<br />
ADRES IP SIECI: <strong>89.10.11.0/28</strong><br />
ADRES BRAMY DOMYŚLNEJ: <strong>89.10.11.1</strong><br />
ADRES BROADCAST (ROZGŁOSZENIOWY): <strong>89.10.11.15</strong></p>
<p>Załóżmy też, że podłączyłeś kabel sieciowy do <strong>eth2</strong> <img src="http://s.w.org/images/core/emoji/72x72/1f61b.png" alt="😛" class="wp-smiley" style="height: 1em; max-height: 1em;" /> No to jedziemy z tym.</p>
<p><span style="text-decoration: underline;">1. Przypisanie adresacji IP do nowego łącza WAN</span></p>
<p>W pliku /etc/modules zamieniamy wpis "imq numdevs=3" na</p>
<p style="padding-left: 30px;">imq numdevs=4</p>
<p>W pliku /etc/rc.local dopisujemy pod "/usr/sbin/ip link set eth1" up następujące dwie linijki:</p>
<p style="padding-left: 30px;">/usr/sbin/ip a a <strong>89.10.11.12</strong>/<strong>28</strong> brd <strong>89.10.11.15</strong> dev <strong>eth2</strong><br />
/usr/sbin/ip link set <strong>eth2</strong> up</p>
<p><span style="text-decoration: underline;">2. Utworzenie tablicy routingu dla nowego łącza</span></p>
<p>W pliku /etc/iproute2/rt_tables na końcu dopisujemy numer oraz nazwę nowej tabeli routingu:</p>
<p style="padding-left: 30px;">200 wan2</p>
<p>Następnie znów w pliku /etc/rc.local po wpisie z pkt. 1 dopisujemy trasy dla tej tabeli oraz reguły dla niej. Musimy wbić do głowy linuksowi, że jeśli będzie korzystał z nowej tabeli routingu <strong>wan2</strong> to musi wiedzieć, w jaki sposób obsłużyć ruch do każdej podsieci LAN z dostępem do Internetu, skonfigurowanej na routerze. Domyślnie na routerze skonfigurowana jest podsieć <strong><span style="color: #339966;">192.168.100.0/24</span></strong> z bramą <strong><span style="color: #339966;">192.168.100.254</span></strong> na interfejsie <strong><span style="color: #339966;">eth1</span></strong>. Jeśli dodałeś/łaś więcej podsieci LAN - musisz je tutaj również dopisać. Dodatkowo występuję znacznik pakietu <span style="color: #ff0000;"><strong>0x1</strong></span>, który będzie dalej wykorzystywany w firewallu do oznaczania ruchu.</p>
<p style="padding-left: 30px;"><span style="color: #0000ff;"># trasy dla tabeli wan2</span><br />
/usr/sbin/ip ro a table <strong>wan2</strong> <strong>89.10.11.0/28</strong> dev <strong>eth2</strong> src <strong>89.10.11.12</strong><br />
/usr/sbin/ip ro a table <strong>wan2</strong> <strong><span style="color: #339966;">192.168.100.0/24</span></strong> dev <strong><span style="color: #339966;">eth1</span></strong> src <strong><span style="color: #339966;">192.168.100.254</span></strong><br />
<span style="color: #0000ff;"># trasa domyslna dla tabeli wan2</span><br />
/usr/sbin/ip ro a table <strong>wan2</strong> default via <strong>89.10.11.1</strong><br />
<span style="color: #0000ff;"># regula zwrotna dla podsieci na wan2</span><br />
/usr/sbin/ip ru a from <strong>89.10.11.0/28</strong> table <strong>wan2</strong><br />
<span style="color: #0000ff;"># przypisanie znacznika (marka) pakietow dla tej tabeli</span><br />
/usr/sbin/ip ru a fwmark <span style="color: #ff0000;"><strong>0x1</strong> </span>table <strong>wan2</strong></p>
<p>Ponieważ każde połączenie PPP (zarówno PPPoE jaki i PPtP) dodaje swoja własną trasę do domyślnej tablicy routingu, musimy je zmusić do dodania jej także do tablicy dla drugiego łącza. W tym celu do pliku /etc/ppp/ip-up dopisujemy następująca linijkę:</p>
<p style="padding-left: 30px;">/usr/sbin/ip r a table <strong>wan2</strong> ${5} dev ${1}</p>
<p>oraz do pliku /etc/ppp/ip-down podobną (ale nie taką samą!):</p>
<p style="padding-left: 30px;">/usr/sbin/ip r d table <strong>wan2</strong> ${5} dev ${1}</p>
<p><span style="text-decoration: underline;">3. Ustawienie parametrów NATa dla nowego łącza</span></p>
<p>Najpierw dla porządku dodajmy co nieco do pliku /serwer/serwer.conf w miejscu według uznania:</p>
<p style="padding-left: 30px;"><span style="color: #ff0000;">EXTDEV2</span>=eth2<br />
<span style="color: #0000ff;">DOWNLOAD2</span>=2000<br />
<span style="color: #0000ff;">UPLOAD2</span>=500</p>
<p>Następnie do pliku /serwer/skrypty/nat.sh w sekcji "# MASKARADA dla wszystkiego" dopisujemy:</p>
<p style="padding-left: 30px;">$IPTABLES -t nat -A POSTROUTING -s $INTNET1 -o $<span style="color: #ff0000;">EXTDEV2</span> -j MASQUERADE<br />
$IPTABLES -t nat -A POSTROUTING -s $NOWI -o $<span style="color: #ff0000;">EXTDEV2</span> -j MASQUERADE</p>
<p><span style="text-decoration: underline;">4. Ustawienia parametrów HTB dla drugiego łącza WAN</span></p>
<p>W pliku /serwer/skrypty/mangle.sh dopisujemy w sekcji "# podniesienie IMQ" następującą linijkę:</p>
<p style="padding-left: 30px;">$IP link set <strong><span style="color: #993300;">imq3</span></strong> up</p>
<p>oraz w sekcji "# ruch przez IMQ" linijkę:</p>
<p style="padding-left: 30px;">$IPTABLES -t mangle -A PREROUTING -i $<span style="color: #ff0000;">EXTDEV2</span> -j IMQ --todev <span style="color: #993300;"><strong>3</strong></span></p>
<p>Następnie w pliku /serwer/skrypty/htbwan.sh w sekcji "# czyszczenie kolejek" dodajemy:</p>
<p style="padding-left: 30px;">$TC qdisc del root dev <strong><span style="color: #993300;">imq3</span></strong> 2&gt; /dev/null &gt; /dev/null<br />
$TC qdisc del root dev $<span style="color: #ff0000;">EXTDEV2</span> 2&gt; /dev/null &gt; /dev/null</p>
<p>oraz poniżej w sekcji "# ograniczenia WAN" doklejamy:</p>
<p style="padding-left: 30px;">htbwan<strong><span style="color: #993300;"> imq3</span></strong> sport ctnatchg $<span style="color: #0000ff;">DOWNLOAD2</span><br />
htbwan $<span style="color: #ff0000;">EXTDEV2</span> dport ctnatchg $<span style="color: #0000ff;">UPLOAD2</span></p>
<p><span style="text-decoration: underline;">Teraz czas na reboot</span>. Po ponownym odpaleniu zabawki powinniśmy mieć już przygotowaną obsługę dwóch łączy WAN. No i teraz zaczynamy ciekawe sprawy <img src="http://s.w.org/images/core/emoji/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><span style="text-decoration: underline;">5. Load balancing pomiędzy dwa łącza</span></p>
<p>Load balancing na poziomie routingu polega na keszowaniu tras. Więc jeśli po restarcie routera jakaś trasa (np do strony v-smart.pl) zostanie raz skeszowania to będzie istnieć do upływu pewnego czasu (nie wiem ile to) lub do restartu maszyny. Otwórz plik:</p>
<p style="padding-left: 30px;">/etc/network/interfaces</p>
<p>Znajdź tam wpis dotyczący "gateway <span style="color: #ff0000;">adres_twojej_bramy</span>". Zakomentuj go znakiem #. Przy okazji jak już tu jesteś to zwróć uwagę co jest napisane w "dns-nameservers". Powinien tu być adres serwera DNS który będzie ogólnodostępny i nie blokowany przez operatorów. W szczególności przez operatorów, od których masz 2 wany <img src="http://s.w.org/images/core/emoji/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Polecam googlowy 8.8.8.8 tutaj wpisać. W przeciwnym wypadku może wystąpić problem z rozwiązywaniem nazw domenowych podczas sterowania ruchem.</p>
<p>Następnie do /etc/rc.local wrzuć gdzieś na samym dole (po podniesieniu interfejsów eth1 i eth2):</p>
<p style="padding-left: 30px;">/usr/sbin/ip r a default scope global nexthop via <span style="color: #ff0000;">adres_twojej_bramy</span> dev eth0 <span style="color: #0000ff;">weight</span> 1 nexthop via <strong>89.10.11.1</strong> dev <strong>eth2</strong> <span style="color: #0000ff;">weight</span> 1</p>
<p>Reebot i gotowe <img src="http://www.v-smart.pl/wp-includes/images/smilies/simple-smile.png" alt=":)" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Masz super load-balancing. Parametr <span style="color: #0000ff;">weight</span> możesz dostosować do stopnia rozłożenia ruchu np 1:2.</p>
<p><span style="text-decoration: underline;">6. Sterowanie usługami oraz ruchem z IP lanowego<br />
</span></p>
<p>Polega na wyrzuceniu ruchu do jakiegoś adresu IP, ruchu od jakiegoś adresu z LAN lub ruchu do jakiegoś portu docelowego (np 80 - www) na drugie łącze. W tym celu do /serwer/skrypty/mangle.sh dopisujemy:</p>
<p style="padding-left: 30px;"># ruch z wybranego IP lanowego po drugim laczu<br />
#$IPTABLES -A PREROUTING -t mangle -s <strong>192.168.100.1</strong> -j MARK --set-mark <span style="color: #ff0000;"><strong>0x1</strong></span></p>
<p style="padding-left: 30px;"># ruch do wybranego adresu docelowego po drugim laczu<br />
#$IPTABLES -A PREROUTING -t mangle -d <strong>195.205.4.134</strong> -j MARK --set-mark <span style="color: #ff0000;"><strong>0x1</strong></span></p>
<p style="padding-left: 30px;"># ruch po wybranym porcie (80) docelowym po drugim laczu<br />
#$IPTABLES -A PREROUTING -t mangle -p tcp --dport <strong>80</strong> -j MARK --set-mark <span style="color: #ff0000;"><strong>0x1</strong></span></p>
<p>Nastepnie odpalamy skrypcik: /serwer/start_all i powinno działać <img src="http://s.w.org/images/core/emoji/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.v-smart.pl/routery-linuxowe/lms-router-dwa-lacza-multi-wan-uslugi-load-balancing/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
	</channel>
</rss>
