<?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; Routery linuxowe</title>
	<atom:link href="http://www.v-smart.pl/category/routery-linuxowe/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>Linux Router Debian, podział pasma HTB, LMS, Load-Balancing, PPPoE, PPtP w 10min</title>
		<link>http://www.v-smart.pl/routery-linuxowe/htb-linux-router-dhcp-podzial-pasma-lms-faktury/</link>
		<comments>http://www.v-smart.pl/routery-linuxowe/htb-linux-router-dhcp-podzial-pasma-lms-faktury/#comments</comments>
		<pubDate>Sat, 15 Jan 2011 15:31:18 +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[Kernel]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[LMS]]></category>
		<category><![CDATA[PPPoE]]></category>
		<category><![CDATA[PPtP (vpn)]]></category>
		<category><![CDATA[Router]]></category>

		<guid isPermaLink="false">http://www.v-smart.pl/?p=120</guid>
		<description><![CDATA[Z doświadczenia wiemy, że każdy admin jest leniwy (ja też). Skoro już ruszył szanowne 4 literki w celu znalezienia czegoś u wuja Googla to chce osiągnąć swój super-cel szybko i najlepiej kilkoma klikami. A proszę bardzo. Instalacja nie jest skomplikowana. Uważam, że jeśli nigdy nie zajmowałeś / zajmowałaś się linuxami a masz jakikolwiek blade pojęcie [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Z doświadczenia wiemy, że każdy admin jest leniwy (ja też). Skoro już ruszył szanowne 4 literki w celu znalezienia czegoś u wuja Googla to chce osiągnąć swój super-cel szybko i najlepiej kilkoma klikami. A proszę bardzo. Instalacja nie jest skomplikowana. Uważam, że jeśli nigdy nie zajmowałeś / zajmowałaś się linuxami a masz jakikolwiek blade pojęcie o działaniu sieci komputerowych to poradzisz sobie z instalacją tego wszystkiego.<span style="color: #ff0000;"><br style="color: #ff0000;" /></span></p>
<p><span style="color: #ff0000;"> Aktualizacja paczek: 26.05.2012 (dzień Matki :D) <span style="color: #000000;">- <a href="http://www.v-smart.pl/routery-linuxowe/lms-router-lista-zmian/">zobacz listę zmian (kliknij)</a></span></span><span id="more-120"></span></p>
<p>Jeśli szukasz odpowiedzi na jakieś pytanie to <a href="http://www.v-smart.pl/routery-linuxowe/lms-router-pytania-i-odpowiedzi-czyli-faq/">zajrzyj do FAQ (kliknij)</a> lub na <a href="http://forum.v-smart.pl">forum dyskusyjne (kliknij)</a> zanim mi je zadasz <img src="http://www.v-smart.pl/wp-includes/images/smilies/simple-smile.png" alt=":)" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Jeśli chcesz przejść dalej musisz najpierw wbić sobie do głowy, że potrafisz:</p>
<ul>
<li>zainstalować Debiana 6 (squeeze) w wersji netinstall</li>
<li>sprawdzić czy adres IP, który masz umożliwi Ci dostęp do Internetu</li>
<li>czytać i postępować tak jak  jest tu napisane :]</li>
</ul>
<p><strong><span style="text-decoration: underline;">KROK 1 - Ala ma komputer</span></strong></p>
<p>Wymagania co do komputera są proste. Po pierwsze musi mieć twardy dysk, CD-ROM, koło 256MB RAM oraz działać po włączeniu zasilania oraz musi umieć zbootować się z płytki CD. Upewnij się, że posiadasz zamontowane dwie karty sieciowe. Jeśli masz sieć powyżej 50 użytkowników - zainteresuj się komputerem z 2 corami oraz przynajmniej 1 GB ramu.</p>
<p><span style="text-decoration: underline;"><strong>KROK 2 - Komputer ma linuxa</strong></span></p>
<p>Na początku przygotuj sobie adresację IP (adres, maska, brama, dns), na której będziesz miał dostęp do Internetu. Zainstaluj Debiana 6 (Squeeze) w wersji <a href="http://download.v-smart.pl/iso/debian-6.0.0-amd64-netinst.iso">amd64 (pobierz)</a> lub <a href="http://download.v-smart.pl/iso/debian-6.0.0-i386-netinst.iso">i386 (pobierz)</a> po wcześniejszym wypaleniu obrazów na CD. Jeśli tylko Twój sprzęt obsługuje wersję 64-bitową - gorąco ją polecam. Podczas instalacji wybierz interfejs <strong>eth0</strong> jako główny oraz wpisz POPRAWNIE adresację tak, aby instalator miał dostęp do Internetu. Ten krok prawdopodobnie powtórzysz kilka razy jeśli nie robiłeś tego wcześniej <img src="http://s.w.org/images/core/emoji/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Przy wyborze oprogramowania zaznacz jedynie "System podstawowy" i "Serwer SSH". Środowisko graficzne, które domyślnie jest zaznaczone nie będzie Ci do niczego potrzebne. Jeśli nie wiesz, co odpowiedzieć na pytania instalatora - wybierz potwierdzenie lub wpisz cokolwiek. Bezpośrednio po instalacji zaloguj się na konto użytkownika <strong>root</strong> z hasłem, które podałeś podczas instalacji oraz wykonaj następujące polecenia:</p>
<p style="padding-left: 30px;">apt-get update &amp;&amp; apt-get upgrade</p>
<p>Jeśli nie masz programu puTTy to ściągnij go <a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html">stąd (kliknij)</a>. Odpal i połącz się poprzez SSH z adresem IP, który podałeś podczas instalacji systemu. W zależności od języka i zestawu znaków (tzw. locales) wybierz odpowiednie kodowanie znaków (ISO-8859-2 lub UTF-8). Jeśli nie wiesz o co chodzi to po zalogowaniu się wpisz po prostu:</p>
<p style="padding-left: 30px;">LANG=</p>
<p>Nie polecam przechodzić do dalszego kroku, dopóki wszystko nie zostało zrobione jak powyżej.</p>
<p><strong><span style="text-decoration: underline;">Krok 3 - Linux ma paczki</span></strong></p>
<p><span style="color: #ff0000;">STOP! Instalatory nadpiszą poprzednią wersję bazy LMSa (klienci itd).<br />
</span></p>
<p><a title="V-Smart 2.1" href="http://forum.v-smart.pl/viewtopic.php?t=608">Kliknij tutaj aby przejść na forum i pobrać adresy skryptów instalacyjnych.</a></p>
<p>Po drodze zostaniesz zapytany o kilka spraw, przez instalatora:</p>
<ul>
<li>zapytanie o pakiet <strong>phpmyadmin</strong> - wybierz apache2 - <span style="color: #ff0000;">UWAGA - wciśnij spację aby zapaliła się gwiazdka przy zaznaczeniu</span> - to najczęściej powtarzany przez Was błąd i mówicie, że nie działa phpmyadmin <img src="http://s.w.org/images/core/emoji/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Jeśli jesteś już po instalacji to wpisz <strong>dpkg-reconfigure phpmyadmin</strong> i powtórz krok.</li>
<li>zapytanie: "Configure database for phpmyadmin with dbconfig-common" - wybierz <strong>NIE</strong></li>
<li>zapytanie o serwer <strong>mysql </strong>- <span style="color: #ff6600;"><span style="color: #ff0000;">zapisz na kartce hasł</span>o</span> - będzie Ci potrzebne za chwilę ponownie!</li>
<li>zapytanie o serwer <strong>postfix </strong>- wybierz Internet Site</li>
<li><strong>cała reszta</strong> pytań - odpowiadasz TAK lub DALEJ <img src="http://www.v-smart.pl/wp-includes/images/smilies/simple-smile.png" alt=":)" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li>
</ul>
<p>Po zapakowaniu wszystkiego potrzebnego do Twojego komputera system zrobi reboot. Po restarcie maszyny powinieneś mieć gotowy działający router z LMS i zaawansowanym podziałem pasma. W zasadzie jedyne co musisz zmienić to ustawienia parametrów Twojego łącza WAN (DOWNLOAD i UPLOAD - teraz też dodatkowe nocne dla WAN) w pliku:</p>
<p>/serwer/serwer.conf</p>
<p>Hasło do LMS ustawisz sobie podczas pierwszego logowania się w przeglądarce po adresem:</p>
<p>http://adres_ip_routera</p>
<p>Instalator wygeneruje losowe hasło do bazy danych zatem nie ma potrzeby jego zmiany.</p>
<p><strong><span style="text-decoration: underline;">Krok 4 - Uwagi do bajki</span></strong></p>
<p>Router posiada następującą funkcjonalność:</p>
<ul>
<li>dynamiczny podział pasma na WAN za pomocą IMQ na HTB/esfq z priorytetyzacją usług (plik /serwer/skrypty/htbwan.sh)</li>
<li>statyczny podział pasma dla klientów sieci LAN za pomocą IMQ na HTB/sfq (plik /serwer/skrypty/htblan.sh)</li>
<li>firewall odpowiadający za autoryzację klientów po MAC+IP (plik /serwer/skrypty/firewall.sh)</li>
<li>serwer DHCP dla klientów</li>
<li>serwer DNS dla kientów</li>
<li>serwer PPPoE dla LAN oraz PPtP dla LAN i WAN (dostęp zdalny) - nazwa komputera z LMS to login, hasło to PIN klienta jeśli nie zostało zdefiniowane hasło przy danym komputerze</li>
<li>komunikaty: dla nieautoryzowanych klientów, przypomnienie o płatnościach, blokada dostępu do siec</li>
<li>panel LMS z autorskim demonem do przeładowywania serwera (katalog /var/www)</li>
<li>funkcje LMS: klienci, komputery, sieci, urządzenia sieciowe, mapa sieci, taryfy, faktury, helpdesk, terminarz i inne</li>
<li>userpanel: informacje, faktury i płatności, kontakt poprzez helpdesk z panelem LMS</li>
<li>taryfy nocne dla LAN i WAN <img src="http://s.w.org/images/core/emoji/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li>
<li><span style="color: #0000ff;"><span style="color: #000000;">przekierowania portów poza LMS</span></span></li>
<li><span style="color: #0000ff;"><span style="color: #0000ff;"><span style="color: #000000;"><span style="color: #0000ff;"><span style="color: #000000;"><a href="http://www.v-smart.pl/routery-linuxowe/lms-router-dwa-lacza-multi-wan-uslugi-load-balancing/">obsługa dwóch lub więcej łączy WAN (kliknij)</a> </span></span></span></span></span></li>
<li>serwer przeładowuje konfigurację praktycznie natychmiast po wprowadzeniu zmian w LMS (płynność 2-3 sek)</li>
<li>przykładowe dane konfiguracyjne z opisem</li>
<li>po więcej informacji <a href="http://www.v-smart.pl/routery-linuxowe/lms-router-pytania-i-odpowiedzi-czyli-faq/">zapraszam do FAQ (kliknij)</a></li>
</ul>
<p>Jądro (2.6.34), iptables 1.4.8 oraz iproute zostały załatane patchami kolegi <a href="http://www.linuxbox.pl">DJ Gregora z linuxbox.pl</a>.</p>
<p><span style="color: #c0c0c0;">Wszelkie powyższe materiały i opisy na stronie oraz wypowiedzi autora na forum stanowią jego własność intelektualną. W szczególności skrypty z katalogu /serwer oraz /var/v-smart oraz wszystkie paczki deb. Autor zezwala na używanie powyższych materiałów w sposób komercyjny i niekomercyjny jednak zabrania modyfikowania ich i umieszczania poza stroną v-smart.pl</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.v-smart.pl/routery-linuxowe/htb-linux-router-dhcp-podzial-pasma-lms-faktury/feed/</wfw:commentRss>
		<slash:comments>118</slash:comments>
		</item>
		<item>
		<title>LMS Router &#8211; Lista zmian w projekcie</title>
		<link>http://www.v-smart.pl/routery-linuxowe/lms-router-lista-zmian/</link>
		<comments>http://www.v-smart.pl/routery-linuxowe/lms-router-lista-zmian/#comments</comments>
		<pubDate>Sat, 15 Jan 2011 15:30:47 +0000</pubDate>
		<dc:creator><![CDATA[yarzombo]]></dc:creator>
				<category><![CDATA[Routery linuxowe]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[LMS]]></category>
		<category><![CDATA[Router]]></category>

		<guid isPermaLink="false">http://www.v-smart.pl/?p=211</guid>
		<description><![CDATA[Projekt zaczyna się rozrastać. Fajnie z Waszej strony, że chcecie się tym bawić i tym samym testować moje paczki :). Może w przyszłości powstanie coś na prawdę zajebiaszczego i darmowego w temacie. Może nawet przejmiemy kontrolę nad światem a później wszechświatem 😛 Dobra do rzeczy. Poniżej lista zmian w projekcie wraz z datami. Lista zmian [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Projekt zaczyna się rozrastać. Fajnie z Waszej strony, że chcecie się tym bawić i tym samym testować moje paczki :). Może w przyszłości powstanie coś na prawdę zajebiaszczego i darmowego w temacie. Może nawet przejmiemy kontrolę nad światem a później wszechświatem <img src="http://s.w.org/images/core/emoji/72x72/1f61b.png" alt="😛" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Dobra do rzeczy. Poniżej lista zmian w projekcie wraz z datami.</p>
<p><span id="more-211"></span></p>
<p>Lista zmian dotyczy <a href="http://www.v-smart.pl/routery-linuxowe/htb-linux-router-dhcp-podzial-pasma-lms-faktury/">projektu routera z LMS na Debianie (kliknij)</a>, do którego <a href="http://www.v-smart.pl/routery-linuxowe/lms-router-pytania-i-odpowiedzi-czyli-faq/">FAQ znajdują się tutaj (kliknij)</a>.</p>
<p><span style="text-decoration: underline;">26.05.2012</span></p>
<ul>
<li>wersja 2.1 projektu, <a title="V-Smart 2.1" href="http://forum.v-smart.pl/viewtopic.php?t=608">zajrzyj na forum</a></li>
</ul>
<p><span style="text-decoration: underline;">01.09.2011</span></p>
<ul>
<li>wersja 2.0 projektu, <a title="V-Smart 2.0" href="http://forum.v-smart.pl/viewtopic.php?t=264">zajrzyj na forum</a></li>
</ul>
<p><span style="text-decoration: underline;">07.02.2011</span></p>
<ul>
<li>przystosowanie systemu do Debiana 6 (Squeeze)</li>
<li><a href="http://files.v-smart.pl/router-vsmart-2.6.34/lenny-to-squeeze-upgrade.sh">skrypt robiący upgrade Lenny do Squeeze (kliknij)</a></li>
<li>inne drobne poprawki funkcjonalności LMSa</li>
</ul>
<p><span style="text-decoration: underline;">15.01.2011</span></p>
<ul>
<li><a href="http://www.v-smart.pl/routery-linuxowe/lms-router-dwa-lacza-multi-wan-uslugi-load-balancing/">pożądany artykuł dotyczący dwóch lub więcej łącz WAN (kliknij)</a></li>
</ul>
<p><span style="text-decoration: underline;">12.01.2011</span></p>
<ul>
<li>skrypt do updatu do najnowszej wersji, zachowujący bazę LMSa</li>
<li>skrypcik do przekierowania portów do LAN (poza LMS)</li>
</ul>
<p><span style="text-decoration: underline;">11.01.2011 (fajna data w ogóle)<br />
</span></p>
<ul>
<li>taryfy nocne dla LAN</li>
<li>taryfy nocne dla WAN - tego jeszcze nie grali ale to ma głębsze dno <img src="http://s.w.org/images/core/emoji/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li>
</ul>
<p><span style="text-decoration: underline;">09.01.2011</span></p>
<ul>
<li>uproszczono skrypty w katalogu /serwer</li>
<li>uruchomiono userpanel</li>
<li>uruchomiono możliwość wysyłania SPAMu do klientów LMSa</li>
<li>uruchomiono wymianę informacji helpdesk &lt;-&gt; userpanel</li>
</ul>
<p><span style="text-decoration: underline;">07.01.2011</span></p>
<ul>
<li>obsługa protokołu ppp (PPPoE i PPtP)</li>
<li>jajko 2.6.34, iptables 1.4.8, iproute 2.6.34</li>
<li>dodano trzy rodzaje komunikatów z informacjami dla klientów</li>
<li>dodano automatyczne blokowanie klientów po przekroczeniu określonego ujemnego salda</li>
</ul>
<p><span style="text-decoration: underline;">gdzieś po drodze</span></p>
<ul>
<li>kompilacje i testy nowego jajka 2.6.34</li>
<li>testy mechanizmów ppp (PPPoE, PPtP)</li>
</ul>
<p><span style="text-decoration: underline;">26.08.2010</span></p>
<ul>
<li>pierwsza wersja projektu</li>
<li>jajko 2.6.29.4, iptables 1.4.8, iproute 2.6.30</li>
<li>LMS 1.11 wersja hardcorowa testowa</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.v-smart.pl/routery-linuxowe/lms-router-lista-zmian/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<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>
		<item>
		<title>LMS Router &#8211; Pytania i odpowiedzi czyli FAQ</title>
		<link>http://www.v-smart.pl/routery-linuxowe/lms-router-pytania-i-odpowiedzi-czyli-faq/</link>
		<comments>http://www.v-smart.pl/routery-linuxowe/lms-router-pytania-i-odpowiedzi-czyli-faq/#comments</comments>
		<pubDate>Sat, 08 Jan 2011 09:03:28 +0000</pubDate>
		<dc:creator><![CDATA[yarzombo]]></dc:creator>
				<category><![CDATA[Routery linuxowe]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[LMS]]></category>
		<category><![CDATA[Router]]></category>

		<guid isPermaLink="false">http://www.v-smart.pl/?p=196</guid>
		<description><![CDATA[W tym dziale znajdziemy najczęściej zadawane przez Was pytania i odpowiedzi dotyczące mojej kompilacji LMS z routerem na Debianie, o której mowa była tutaj. Oprócz FAQ przedstawię tu kilka trików, które są moimi dziwnymi pomysłami, jak usprawnić sobie robotę w sieci zarządzanej przez omawiany projekt 😉 Q: Dlaczego klient zawsze ma 512/128 prędkość? Przecież przypisuje [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>W tym dziale znajdziemy najczęściej zadawane przez Was pytania i odpowiedzi dotyczące mojej kompilacji LMS z routerem na Debianie, o której mowa była <a href="http://www.v-smart.pl/routery-linuxowe/htb-linux-router-dhcp-podzial-pasma-lms-faktury/">tutaj</a>. Oprócz FAQ przedstawię tu kilka trików, które są moimi dziwnymi pomysłami, jak usprawnić sobie robotę w sieci zarządzanej przez omawiany projekt <img src="http://s.w.org/images/core/emoji/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><span id="more-196"></span></p>
<p><strong>Q: Dlaczego klient zawsze ma 512/128 prędkość? Przecież przypisuje mu prawidłowe zobowiązanie!</strong></p>
<p>A: Jednak niekoniecznie. <a href="http://files.v-smart.pl/router-vsmart-2.6.34/img/zobowiazanie.png">Zobacz jak to powinno wyglądać klikając tutaj.</a> Musisz wybrać taryfę z prędkością i zaznaczyć komputer klienta oraz fakturę przy zobowiązaniu.</p>
<p><strong>Q: A co z trybem Access Point Client? Jak podłączyć trzech klientów pod jednym adresem MAC?</strong></p>
<p>A: Trochę teorii najpierw. Tryb APC (Intfrastructure Client, Client itd...) polega na tym, że w warstwie trzeciej na poziomie adresów IP apek maskuje rzeczywisty adres MAC klienta, który znajduje się za apekiem. W efekcie do autoryzacji MAC + IP, z jakiej korzysta mój LMS potrzeba MAC apeka a nie klienta. Żeby było trudniej to w warstwie drugiej na poziomie ramek apek nic nie maskuje zatem DHCP zobaczy rzeczywisty MAC komputera klienta (niezamaskowany) znajdującego się za APC. Teraz jak to zrobić w moim LMSie, żeby zadziałało:</p>
<ul>
<li>Osprzęt sieciowy -&gt; Nowe urządzanie: wybierz mu TYP: APC oraz dodaj jakas nazwę, następnie dodaj mu IP oraz jego MAC</li>
<li>Dodaj komputer klienta z jego rzeczywistym adresem MAC oraz wybierz mu punkt podłączenia z listy rozwijanej jako powyżej dodane urzadzenie</li>
<li>I tak możesz dowolną ilość komputerów podłączać do tego samego AP w trybie Client <img src="http://www.v-smart.pl/wp-includes/images/smilies/simple-smile.png" alt=":)" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li>
<li><a href="http://files.v-smart.pl/router-vsmart-2.6.34/img/apc.png">Wyglądać to ma tak (kliknij)</a>.</li>
</ul>
<p>Z trybem APC wiąże się swoista dziura w zabezpieczeniach sieci. Otóż jeśli w LMSie mamy autoryzację na jakiś komputer klienta, który podłączony jest do APc to niezależnie od adresu MAC komputera klienta będzie działać mu net jeśli tylko wpisze poprawny IP ręcznie. <span style="color: #ff0000;">Dlatego dla grup klientów stosuje się tryb WDS, który MACów nie maskuje</span>!</p>
<p><strong>Q: Nie działa mi sprawdzanie czy komputer klienta jest włączony.</strong></p>
<p>A: Wykonaj:</p>
<p style="padding-left: 30px;">apt-get install fping</p>
<p>i zacznie. Chyba, że klient ma firewalla,  który blokuje pingi to nie zacznie.</p>
<p><strong>Q: Dlaczego nie działa mi Webmin po instalacji tego twojego systemu?</strong></p>
<p>A: Wieśmin nie działa ponieważ używa portu 10000 tcp, który jest domyślnie zamknięty przez firewall. Do pliku /serwer/skrypty/firewall.sh należy po sekcji:</p>
<p style="padding-left: 30px;"># autoryzowany dostep tylko z pliku dostep.conf<br />
grep "^[^#]" ${DOSTEP} | while read IP OPIS; do</p>
<p>dopisać następująca linijkę:</p>
<p style="padding-left: 30px;">$IPTABLES -A INPUT -s $IP -m state --state NEW -p tcp --dport 10000 -j ACCEPT</p>
<p>i odpalić ten skrypt. <span style="color: #ff0000;">UWAGA! Nie używajcie firewalla z Wieśmina, ponieważ pogryzie się na 100% z moim. Nie zmieniajcie również adresów IP na interfejsach poprzez niego. Korzystajcie z moich opisów do tego.</span></p>
<p><strong>Q: Jak wyłączyć ograniczenia prędkości w LANie?</strong></p>
<p>A: Rozjaśnijmy trochę sytuację. Cięcie prędkości w LAN występuje jeśli ruch przechodzi przez router. Co za tym idzie, jeśli nie używamy PPPoE to komputery w jednej podsieci w LAN mogą bez ograniczeń prędkości przesyłać dane między sobą. Wynika to z samej zasady działania protokołu IP, który nie potrzebuje bramy domyślnej do komunikacji z hostami w tej samej podsieci. Inaczej wygląda sytuacja, kiedy korzystamy z PPPoE (ruch zawsze idzie przez koncentrator) oraz próbujemy ściągnąć coś lokalnie z routera. W przypadku mojego systemu domyślnie zadziałają tu ograniczenia prędkości z taryf dla klientów. Zanim zaczniemy je wyłączać, sprawdźmy czy faktycznie tak jest. Ściągnijmy i zamontujmy darmowy tester:<br title="free speed test, ping test, voip test" /><script type="text/javascript" src="http://speed-meter.net/js/app.js"></script></p>
<p style="padding-left: 30px;">wget http://www.speedtest.pl/app/speedmini.zip<br />
unzip speedmini.zip -d /var/www/</p>
<p>Możemy go otworzyć przez przeglądarkę spod adresu:</p>
<p style="padding-left: 30px;">http://adres_ip_routera/speedmini</p>
<p>i sprawdzić aktualną prędkość. Powinno być jak pisałem wyżej <img src="http://s.w.org/images/core/emoji/72x72/1f61b.png" alt="😛" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Następnie weźmy sobie na tapetę plik /serwer/skrypty/firewall.sh i znajdźmy w nim linijki:</p>
<p style="padding-left: 30px;">$IPTABLES -t mangle -A <span style="color: #0000ff;">PREROUTING</span> -i $INTDEV1 -j IMQ --todev 1<br />
$IPTABLES -t mangle -A <span style="color: #0000ff;">POSTROUTING</span> -o $INTDEV1 -j IMQ --todev 2<br />
$IPTABLES -t mangle -A <span style="color: #0000ff;">PREROUTING</span> -i ppp+ -j IMQ --todev 1<br />
$IPTABLES -t mangle -A <span style="color: #0000ff;">POSTROUTING</span> -o ppp+ -j IMQ --todev 2</p>
<p>które odpowiadają za kierowanie ruchu z/do interfejsów LAN i ppp do interfejsów IMQ, na których odbywa się LANowy podział pasma. Zmieńmy <span style="color: #0000ff;">PREROUTING</span> i <span style="color: #0000ff;">POSTROUTING</span> na <span style="color: #ff0000;">FORWARD</span>:</p>
<p style="padding-left: 30px;">$IPTABLES -t mangle -A <span style="color: #ff0000;">FORWARD </span>-i $INTDEV1 -j IMQ --todev 1<br />
$IPTABLES -t mangle -A <span style="color: #ff0000;">FORWARD </span>-o $INTDEV1 -j IMQ --todev 2<br />
$IPTABLES -t mangle -A <span style="color: #ff0000;">FORWARD </span>-i ppp+ -j IMQ --todev 1<br />
$IPTABLES -t mangle -A <span style="color: #ff0000;">FORWARD </span>-o ppp+ -j IMQ --todev 2</p>
<p>a następnie odpalmy /serwer/start_all i ograniczenia dla LAN powinny zniknąć.</p>
<p><strong>Q: A co jak mam dwa lub więcej łączy WAN?</strong></p>
<p>A: Dużo roboty. Za dużo żeby opisać w FAQ. Powstał na ten temat <a href="http://www.v-smart.pl/routery-linuxowe/lms-router-dwa-lacza-multi-wan-uslugi-load-balancing/">nowy artykuł (kliknij)</a>.</p>
<p><strong>Q: A jak wygląda sprawa z przekierowaniami portów?</strong></p>
<p>A: Panel LMS nie przewiduje tego w swoim interfejsie a na razie skończył mi się czas na przeróbki. W najnowszej wersji macie pliczek:</p>
<p style="padding-left: 30px;">/serwer/forward.conf</p>
<p>gdzie wpisujecie 3 parametry:</p>
<ul>
<li>port od strony WAN</li>
<li>adres IP w LAN</li>
<li>port od strony LAN</li>
</ul>
<p>Przekierowanie zadziała dla protokołu TCP i UDP.</p>
<p><strong>Q: Jak włączyć logowanie połączeń do sysloga?</strong></p>
<p>A: Należy do pliku:</p>
<p style="padding-left: 30px;">/serwer/skrypty/firewall.sh</p>
<p>dopisać po limitach połączeń następującą linijkę:</p>
<p style="padding-left: 30px;">$IPTABLES -A FORWARD -o $EXTDEV -s $INTNET1 -p tcp -m state --state NEW -j LOG --log-level info --log-prefix "SYN-INTNET1 "</p>
<p>Domyślnie logowanie jest wyłączone bo tak <img src="http://www.v-smart.pl/wp-includes/images/smilies/simple-smile.png" alt=":)" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><strong>Q: Jak ustawić kiedy włącza się taryfa nocna a kiedy dzienna?</strong></p>
<p>A: W pliku /etc/cron.d/vsmart masz wszystko opisane. Wartości prędkości dla lanowych taryf nocnych definiujemy z poziomu panelu LMS. Dla wanowych znajdują się w pliku /serwer/serwer.conf</p>
<p><strong>Q: A jak poradzić sobie w wypadku gdy mamy 3 karty ethernetowe 1WAN +2LAN?</strong></p>
<p>A: Trochę zabawy będzie. Załóżmy, że chcemy na drugim interfejsie o nazwie <strong>eth2</strong> dodać podsieć <strong>192.168.102.0</strong>/<strong>24</strong> z bramą <strong>192.168.102.254</strong>:</p>
<ul>
<li>w panelu LMS: Sieci IP -&gt; Nowa podsieć -&gt; Dodajemy:
<ul>
<li>Nazwa Sieci: <strong>LAN2</strong></li>
<li>Adres sieci: <strong>192.168.102.0</strong> / <strong>24</strong> (256-adresów)</li>
<li>Interfejs: <strong>eth2</strong></li>
<li>Gateway: <strong>192.168.102.254</strong></li>
<li>Serwery DNS: <strong>192.168.102.254</strong>, 8.8.8.8</li>
</ul>
</li>
<li>w panelu LMS: Sieci IP -&gt; Nowa podsieć -&gt; Dodajemy (jeszcze raz):
<ul>
<li>Nazwa Sieci: LAN2-NOWI</li>
<li>Adres sieci: 10.10.11.0 / 24 (256-adresów)</li>
<li>Interfejs: <strong>eth2</strong></li>
<li>Gateway: 10.10.11.254</li>
<li>Serwery DNS: 10.10.11.254<strong> </strong>, 8.8.8.8</li>
<li>Zakres DHCP: 10.10.11.1 do 10.10.11.253</li>
</ul>
</li>
<li>w pliku /etc/rc.local dopisujemy pod wpisem /usr/sbin/ip link set eth1 up<br />
<blockquote><p>/usr/sbin/ip a a <strong>192.168.102.254</strong>/<strong>24</strong> brd <strong>192.168.102</strong>.255 dev <strong>eth2</strong><br />
/usr/sbin/ip a a 10.10.11.254/24 brd 10.10.11.255 dev <strong>eth2</strong><br />
/usr/sbin/ip link set <strong>eth2</strong></p></blockquote>
</li>
<li>w pliku /etc/rc.local dopisujemy na samym dole:<br />
<blockquote><p>/usr/sbin/pppoe-server -I <strong>eth2</strong> -L <strong>192.168.102.254</strong> -N 1000 -k</p></blockquote>
</li>
<li>w pliku /serwer/serwer.conf dopisujemy w sekcji # interfejs(y) LAN:<br />
<blockquote><p>INTDEV2=<strong>eth2</strong><br />
INTNET2=<strong>192.168.102.0</strong>/<strong>24</strong></p></blockquote>
</li>
<li>w pliku /serwer/serwer.conf dopisujemy w sekcji #nieautoryzowani klienci:<br />
<blockquote><p>NOWI2=10.10.11.0/24</p></blockquote>
</li>
<li>w pliku /serwer/skrypty/firewall.sh oraz /serwer/skrypty/nat.sh znajdujemy wszystkie wpisy zawierające zmienne <span style="color: #0000ff;">$INTDEV1</span>, <span style="color: #0000ff;">$INTNET1</span> oraz <span style="color: #0000ff;">$NOWI</span> a następnie kopiujemy je poniżej miejsca, gdzie występują i zmieniamy odpowiednio na <span style="color: #ff0000;">$INTDEV2</span>, <span style="color: #ff0000;">$INTNET2</span> oraz <span style="color: #ff0000;">$NOWI2</span> np:<br />
<blockquote><p>$IPTABLES -t mangle -A PREROUTING -i <span style="color: #0000ff;">$INTDEV1</span> -j IMQ --todev 1<br />
$IPTABLES -t mangle -A POSTROUTING -o <span style="color: #0000ff;">$INTDEV1</span> -j IMQ --todev 2<br />
$IPTABLES -t mangle -A PREROUTING -i <span style="color: #ff0000;">$INTDEV2</span> -j IMQ --todev 1<br />
$IPTABLES -t mangle -A POSTROUTING -o <span style="color: #ff0000;">$INTDEV2</span> -j IMQ --todev 2</p>
<p>$IPTABLES -A INPUT -s <span style="color: #0000ff;">$INTNET1</span> -m state --state NEW -p tcp --sport 1024: --dport 53 -j ACCEPT<br />
$IPTABLES -A INPUT -s <span style="color: #ff0000;">$INTNET2</span> -m state --state NEW -p udp --sport 1024: --dport 53 -j ACCEPT</p>
<p>$IPTABLES -t nat -A POSTROUTING -s <span style="color: #0000ff;">$NOWI</span> -o $EXTDEV -j MASQUERADE<br />
$IPTABLES -t nat -A POSTROUTING -s <span style="color: #ff0000;">$NOWI2</span> -o $EXTDEV -j MASQUERADE</p>
<p>itd...</p></blockquote>
</li>
<li>do /serwer/skrypty/firewall.sh pod linią $IPTABLES -A FORWARD -m state --state invalid -j DROP dopisujemy<br />
<blockquote><p>$IPTABLES -A FORWARD ! -o ${EXTDEV} -j ACCEPT</p></blockquote>
</li>
<li>następnie reboot i powinno działać <img src="http://www.v-smart.pl/wp-includes/images/smilies/simple-smile.png" alt=":)" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li>
</ul>
<p><strong>Q: Ile waży router po pełnej instalacji?</strong></p>
<p>A: Zależy od wagi zastosowanego komputera. Myślę, ze od 1 kg do 100 kg. Natomiast dane na dysku zajmują 1.3 GB hehe.</p>
<p><strong>Q: A co z limitami ilości połączeń TCP dla userów? Jest coś takiego?</strong></p>
<p>A: Jest. W /serwer/serwer.conf zmienna CONNLIMIT odpowiada za to. Domyślnie to 100 na głowę.</p>
<p><strong>Q: Jak zmienić dane sprzedawcy na fakturze?</strong></p>
<p>A: Ostatni raz na takie pytania odpowiadam. Od tego macie <a href="http://lms.rulez.pl/doc/index.html">manual LMSa</a>. A więc: Konfiguracja -&gt; Firmy i odpowiednia edycja danych.</p>
<p><strong>Q: Jak zrobić aby user po podłączeniu do sieci dostał komunikat o braku autoryzacji a następnie po połączeniu PPPoE otrzymał dostęp do Internetu?</strong></p>
<p>A: Należy komputerowi klienta wpisać następujący adres MAC: 00:00:00:00:00:00 (trudny nie? :P). Klient wtedy otrzyma autoryzację tylko dla PPPoE natomiast TCP/IP będzie niedostępne dla jego adresu IP oraz wykluczone z DHCP.</p>
<p><strong>Q: W jaki sposób mogę zmienić tę beznadziejną adresację 192.168.100.x i 192.168.101.x dla LAN?</strong></p>
<p>A: Trzeba wykonać kilka kroków aby zmienić te adresacje:</p>
<ol>
<li>/etc/rc.local - modyfikujemy wpisy odnośnie dodawania adresów IP na interfejs eth1</li>
<li>/serwer/serwer.conf - to samo co wyżej</li>
<li>/serwer/skrypty/nat.sh - zmieniamy 192.168.100.254 na nowy adres bramy dla klientów</li>
<li>/etc/pptpd.conf - tak jak wyżej</li>
<li>w panelu LMS: Sieci IP -&gt; lista a następnie wykonujemy modyfikacje podsieci</li>
<li>reboot i powinno działać</li>
</ol>
<p>W przyszłości dorobię automatyczną synchronizację adresacji z LMSem <img src="http://www.v-smart.pl/wp-includes/images/smilies/simple-smile.png" alt=":)" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><strong>Q: Może coś więcej na temat komunikatów dla klientów?</strong></p>
<p>A: Mamy ich 3 rodzaje:</p>
<ul>
<li>Komunikat dla nowych klientów - pojawia się tylko w przypadku korzystania z protokołu TCP/IP (nie PPPoE, nie PPtP). Jest uruchomiony poprzez Apache na porcie nr 202. Polega na wykonaniu nata docelowego (DNAT) dla portu nr 80 oraz sieci źródłowej 10.10.10.0/24 na socket 192.168.100.254:202. W efekcie nowy klient widzi w przeglądarce powitanko.</li>
<li>Przypomnienie o płatnościach - pojawia się w przypadku załączenia żółtego trójkąta przy komputerze klienta w LMS. Chodzi na porcie nr 200. W momencie włączenia przez klienta przeglądarki, widzi on przypomnienie, które w tle ściąga mu blokadę. Komunikat wyświetla się raz na określony czas, który można zmienić w pliku: /etc/cron.d/vsmart. Domyślnie jest 1 */3 * * * co oznacza "załączaj co 3 godziny w pierwszej minucie tej godziny". Polega na wykonaniu nata docelowego (DNAT) dla portu nr 80 oraz adresu IP klienta na socket 192.168.100.254:200.</li>
<li>Całkowita blokada klienta - pojawia się, kiedy klient ma wyłączoną żarówkę przy komputerze w LMS (tzw. komputer odłączony). Port 201. Klient ma zablokowane wszystkie usługi - widzi tylko komunikat i nie ma możliwości samodzielnego odblokowania. Polega na wykonaniu nata docelowego (DNAT) dla portu nr 80 oraz adresu IP klienta na socket 192.168.100.254:201.</li>
</ul>
<p><strong>Q: Jak modyfikować treść komunikatów dla klientów?</strong></p>
<p>A: Musisz wiedzieć cokolwiek o HTML. Komunikaty znajdują się w następujących miejscach:</p>
<ul>
<li>Komunikat dla nowych klientów: /var/www/info/202/index.php</li>
<li>Przypomnienie o płatnościach: /var/www/info/200/index.php (nie wywalać iframe bo przestanie działać odblokowywanie!)</li>
<li>Całkowita blokada klienta: /var/www/info/201/index.php</li>
</ul>
<p><span style="color: #ff0000;">Pamiętaj! Przed modyfikacjami zrób backup modyfikowanych skryptów!</span></p>
<p><strong><span style="color: #ff0000;"><span style="color: #000000;">Q: Jak działa dynamiczny podział pasma od strony WAN?</span></span></strong></p>
<p><span style="color: #ff0000;"><span style="color: #000000;">A: Normalnie <img src="http://www.v-smart.pl/wp-includes/images/smilies/simple-smile.png" alt=":)" class="wp-smiley" style="height: 1em; max-height: 1em;" /> W skrypcie /serwer/skrypty/htbwan.sh mamy 7 kolejek (podano od najwyższego priorytetu):</span></span></p>
<ul>
<li><span style="color: #ff0000;"><span style="color: #000000;">classid 1:2 - waga 15% - ack, icmp, sip-sygnalizacja<br />
</span></span></li>
<li>classid 1:3 - waga 30% - ssh, gg, vnc, vpn, https</li>
<li>classid 1:4 - waga 30% - smtp, smtps, http, pop3, pop3s, imap, shoutcast</li>
<li>classid 1:5 - waga 10% - http-video, ftp</li>
<li>classid 1:6 - waga 10% - klasa domyślna - wszystko co, nie sklasyfikowane</li>
<li>classid 1:7 - waga 5% - p2p złapane za pomocą layer-7</li>
</ul>
<p>Wagi są ważne, gdy prędkość na interfejsie WAN osiąga to, co mamy wpisane w /serwer/serwer.conf. Wtedy dopiero tak na prawdę zaczyna działać kolejkowanie. Do kolejkowania zastosowałem mechanizm HTB oraz ESFQ, który korzysta z conntracka. Efekt jest taki, że mechanizm potrafi rozłożyć równo ruch pomiędzy adresami IP w LAN. Nie ważna jest ilość połączeń od/do danego adres IP w LAN tak jak to było w standardowych SFQ. Działanie mechanizmu można podejrzeć uruchamiając skrypty:</p>
<p style="padding-left: 30px;">/serwer/diagnostyka/wan-down</p>
<p style="padding-left: 30px;">/serwer/diagnostyka/wan-up</p>
<p><strong>Q: Jak działa podział pasma per klient od strony LAN?</strong></p>
<p>A: Również normalnie <img src="http://s.w.org/images/core/emoji/72x72/1f61b.png" alt="😛" class="wp-smiley" style="height: 1em; max-height: 1em;" /> W skrypcie /serwer/skrypty/htblan.sh tworzone są statyczne kolejki z prędkościami dla IP klientów. Działanie mechanizmu można podejrzeć uruchamiając skrypty:</p>
<p style="padding-left: 30px;">/serwer/diagnostyka/lan-down</p>
<p style="padding-left: 30px;">/serwer/diagnostyka/lan-up</p>
<p><strong>Q: Jak zrobić automatyczne załączanie blokad?</strong></p>
<p>A: Jest zrobione, wystarczy dostosować toto do swoich potrzeb.</p>
<p>Na tapetę weźmy znów harmonogram zadań (cron) dla projektu czyli plik: /etc/cron.d/vsmart</p>
<p><span style="text-decoration: underline;">Przypomnienie o płatnościach.</span></p>
<p style="padding-left: 30px;">1 8 20 * *      root    /var/www/bin/lms-blok-light -q</p>
<p>oznacza, ze przypomnienie zostanie załączone o godzinie 8:01 20-go dnia miesiąca. Zaglądając do powyższego skryptu znajdźmy wpis:</p>
<p style="padding-left: 30px;">HAVING balance &lt; 0 AND balance &gt; -100</p>
<p>który mówi nam, że blokadzie podlegają klienci o saldzie ujemnym do -100 PLN.</p>
<p><span style="text-decoration: underline;">Blokada całkowita.</span></p>
<p style="padding-left: 30px;">2 8 27 * *      root    /var/www/bin/lms-blok-hard -q</p>
<p>oznacza, ze przypomnienie zostanie załączone o godzinie 8:02 27-go dnia miesiąca. Zaglądając do powyższego skryptu znajdźmy wpis:</p>
<p style="padding-left: 30px;">HAVING balance &lt;= -100</p>
<p>który mówi nam, że blokadzie podlegają klienci o saldzie ujemnym niższym niż -100 PLN.</p>
<p><strong>Q: Jakie sa parametry połączenia PPPoE oraz PPtP?</strong></p>
<p>A: Następujące są:</p>
<ul>
<li>PPPoE - uwierzytelnianie: chap, mschap lub mschap-v2, kompresja: brak, szyfrowanie: brak</li>
<li>PPtP - uwierzytelnianie: mschap-v2, kompresja: brak, szyfrowanie: mppe-128</li>
</ul>
<p><strong>Q: Jak przydzielić komputerowi prędkość testową, niezależną od zobowiązania?</strong></p>
<p>A: Nie było takiej funkcji w LMS więc zrobiłem to trochę na około. Należy dodać grupę komputera, w opisie której wpisujemy coś w formacie:</p>
<p style="padding-left: 30px;">download/upload</p>
<p>w jednostkach kbps np. <strong>1024/1024</strong>. W szczególności możemy wpisać <strong>0/0</strong> co oznaczać będzie brak limitów prędkości LAN czyli użytkownik będzie korzystał z dynamicznego podziału pasma na WAN. Następnie komputer klienta należy przypisać do takiej grupy. Grupy maja pierwszeństwo nad zobowiązaniami.</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;">
<pre>A jak poradzić sobie w wypadku gdy mamy 3 karty ethernetowy 1WAN +2LANA jak poradzić sobie w wypadku gdy mamy 3 karty ethernetowy 1WAN +2LAN</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.v-smart.pl/routery-linuxowe/lms-router-pytania-i-odpowiedzi-czyli-faq/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>PPPoE, PPtP (VPN Windows-Linux) czyli teoria punktów</title>
		<link>http://www.v-smart.pl/routery-linuxowe/pppoe-pptp-vpn-windows-linux-czyli-teoria-punktow/</link>
		<comments>http://www.v-smart.pl/routery-linuxowe/pppoe-pptp-vpn-windows-linux-czyli-teoria-punktow/#comments</comments>
		<pubDate>Sat, 21 Aug 2010 10:11:59 +0000</pubDate>
		<dc:creator><![CDATA[yarzombo]]></dc:creator>
				<category><![CDATA[Routery linuxowe]]></category>
		<category><![CDATA[Kernel]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PPPoE]]></category>
		<category><![CDATA[PPtP (vpn)]]></category>

		<guid isPermaLink="false">http://www.v-smart.pl/?p=116</guid>
		<description><![CDATA[Co to jest protokół PPP i do czego służy poczytajcie sobie w Wiki. W tym artykule zajmiemy się konkretnymi sprawami z zakresu połączeń punkt-punkt. Wartym uwagi są dwa ich rodzaje, których zrozumienie zajęło mi chwilę czasu. Artykuł nie miałby w ogóle sensu gdyby wszystko to działało po instalacji z paczek (w moim wypadku Debian). Jednak [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Co to jest protokół PPP i do czego służy poczytajcie sobie w Wiki. W tym artykule zajmiemy się konkretnymi sprawami z zakresu połączeń punkt-punkt. Wartym uwagi są dwa ich rodzaje, których zrozumienie zajęło mi chwilę czasu. Artykuł nie miałby w ogóle sensu gdyby wszystko to działało po instalacji z paczek (w moim wypadku Debian). Jednak nie działa więc trzeba wyprostować kilka niejasnych aspektów.<span id="more-116"></span></p>
<p><span style="text-decoration: underline;">Sprawa pierwsza - PPPoE</span></p>
<p>Jeśli jesteś "admin" i masz swoją super-sieć to powinieneś już wiedzieć, że czysty protokół IPv4 oraz związane z nim nierozłącznie adresy IP oraz MAC mają dość poważne wady co do utrzymania bezpieczeństwa sieciowego. Mam na myśli różnego rodzaju podkradanie i podsłuchiwanie transmisji. Mamy do wyboru w zasadzie dwie opcje autoryzacji Twoich użytkowników - albo statycznie wpiszesz im konfigurację w ustawieniach TCP/IP albo podasz im poprzez protokół DHCP (znów patrz Wiki jak  nie wiesz o co kaman). W obu przypadkach aby zapewnić minimalny poziom autoryzacji musisz wklepać na swoim super-firewallu każdą parę IP-MAC. Jest to rozwiązanie dość szybkie i wygodne w realizacji i wdrożeniu. Problem pojawia się, gdy liczba użytkowników Twojej sieci rośnie i pojawia się dość dużo ruchu nadmiarowego wynikającego z natury protokołu IP. Nie wspomnę już o sytuacji, kiedy tzw. "intruz-morderca" będzie chciał skorzystać sobie za darmo z Twojej sieci.</p>
<p>Podkreślmy dobitnie, że nie będę rozklejał się tu nad możliwymi zabezpieczeniami dostępu do sieci (pancerny pancerz na kabel, WEP, WPA, WPA2 itd) ponieważ to działa w troszkę wyższej "warstwie". Tutaj zajmiemy się protokołami transmisyjnymi 2/3 warstwy z modelu OSI (Wiki? :P).</p>
<p>Mamy więc intruza. Intruz podłączył się do sieci firmowej opartej na przełącznikach ponieważ admin zapomniał zamknąć szafki w kiblu, gdzie akurat znajdował się jeden wolny port w switchu. Dość absurdalna sytuacja ale znam głupsze. Intruz nasłuchuje broadcasty latające po sieci (zwłaszcza pakiety ARP) i zapisuje sobie wszystko skrupulatnie. Następnie wykonuje atak "man-in-the-middle" na bramę domyślną w sieci i zbiera dane dostępowe do Naszej-Klaty, skrzynek pocztowych i inne rzeczy, które nie są szyfrowane. Później zmienia swój adres MAC na któryś z podsłuchanych oraz wpisuje odpowiedni IP i co ma po chwili? Dostęp do naszego super-zabezpieczonego Internetu <img src="http://s.w.org/images/core/emoji/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Dobrym lekarstwem na taką sytuację jest zmiana protokołu IP na PPPoE. Zasada działania jest prosta. U nas mamy koncentrator PPPoE natomiast klient aby uzyskać połączenie z siecią musi wpisać login i hasło, który otrzyma od nas. Po autoryzacji klienta zostaje otwarte połączenie punk-punkt między jego komputerem a koncentratorem i generalnie rzecz biorąc - nic innym użytkownikom do tego <img src="http://www.v-smart.pl/wp-includes/images/smilies/simple-smile.png" alt=":)" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Nie ma broadcastów - nie ma możliwości ataków takich jak w IPv4. Pamiętajmy, że klient tak czy inaczej paradoksalnie otrzyma adres IP na swojej końcówce tego połączenia jednak tylko i wyłącznie do celów logicznych.</p>
<p>Można by powiedzieć, że każdorazowe odpalanie połączenia PPPoE po starcie systemu przypomina trochę czasy modemów i sławnych juz 56kbps. Prawda. Ale zawsze można zamontować sobie router, który nawiąże to połączenie u klienta za nas i załatwi tym samym problem klikania w ikonkę połączenia. Swoją drogą za te minimum 100zł, które trzeba by wydać na router wolałbym sobie raz więcej kliknąć <img src="http://s.w.org/images/core/emoji/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Połączenie PPPoE ma też swoje wady. Nie lubi gubienia się ramek a co za tym idzie link do klienta, czy to kablem czy radiem, musi być stabilny. Inaczej zobaczymy sporadyczne DC. Poza tym zalecam stosowanie szyfrowanka MPPE oraz autoryzancji ms-chap-v2 z uwagi na wysoki poziom trudności w połamaniu tego co oczywiście nie znaczy, że nie da się.</p>
<p>UWAGA. Połączenie PPPoE działa tylko w ramach jednego segmentu sieci (bridża) czyli w warstwie drugiej OSI. Każdy router po drodze uniemożliwi nam podłączenie się do koncentratora ponieważ ma on za zadanie właśnie rozdzielić segmenty sieci.</p>
<p><span style="text-decoration: underline;">Protokół PPtP</span></p>
<p>Jest to protokół tunelowy PPP. W tym akurat wypadku oznacza to, że jest zapakowany w protokół warstwy wyższej czyli IPv4. Po co? Wyobraźmy sobie, że mamy super-tajną firmę, w której działa sieć lokalna a dostęp do zasobów serwerów (otoczenie sieciowe, bazy danych itd) ograniczony jest tylko do tej sieci ze względów bezpieczeństwa. Głupotą byłoby narażać nasze bazy danych osobowych na samą możliwość kontaktu ze światem Internetu zewnętrznego prawda? Okej - mamy też pracowników, który dużo podróżują i potrzebują szybki dostęp do baz danych firmy. Nie rozwiążemy tego problemu dopóki, nie wdrożymy dowolnego rozwiązania spod hasła VPN. PPPtP jest jednym z wyjść i jednym z najlepszych i najprostszych jeśli ludzie w naszej firmie korzystają z Windows. Umożliwia użytkownikowi po podaniu loginu, hasła oraz zdalnego serwera (np. bramy w naszej firmie, serwera VPN) wykonanie tunelu do lokalnej sieci poprzez np Internet. Logicznie wyglądałoby to tak, jakby użytkownik znajdował się w sieci lokalnej a fizycznie może być nawet na księżycu (polecam bajkę "Jak ukraść księżyc").</p>
<p><span style="text-decoration: underline;">Instalacja pod Debianem</span></p>
<p>Oprócz paczek z oprogramowaniem dla routera należy doinstalować w systemie (dpkg -i plik.deb) następujące 3 paczki deb, które póki co przekompilowałem na architekturze i386:</p>
<ul>
<li>pppd 2.4.3-1 [<a href="http://files.v-smart.pl/router-vsmart-2.6.34/i386/ppp_2.4.3-v-smart.pl_i386.deb">i386</a>] [<a href="http://files.v-smart.pl/router-vsmart-2.6.34/amd64/ppp_2.4.3-v-smart.pl_amd64.deb">amd64</a>]</li>
<li>pppoe 3.10 [<a href="http://files.v-smart.pl/router-vsmart-2.6.34/i386/pppoe_3.10-v-smart.pl_i386.deb">i386</a>] [<a href="http://files.v-smart.pl/router-vsmart-2.6.34/amd64/pppoe_3.10-v-smart.pl_amd64.deb">amd64</a>]</li>
<li>pptpd 1.3.4 [<a href="http://files.v-smart.pl/router-vsmart-2.6.34/i386/pptpd_1.3.4-v-smart.pl_i386.deb">i386</a>] [<a href="http://files.v-smart.pl/router-vsmart-2.6.34/amd64/pptpd_1.3.4-v-smart.pl_amd64.deb">amd64</a>]</li>
</ul>
<p>Należy zwrócić uwagę na plik z paczki:</p>
<p style="padding-left: 30px;">/etc/ppp/chap-secrets</p>
<p>w którym znajdują się hasła użytkowników. PPPoE serwer uruchamiamy np. następującym poleceniem:</p>
<p style="padding-left: 30px;">/usr/sbin/pppoe-server -I eth1 -L 192.168.1.1 -N 1000 -k</p>
<p>gdzie -I to intefejs, -N maksymalna ilość połączeń, -k parametr oznaczający wsparcie jądra dla PPPoE. Serwer PPtP uruchamiamy wklepując:</p>
<p style="padding-left: 30px;">/usr/local/sbin/pptpd</p>
<p>bez żadnych parametrów. Pamiętajmy aby otworzyć port 1723 ponieważ na nim właśnie słucha PPtP.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.v-smart.pl/routery-linuxowe/pppoe-pptp-vpn-windows-linux-czyli-teoria-punktow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Virtio na dzieciaku</title>
		<link>http://www.v-smart.pl/proxmox/virtio-na-dzieciaku-oraz-htb-hfsc-test/</link>
		<comments>http://www.v-smart.pl/proxmox/virtio-na-dzieciaku-oraz-htb-hfsc-test/#comments</comments>
		<pubDate>Sun, 22 Nov 2009 08:58:55 +0000</pubDate>
		<dc:creator><![CDATA[yarzombo]]></dc:creator>
				<category><![CDATA[Routery linuxowe]]></category>
		<category><![CDATA[Wirtualizacja Proxmox]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Proxmox]]></category>
		<category><![CDATA[Virtio]]></category>
		<category><![CDATA[Wirtualizacja]]></category>

		<guid isPermaLink="false">http://www.v-smart.pl/?p=96</guid>
		<description><![CDATA[To długa noc była. Po wczorajszych sukcesach z odpaleniem routera na Intelowym KVM sprawy poszły dalej. Wzięto pod uwagę następujące fakty: jajko 2.6.24.5 (domyslne smp ze Slacka 12.1) działało mi od dwóch lat na kilkunastu routerach bez kernel panic było ono zmontowane z domyślnego konfiga ze Slacka oraz połatane imq, esfq i layer7 działało również [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>To długa noc była. Po wczorajszych sukcesach z odpaleniem routera na Intelowym KVM sprawy poszły dalej. Wzięto pod uwagę następujące fakty:</p>
<ul>
<li>jajko 2.6.24.5 (domyslne smp ze Slacka 12.1) działało mi od dwóch lat na kilkunastu routerach bez kernel panic</li>
<li>było ono zmontowane z domyślnego konfiga ze Slacka oraz połatane imq, esfq i layer7</li>
<li>działało również pod Debianem bez żadnego "ale" (co w sumie oczywistym jest)</li>
</ul>
<p><span id="more-96"></span></p>
<p>Na warsztat poszedł domyślny konfig jajeczka 2.6.34. Zaciągnięte zostały też vaniliowe źródła z kernel.org oraz patche Dj Gregora z linuxbox.pl. Swoją drogą z tego co zauważyłem Dj jest fanem Slackware (podobnie jak ja kiedyś) więc dziwne by było gdyby nie popełnił patchów dla domyślnego jądra tego systemu. Szacun. Kolejność ataku była następująca:</p>
<ul>
<li>patchowanie</li>
<li>make menuconfig</li>
<li>zapis konfigu i wyjście</li>
<li>make menuconfig</li>
<li>zaznaczenie odpowiednich modułów (IMQ Target, esfq, layer7)</li>
<li>włączenie do jajka modułu Virtio Block Device, Virtio PCI i Virtio Baloon</li>
<li>zapis konfiga</li>
<li>make bzImage modules modules_install</li>
<li>procedura tworzenia paczki (długa historia) z jądrem</li>
<li>kompilacja i paczkowanie iptables, iproute, l7-protocols</li>
</ul>
<p>Efekty - paczki do pobrania: [<a href="http://files.v-smart.pl/router-vsmart-2.6.34/i386/">i386</a>] [<a href="http://files.v-smart.pl/router-vsmart-2.6.34/amd64/">amd64</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.v-smart.pl/proxmox/virtio-na-dzieciaku-oraz-htb-hfsc-test/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Routing na kilka łączy WAN</title>
		<link>http://www.v-smart.pl/routery-linuxowe/routing-na-kilka-laczy-wan/</link>
		<comments>http://www.v-smart.pl/routery-linuxowe/routing-na-kilka-laczy-wan/#comments</comments>
		<pubDate>Sun, 18 Oct 2009 18:05:48 +0000</pubDate>
		<dc:creator><![CDATA[yarzombo]]></dc:creator>
				<category><![CDATA[Routery linuxowe]]></category>

		<guid isPermaLink="false">http://yarzombo.pl/?p=40</guid>
		<description><![CDATA[Okej. A co jeśli jesteśmy biednym małym ISP i musimy sobie radzić z siecią, która stoi na kilku DSLach (czyli asymetrycznych łączach) ? Wtedy stajemy przed rozwiązaniem problemu jak prawidłowo skonfigurować bramę dostępu do Internetu aby mądrze zarządzać ruchem miedzy kilkoma łączami. Nie istotne jest jakie to łącza. Co będzie potrzebne: Dowolna dystrybucja systemu GNU [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Okej. A co jeśli jesteśmy biednym małym ISP i musimy sobie radzić z siecią, która stoi na kilku DSLach (czyli asymetrycznych łączach) ? Wtedy stajemy przed rozwiązaniem problemu jak prawidłowo skonfigurować bramę dostępu do Internetu aby mądrze zarządzać ruchem miedzy kilkoma łączami. Nie istotne jest jakie to łącza.</p>
<p><span id="more-40"></span></p>
<p>Co będzie potrzebne:</p>
<ul>
<li>Dowolna dystrybucja systemu GNU Linux.</li>
<li>Zalecane jądro z serii 2.6.x. Jądro musi mieć wkompilowane następujące opcje w sekcji NETWORKING: IP: Advanced Router, IP: Policy Routing. W sekcji NETFILTER: Connmark. Domyślnie w nowszych dystrybucjach opcje te są już wkompilowane. Jednak w przypadku problemów jest to pierwszy aspekt, który należy sprawdzić.</li>
<li>Zbiór aplikacji iproute2, odpowiedni dla danej wersji jądra.</li>
<li>Filtr pakietów iptables.</li>
</ul>
<p>Słowem - wszystko prócz dystrybucji znajdziecie w projekcie v-smart dla [<a href="http://files.v-smart.pl/router-vsmart-2.6.34/i386/">i386</a>] lub [<a href="http://files.v-smart.pl/router-vsmart-2.6.34/amd64/">amd64</a>] <img src="http://www.v-smart.pl/wp-includes/images/smilies/simple-smile.png" alt=":)" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><span style="text-decoration: underline;">Konfiguracja routingu.</span></p>
<p>Konfiguracja routingu w przypadku podziału ruchu na dwa lub więcej łączy składa się z kilku części. W pierwszej kolejności należy dodać odpowiednie tablice routingu do pliku:</p>
<p style="padding-left: 30px;">/etc/iproute2/rt_tables</p>
<p>Zasada jest taka, że domyślny routing zapisany jest w tablicy o nazwie main z numerem 254. Kolejne wpisy należy dodawać z numerami niżymi np. 200, 201, 202 itd. Przykładowy wpis w powyższym pliku ma format:</p>
<p style="padding-left: 30px;">nr_tablicy	nazwa_tablicy</p>
<p>Następnie w każdej nowo dodanej tablicy routingu należy umieścić identyczne wpisy dotyczące podsieci lokalnych jak w tablicy main, której zawartość odczytać można za pomocą polecenia:</p>
<p style="padding-left: 30px;">ip route list</p>
<p>Dodawanie wpisów do tabeli wykonać można za pomocą polecenia:</p>
<p style="padding-left: 30px;">ip route add table [tablica] [podsiec] dev [interfejs]</p>
<p>Trasa domyślna (ang. default) dla każdej nowo dodanej tabeli przebiega przez inne łącze zatem do każdej należy dodać bramę domyślną następującym poleceniem:</p>
<p style="padding-left: 30px;">ip route add table [tablica] default via [adres_bramy]</p>
<p>Zgodnie z zasadami, które rządzą protokołem TCP/IP, na każdy odebrany przez router pakiet musi zostać wygenerowana odpowiedź. Odpowiedź ta musi wrócić do nadawcy tą samą trasą którą nadeszła. Na obecnym etapie konfiguracji routingu – odpowiedź ta zostanie wysłana poprzez bramę domyślną dla systemu umieszczoną w tablicy main. W konsekwencji – jeśli dowolny pakiet nadejdzie z łącza, dla którego routing określają dodatkowe tablice różne od main – nie zostanie wygenerowana na niego odpowiedź co uniemożliwi dalszą transmisję. Rozwiązaniem tego problemu jest „podpowiedź” dla routera, którędy powinien wysyłać pakiety otrzymane trasą różną od main:</p>
<p style="padding-left: 30px;">ip rule add from [podsiec_bramy] table [tablica]</p>
<p>Ostatnim krokiem w konfiguracji omawianego routingu jest stworzenie zasad, które pokierują pakiety (połączenia) o określonych właściwościach daną trasą (przez dane łącze). Najprostszym rozwiązaniem jest tzw. „markowanie” pakietów lub połączeń odpowiednimi znacznikami (ang. mark). Znaczniki te są liczbami całkowitymi dodatnimi, różnymi od zera. Dla każdego nowego łącza (nowej tabeli) należy utworzyć osobny, unikatowy znacznik, który zostanie wykorzystany w momencie sterowania ruchem (punkt następny). Do tego celu można wykorzystać polecenie:</p>
<p style="padding-left: 30px;">ip rule add fwmark [znacznik] table [tablica]</p>
<p><span style="text-decoration: underline;">Sterowanie ruchem.</span></p>
<p>Sterowanie ruchem pakietów (połączeń) między kilkoma łączami rozwiązuje się za pomocą filtru iptables. Filtr ten dostarcza między innymi opcje znakowania (markowania) pojedynczych pakietów lub całych połączeń określonymi znacznikami. Składnia polecenia dla pojedynczych pakietów jest następująca:</p>
<p style="padding-left: 30px;">iptables –t mangle –A PREROUTING [kryteria] –j MARK –-set-mark [znacznik]</p>
<p>natomiast dla połączeń:</p>
<p style="padding-left: 30px;">iptables –t mangle –A PREROUTING [kryteria] –j CONNMARK –-set-mark [znacznik]</p>
<p style="padding-left: 30px;">iptables –t mangle –A PREROUTING –m connmark –-mark [znacznik] –j CONNMARK –-restore-mark</p>
<p>Znakowanie całego połączenia polega na oznaczeniu pakietu, od którego rozpoczyna się połączenie a następnie automatycznym oznaczeniu każdych następnych pakietów należących do danego połączenia logicznego. Znakowanie połączeń przydatne jest w momencie, gdy pakiet rozpoczynający transmisję ma inny charakter niż pozostałe uczestniczące w dalszej części połączenia. Sytuacja taka ma miejsce w przypadku połączeń p2p, VoIP, FTP i innych.</p>
<p>Parametr [kryteria] określa właściwości pakietów, które zostaną zamarkowane określonym znacznikiem a następnie pokierowane przez routing skonfigurowany w punkcie 3 na odpowiednie łącze (odpowiednią trasą). Poszczególne elementy składające się na ten parametr można łączyć ze sobą w ich iloczyn logiczny. Poniżej przedstawiono kilka przykładowych parametrów:</p>
<p style="padding-left: 30px;">[-p tcp --dport 80] – caly ruch WWW</p>
<p style="padding-left: 30px;">[-s [adres_ip]] – ruch z danego adresu IP</p>
<p style="padding-left: 30px;">[-s [podsiec_lokalna]] – ruch z danej podsieci</p>
<p>Jeśli w sieci lokalnej nie ma możliwości dysponowania publicznymi adresami IP, należy zastosować mechanizm zwany NAT-em źródłowym w celu udostępnienia połączenia dla podsieci z puli prywatnych. Ponieważ przepływ pakietów realizowany będzie przez kilka łączy, najwygodniej wykorzystać mechanizm zwany MASKARADĄ, który automatycznie dostosuje NAT źródłowy do pakietów po routingu:</p>
<p style="padding-left: 30px;">iptables –t nat –A POSTROUTING –s [podsiec_lokalna] –j MASQUERADE</p>
<p>Konfiguracja głównego routingu oraz udostępniania połączenia internetowego dla podsieci 192.168.1.0/24 oraz 192.168.2.0/24</p>
<p style="padding-left: 30px;">ip address add 80.70.60.130/30 brd 80.70.60.131 dev eth0</p>
<p style="padding-left: 30px;">ip link set eth0 up</p>
<p style="padding-left: 30px;">ip address add 80.70.50.66/30 brd 80.70.50.67 dev eth1</p>
<p style="padding-left: 30px;">ip link set eth1 up</p>
<p style="padding-left: 30px;">ip address add 80.70.40.34/30 brd 80.70.60.35 dev eth2</p>
<p style="padding-left: 30px;">ip link set eth2 up</p>
<p style="padding-left: 30px;">ip address add 192.168.1.1/24 brd 192.168.1.255 dev eth3</p>
<p style="padding-left: 30px;">ip address add 192.168.2.1/24 brd 192.168.1.255 dev eth3</p>
<p style="padding-left: 30px;">ip link set eth3 up</p>
<p style="padding-left: 30px;">ip route add default via 80.70.60.129 dev eth0</p>
<p style="padding-left: 30px;">iptables –t nat –A POSTROUTING –s 192.168.1.0/24 –j MASQUERADE</p>
<p style="padding-left: 30px;">iptables –t nat –A POSTROUTING –s 192.168.2.0/24 –j MASQUERADE</p>
<p>Tabele routingu w pliku /etc/iproute2/rt_tables</p>
<p style="padding-left: 30px;">200	wan2</p>
<p style="padding-left: 30px;">201	wan3</p>
<p>Trasy do podsieci lokalnych dla nowo dodanych tabel</p>
<p style="padding-left: 30px;">ip route add table wan2 192.168.1.0/24 dev eth3</p>
<p style="padding-left: 30px;">ip route add table wan2 192.168.2.0/24 dev eth3</p>
<p style="padding-left: 30px;">ip route add table wan3 192.168.1.0/24 dev eth3</p>
<p style="padding-left: 30px;">ip route add table wan3 192.168.2.0/24 dev eth3</p>
<p>Trasy domyślne dla nowych tabel</p>
<p style="padding-left: 30px;">ip route add table wan2 default via 80.70.50.65</p>
<p style="padding-left: 30px;">ip route add table wan3 default via 80.70.40.33</p>
<p>Reguły zwrotne dla nowych tabel</p>
<p style="padding-left: 30px;">ip rule add from 80.70.50.64/30 table wan2</p>
<p style="padding-left: 30px;">ip rule add from 80.70.40.32/30 table wan3</p>
<p>Reguły routingu</p>
<p style="padding-left: 30px;">ip rule add fwmark 10 table wan2</p>
<p style="padding-left: 30px;">ip rule add fwmark 11 table wan3</p>
<p>Sterowanie ruchem – przykładowe założenia</p>
<p style="padding-left: 30px;">a) ruch HTTP z podsieci 192.168.1.0/24 przez łącze WAN2</p>
<p style="padding-left: 30px;">b) ruch HTTP z podsieci 192.168.2.0/24 przez łącze WAN3</p>
<p style="padding-left: 30px;">c) ruch HTTPS dla adresów różnych od 192.168.2.128-192 przez łącze WAN2</p>
<p style="padding-left: 30px;">d) ruch POP3 (odbieranie poczty) poprzez łącze WAN3</p>
<p style="padding-left: 30px;">e) ruch FTP dla stacji roboczej o adresie 192.168.2.113 poprzez łącze WAN2</p>
<p>Realizacja założeń sterowania ruchem zgodnie z powyższą kolejnością</p>
<p>a)</p>
<p style="padding-left: 30px;">iptables –t mangle –A PREROUTING –p tcp --dport 80 –s 192.168.1.0/24 –j MARK --set-mark 10</p>
<p>b)</p>
<p style="padding-left: 30px;">iptables –t mangle –A PREROUTING –p tcp --dport 80 –s 192.168.2.0/24 –j MARK --set-mark 11</p>
<p>c)</p>
<p style="padding-left: 30px;">iptables –t mangle –A PREROUTING –p tcp --dport 443 –s ! 192.168.1.128/26 –j MARK --set-mark 10</p>
<p>d)</p>
<p style="padding-left: 30px;">iptables –t mangle –A PREROUTING –p tcp --dport 110 –j MARK --set-mark 11</p>
<p>e)</p>
<p style="padding-left: 30px;">iptables –t mangle –A PREROUTING –p tcp --dport 20 –s 192.168.2.113 –j CONNMARK --set-mark 10</p>
<p style="padding-left: 30px;">iptables –t mangle –A PREROUTING –p tcp --dport 21 –s 192.168.2.113 –j CONNMARK --set-mark 10</p>
<p style="padding-left: 30px;">iptables –t mangle –A PREROUTING –m connmark –-mark 10 –j CONNMARK –-restore-mark</p>
<p><span style="text-decoration: underline;">Na koniec</span></p>
<p>Należy zauważyć, że cały pozostały ruch, który nie został sklasyfikowany przez reguły skierowany zostanie przez domyślny routing poprzez łącze WAN1. Dobrą taktyką jest, aby łącze dla głównego routingu było symetryczne i aby wszelkiego rodzaju ruch p2p przechodził właśnie przez nie ponieważ nie ma skutecznych w 100% metod, aby go sklasyfikować i przerzucić na inne łącze. Za to w przypadku ruchu HTTP, HTTPs, POP3, SMTP, FTP i podobnych (działających na określonych portach) sterowanie pakietami lub połączeniami jest zawsze skuteczne.</p>
<p>Pewnym ograniczeniem przy tego typu sterowaniu ruchem jest brak możliwości stosowania mechanizmów kontrolujących przepustowość, które korzystają z markowania pakietów od/do określonego nadawcy/odbiorcy. Są to mechanizmy dość często stosowane w sieciach lokalnych jednak ich wydajność jest niewielka a stopień skomplikowania dość duży. Dobrą alternatywą przy kontrolowaniu przepływności łączy jest stosowania wirtualnych interfejsów IMQ w połączeniu z mechanizmami sprawiedliwego podziału łącza ESFQ od strony WAN routera. Było o tym <a href="http://yarzombo.pl/routery-linuxowe/linux-router-htb-imq-esfq-layer7-priorytetyzacja-ruchu/">tutaj</a>.</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 1009px; width: 1px; height: 1px;"><!--[if !mso]> <mce:style><!  v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} --> <!--[endif]--><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves /> <w:TrackFormatting /> <w:HyphenationZone>21</w:HyphenationZone> <w:PunctuationKerning /> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF /> <w:LidThemeOther>PL</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables /> <w:SnapToGridInCell /> <w:WrapTextWithPunct /> <w:UseAsianBreakRules /> <w:DontGrowAutofit /> <w:SplitPgBreakAndParaMark /> <w:DontVertAlignCellWithSp /> <w:DontBreakConstrainedForcedTables /> <w:DontVertAlignInTxbx /> <w:Word11KerningPairs /> <w:CachedColBalance /> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> <m:mathPr> <m:mathFont m:val="Cambria Math" /> <m:brkBin m:val="before" /> <m:brkBinSub m:val="&#45;-" /> <m:smallFrac m:val="off" /> <m:dispDef /> <m:lMargin m:val="0" /> <m:rMargin m:val="0" /> <m:defJc m:val="centerGroup" /> <m:wrapIndent m:val="1440" /> <m:intLim m:val="subSup" /> <m:naryLim m:val="undOvr" /> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"   DefSemiHidden="true" DefQFormat="false" DefPriority="99"   LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Normal" /> <w:LsdException Locked="false" Priority="9" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="heading 1" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9" /> <w:LsdException Locked="false" Priority="39" Name="toc 1" /> <w:LsdException Locked="false" Priority="39" Name="toc 2" /> <w:LsdException Locked="false" Priority="39" Name="toc 3" /> <w:LsdException Locked="false" Priority="39" Name="toc 4" /> <w:LsdException Locked="false" Priority="39" Name="toc 5" /> <w:LsdException Locked="false" Priority="39" Name="toc 6" /> <w:LsdException Locked="false" Priority="39" Name="toc 7" /> <w:LsdException Locked="false" Priority="39" Name="toc 8" /> <w:LsdException Locked="false" Priority="39" Name="toc 9" /> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption" /> <w:LsdException Locked="false" Priority="10" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Title" /> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font" /> <w:LsdException Locked="false" Priority="11" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtitle" /> <w:LsdException Locked="false" Priority="22" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Strong" /> <w:LsdException Locked="false" Priority="20" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Emphasis" /> <w:LsdException Locked="false" Priority="59" SemiHidden="false"    UnhideWhenUsed="false" Name="Table Grid" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text" /> <w:LsdException Locked="false" Priority="1" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="No Spacing" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 1" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 1" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 1" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 1" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision" /> <w:LsdException Locked="false" Priority="34" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="List Paragraph" /> <w:LsdException Locked="false" Priority="29" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Quote" /> <w:LsdException Locked="false" Priority="30" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Quote" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 1" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 1" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 1" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 1" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 1" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 2" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 2" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 2" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 2" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 2" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 2" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 2" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 2" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 3" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 3" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 3" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 3" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 3" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 3" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 3" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 3" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 3" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 4" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 4" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 4" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 4" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 4" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 4" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 4" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 4" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 4" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 5" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 5" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 5" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 5" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 5" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 5" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 5" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 5" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 5" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 6" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 6" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 6" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 6" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 6" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 6" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 6" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 6" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 6" /> <w:LsdException Locked="false" Priority="19" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis" /> <w:LsdException Locked="false" Priority="21" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis" /> <w:LsdException Locked="false" Priority="31" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference" /> <w:LsdException Locked="false" Priority="32" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Reference" /> <w:LsdException Locked="false" Priority="33" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Book Title" /> <w:LsdException Locked="false" Priority="37" Name="Bibliography" /> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading" /> </w:LatentStyles> </xml><![endif]--><!--  /* Font Definitions */  @font-face 	{font-family:"Cambria Math"; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:1; 	mso-generic-font-family:roman; 	mso-font-format:other; 	mso-font-pitch:variable; 	mso-font-signature:0 0 0 0 0 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin:0cm; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:12.0pt; 	font-family:"Times New Roman","serif"; 	mso-fareast-font-family:"Times New Roman";} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	font-size:10.0pt; 	mso-ansi-font-size:10.0pt; 	mso-bidi-font-size:10.0pt;} @page Section1 	{size:612.0pt 792.0pt; 	margin:70.85pt 70.85pt 70.85pt 70.85pt; 	mso-header-margin:35.4pt; 	mso-footer-margin:35.4pt; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --><!--[if gte mso 10]> <mce:style><!   /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:Standardowy; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-priority:99; 	mso-style-qformat:yes; 	mso-style-parent:""; 	mso-padding-alt:0cm 5.4pt 0cm 5.4pt; 	mso-para-margin:0cm; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} --> <!--[endif]--><span style="font-size: 12pt; font-family: &amp;amp;amp;"><!--[if gte vml 1]><v:shapetype id="_x0000_t75"  coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe"  filled="f" stroked="f"> <v:stroke joinstyle="miter" /> <v:formulas> <v:f eqn="if lineDrawn pixelLineWidth 0" /> <v:f eqn="sum @0 1 0" /> <v:f eqn="sum 0 0 @1" /> <v:f eqn="prod @2 1 2" /> <v:f eqn="prod @3 21600 pixelWidth" /> <v:f eqn="prod @3 21600 pixelHeight" /> <v:f eqn="sum @0 0 1" /> <v:f eqn="prod @6 1 2" /> <v:f eqn="prod @7 21600 pixelWidth" /> <v:f eqn="sum @8 21600 0" /> <v:f eqn="prod @7 21600 pixelHeight" /> <v:f eqn="sum @10 21600 0" /> </v:formulas> <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect" /> <o:lock v:ext="edit" aspectratio="t" /> </v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" style='width:304.5pt;  height:214.5pt' o:ole=""> <v:imagedata src="file:///C:\DOCUME~1\przemek\USTAWI~1\Temp\msohtmlclip1\01\clip_image001.emz" mce_src="file:///C:\DOCUME~1\przemek\USTAWI~1\Temp\msohtmlclip1\01\clip_image001.emz"   o:title="" /> </v:shape><![endif]--><!--[if !vml]--><img src="file:///C:/DOCUME%7E1/przemek/USTAWI%7E1/Temp/msohtmlclip1/01/clip_image002.gif" alt="" width="406" height="286" /><!--[endif]--><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="Visio.Drawing.11" ShapeID="_x0000_i1025"   DrawAspect="Content" ObjectID="_1317401767"> </o:OLEObject> </xml><![endif]--></span></div>
]]></content:encoded>
			<wfw:commentRss>http://www.v-smart.pl/routery-linuxowe/routing-na-kilka-laczy-wan/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Linux Router &#8211; HTB, imq, esfq, layer7, priorytetyzacja ruchu, podział pasma</title>
		<link>http://www.v-smart.pl/routery-linuxowe/linux-router-htb-imq-esfq-layer7-priorytetyzacja-ruchu/</link>
		<comments>http://www.v-smart.pl/routery-linuxowe/linux-router-htb-imq-esfq-layer7-priorytetyzacja-ruchu/#comments</comments>
		<pubDate>Sun, 18 Oct 2009 15:04:45 +0000</pubDate>
		<dc:creator><![CDATA[yarzombo]]></dc:creator>
				<category><![CDATA[Routery linuxowe]]></category>

		<guid isPermaLink="false">http://yarzombo.pl/?p=29</guid>
		<description><![CDATA[Dawno dawno temu, za górami za lasami w zamierzchłych czasach kiedy łącze 128kbps kosztowało 75zł / miesiąc... Kiedy słabą popularność miały dziś dobrze znane protokoły p2p, kiedy nie było youtube, redtube i innych wrzut.. Kiedy Ty (w sensie Internauta) odpalałeś przeglądarkę aby sprawdzić pocztę.. Wtedy do podziału pasma wystarczył router za 100zł, który nie miał [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Dawno dawno temu, za górami za lasami w zamierzchłych czasach kiedy łącze 128kbps kosztowało 75zł / miesiąc... Kiedy słabą popularność miały dziś dobrze znane protokoły p2p, kiedy nie było youtube, redtube i innych wrzut.. Kiedy Ty (w sensie Internauta) odpalałeś przeglądarkę aby sprawdzić pocztę.. Wtedy do podziału pasma wystarczył router za 100zł, który nie miał podziału pasma <img src="http://www.v-smart.pl/wp-includes/images/smilies/simple-smile.png" alt=":)" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><span id="more-29"></span></p>
<p>Co mamy dzisiaj? Bardzo niskie ceny łączy, bardzo "duże" prędkości dla klientów połączone z miłością do waszej-klaty.pl, wszelkiego rodzaju *tubów i torrentów, bez których nawet kobiety już nie mogą żyć (bo skąd tu filmy ściągać jak nie przez utorrent he he). Pojawia się dość trudne pytanie dla małych ISP pt. "Jak tu kurza twarz zarobić na biednych klientach, którzy chcą coraz więcej za coraz mniejsze pieniądze". Możliwości jest kilka:</p>
<ul>
<li>zamknąć sieć w sensie sprzedać się dużemu ISP i otworzyć budę z kebabami na dworcu (większy zysk)</li>
<li>olać klientów i ich narzekanie, co jest dość często stosowane z powodu braku środków</li>
<li>POMYŚLEĆ, POSZUKAĆ, ZNALEŹĆ rozwiązanie, które będzie pokarmem dla "głodnych" klientów-pasożytów, którzy, co byśmy nie zrobili, i tak będą narzekać oraz dla nas, biednych małych ISP, którzy mając 10/10Mbps łącze chcemy zmieścić w tym 200 klientów ze średnią prędkością dla nich w okolicach 1Mbps.</li>
</ul>
<p>Da się. Potrzebny komputer średniej mocy obliczeniowej, w miarę świeża dystrybucja linuxa oraz dużo kawy, fajek (dla tych co palą of koz) i święty spokój. Zatem adminie - przed przystąpieniem do "ataku" odstaw żonę do koleżanek z kilkoma stówkami w kieszeni na zakupy, dzieci oddaj teściom na weekend i do roboty haha!</p>
<p>A teraz poważnie. Napiszmy jak to wszystko powinno działać. Załóżmy, że mamy już skrzynkę z linuxem, dla uproszczenia debian lenny z paczkami [<a href="http://files.v-smart.pl/router-vsmart-2.6.34/i386/">i386</a>] lub [<a href="http://files.v-smart.pl/router-vsmart-2.6.34/amd64/">amd64</a>], oraz dwoma interfejsami sieciowymi:</p>
<ul>
<li>eth0 jako WAN (PUBLICZNE_IP)</li>
<li>eth1 jako LAN (LOKALNE_IP, LOKALNA_PODSIEC)</li>
</ul>
<p>Kluczem do sukcesu jest znalezienie mechanizmu, który umie rozłożyć ruch od/do klientów sprawiedliwie. Sprawiedliwie nie oznacza standardowego HTB + sfq, gdyż takie połączenie dzieli po równo trafik per połączenie. Więc jeśli mamy dwóch klientów w sieci LAN i każdy ma otwarte jedno połączenie (np do redtube) to będzie sprawiedliwie - obaj będą cieszyć się multimediami. Inaczej wygląda sprawa, jeśli jeden z nich odpali klienta sieci torrent i rozkręci się do 2k połączeń. Wtedy drugi już nie zazna przyjemności z redtube - zostanie wycięty w pień przez ilość połączeń p2p konkurenta.</p>
<p>Sprawiedliwie oznacza podział per IP źródłowe / docelowe (upload / download). Taką możliwość oferuje mechanizm o nazwie ESFQ, który w połączeniu z HTB potrafi dzielić również w przypadku zastosowania NATa. Dodatkowo przypomnę po raz n!^2, że linuxowe HTB potrafi "ciąć" jedynie ruch WYCHODZĄCY z interfejsu. Zatem możemy zapomnieć, że bez wykorzystania IMQ (patrz google) zrobimy cokolwiek mądrego w kwestii podziału pasma. Tomek pewnie zaraz skrytykuje, że nie używa IMQ i się da ale my swoje wiemy bo przeprowadziliśmy dużo testów. Dokumentacja kernela oraz IMQ też mówią swoje.</p>
<p>Kilka słów w kwestii priorytetyzacji ruchu. Przedstawię jak to wygląda u mnie - oceńcie sami czy przyda się Wam czy nie. I tutaj przytoczę sławne już zdanie: "To że działa to u mnie wcale nie oznacza, że będzie działać to u Ciebie" <img src="http://s.w.org/images/core/emoji/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><strong>PRZEPIS NA ROUTER</strong></p>
<p>system: <a href="http://files.v-smart.pl/router-vsmart-2.6.34/doc/system.txt">klikamy</a></p>
<p>iptables: <a href="http://files.v-smart.pl/router-vsmart-2.6.34/doc/iptables.txt">klikamy</a></p>
<p>htb: <a href="http://files.v-smart.pl/router-vsmart-2.6.34/doc/htb.txt">klikamy</a></p>
<p>testowanie: <a href="http://files.v-smart.pl/router-vsmart-2.6.34/doc/how-to-test.txt">klikamy</a></p>
<p>Opisy poszczególnych poleceń znajdują się w powyższych plikach. Plik htb.txt można spokojnie wkleić do skryptu shellowego i odpalić po uprzednim uzupełnieniu parametrów. Testujcie śmiało jeśli macie cierpliwość. Efektem spodziewanym jest uzyskanie priorytetu wyższego lub niższego dla usług zdefiniowanych w htb.txt oraz iptables.txt oraz sprawiedliwe rozłożenie ruchu per IP w sieci LAN.</p>
<p>Omówiony wyżej dynamiczny sposób podziału pasma zamierzamy zamontować do naszych routerów uruchomionych przy wykorzystaniu wirtualizacji Proxmox. Wcześniej został sprawdzony na kilkuset klientach i działa na 75% prawidłowo naszym zdaniem. BTW.. jak znajdziecie taki, który spełnia wasze oczekiwania w 99.9% to dajcie znać.</p>
<p>PS. Ponieważ często pytacie o <span style="text-decoration: underline;">pattern l7 do łapania rapidshare</span> itp, poniżej podaje howto.</p>
<p>Tworzymy sobie pliczek:</p>
<p style="padding-left: 30px;">/etc/l7-protocols/protocols/rapidshare.pat</p>
<p>i klepiemy w nim takie dwie linijki:</p>
<p style="padding-left: 30px;">rapidshare</p>
<p style="padding-left: 30px;">rapidshare.com</p>
<p>Wielkiej filozofii w tym nie ma. Po prostu łapie toto połączenia do wszystkiego (bo jest connmark w iptables), co chociaż w jednym pakiecie zawiera rapidshare.com a większość serwerów rapida siłą rzeczy ma to w swojej domenie <img src="http://www.v-smart.pl/wp-includes/images/smilies/simple-smile.png" alt=":)" class="wp-smiley" style="height: 1em; max-height: 1em;" /> U mnie dziala.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.v-smart.pl/routery-linuxowe/linux-router-htb-imq-esfq-layer7-priorytetyzacja-ruchu/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Wirtualna Sieć Linuxów &#8211; podejście 1</title>
		<link>http://www.v-smart.pl/routery-linuxowe/wirtualna-siec-linuxow-podejscie-1/</link>
		<comments>http://www.v-smart.pl/routery-linuxowe/wirtualna-siec-linuxow-podejscie-1/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 22:16:50 +0000</pubDate>
		<dc:creator><![CDATA[yarzombo]]></dc:creator>
				<category><![CDATA[Routery linuxowe]]></category>

		<guid isPermaLink="false">http://yarzombo.pl/?p=23</guid>
		<description><![CDATA[Sytuacja przedstawia się następująco. W większości małych firm z branży ISP mamy serwerownię składającą się zazwyczaj z routera (zwanego dalej R1), który miesza łączem (łączami) w świat, serwer hostingowy (zwany dalej S1) oraz router który udostępnia sieć klientom (zwany dalej R2). Zatem trzy maszyny. Padł pomysł aby wsadzić je wszystkie trzy do jednej, odpalić i [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Sytuacja przedstawia się następująco. W większości małych firm z branży ISP mamy serwerownię składającą się zazwyczaj z routera (zwanego dalej R1), który miesza łączem (łączami) w świat, serwer hostingowy (zwany dalej S1) oraz router który udostępnia sieć klientom (zwany dalej R2). Zatem trzy maszyny. Padł pomysł aby wsadzić je wszystkie trzy do jednej, odpalić i przetestować. W obroty poszedł znany już i lubiany Proxmox, na którym powstały 3 wirtualne serwery zarządzane poprzez moduł KVM jądra.</p>
<p><span id="more-23"></span></p>
<p>Należało przyjąć pewne założenia:</p>
<ul>
<li>Połączenia między wirtualnymi routerami realizowane są w bridżach (np. przejście z jednego do drugiego)</li>
<li> Połączenia "na zewnątrz" (np. ze switchem) realizowane są za pomocą vlan-ów z powodu braku dużej ilości interfejsów fizycznych serwera</li>
<li> Vlan-y są podpięte do bridżów, obsługiwanych przez Proxmoxa</li>
<li> Posiadamy switcha, który umożliwia uruchomienia łącza trunkowego najlepiej po interfejsie gigabitowym</li>
</ul>
<p>Utworzono trzy bridże (z poziomu /etc/network/interfaces) opisane poniżej:</p>
<p>vmbr1)</p>
<ul>
<li>vlan1</li>
<li> funkcja WAN do ISP</li>
</ul>
<p>vmbr2)</p>
<ul>
<li>vlan2</li>
<li>funkcja "szkieletu serwerów"</li>
</ul>
<p>vmbr3)</p>
<ul>
<li>vlan3</li>
<li>funkcja LAN</li>
</ul>
<p>Załóżmy że od ISP posiadamy PUBLIC_IP, przez który została przeroutowana PUBLIC_NET/24. Podzieliliśmy PUBLIC_NET/24 na dwie podsieci CORE_NET/25 i PUBLIC_LAN/25. Dodatkowo mamy lokalna podsieć powiedzmy LOCAL_LAN/24. Postawiono trzy wirtualne maszyny "Fully Virtualized (KVM)", których konfiguracja interfejsów wygląda następująco:</p>
<p>R1)</p>
<ul>
<li> eth0: PUBLIC_IP - interfejs WAN czyli do naszego ISP (zapięty do vmbr1)</li>
<li> eth1: IP z sieci CORE_NET/25 - interfejs wewnętrznej sieci szkieletowej (zapięty do vmbr2)</li>
<li> default route via eth0</li>
</ul>
<p>R2)</p>
<ul>
<li> eth0: IP z sieci CORE_NET/25 - interfejs WAN routera podłączony do "szkieletu serwerów", na który będzie natowany LAN z eth1 (zapięty do vmbr2)</li>
<li> eth1:  IP z sieci PUBLIC_LAN/25 oraz IP z sieci LOCAL_LAN/24 - interfejs LAN routera (zapięty do vmbr3)</li>
<li> default route via eth0</li>
</ul>
<p>S1)</p>
<ul>
<li> eth0: IP z sieci CORE_NET/25 - interfejs serwera hostingowego podłączony do "szkieletu serwerów" (zapięty do vmbr2)</li>
<li> default route via eth0</li>
</ul>
<p>Odpalono to wszystko. Działa w sensie sieć funkcjonuje prawidłowo (pingi, trace i takie tam). Kolejny etap polegać będzie na testach tego w rzeczywistej sieci. Dodatkowo na R2 zamontowano paczki z projektu rabbit (iptables + iproute + jajo). Pierwsze wrażenia opisane poniżej:</p>
<ul>
<li>iptables sypie ostrzeżeniami przy negacji reguł (czyli przy używaniu "!")</li>
<li>zauważyliśmy, że wirtualne maszyny lubią czasem przestać odpowiadać - jakby bridże się sypały, pomaga oczywiście nieśmiertelny reboot wirtualek</li>
</ul>
<p>ToDo:</p>
<ul>
<li>sprawdzić wtf z iptables, ewentualnie cofnąć projekt rabbit do wcześniejszej wersji</li>
<li>rozwiązać problem z bridżami - wiemy już, że nie zależy to od wersji Proxa (na 1.1 czyli debian eth i 1.3 czyli debian lenny jest to samo)</li>
</ul>
<p>Szczegóły wkrótce. BRB</p>
]]></content:encoded>
			<wfw:commentRss>http://www.v-smart.pl/routery-linuxowe/wirtualna-siec-linuxow-podejscie-1/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Debian Router &#8211; kernel, iptables, iproute</title>
		<link>http://www.v-smart.pl/routery-linuxowe/rabbit-paczki-dla-debiana/</link>
		<comments>http://www.v-smart.pl/routery-linuxowe/rabbit-paczki-dla-debiana/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 21:41:41 +0000</pubDate>
		<dc:creator><![CDATA[yarzombo]]></dc:creator>
				<category><![CDATA[Routery linuxowe]]></category>

		<guid isPermaLink="false">http://yarzombo.pl/?p=15</guid>
		<description><![CDATA[W pewien piękny weekend uparliśmy się z kolegą, że stary dobry Slack to średnia wersja w dzisiejszych czasach na system operacyjny routera  i postanowiliśmy własnoręcznie przekompilować kernel, iptables oraz iproute z odpowiednimi łatkami. Niektórzy pewnie się zdziwią co ja tu wypisuje ale repo Slacka się chowa w krzaki przy tym debianowym. Poza tym w debie [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>W pewien piękny weekend uparliśmy się z kolegą, że stary dobry Slack to średnia wersja w dzisiejszych czasach na system operacyjny routera  i postanowiliśmy własnoręcznie przekompilować kernel, iptables oraz iproute z odpowiednimi łatkami. Niektórzy pewnie się zdziwią co ja tu wypisuje ale repo Slacka się chowa w krzaki przy tym debianowym. Poza tym w debie jest prościej. No ale do rzeczy.</p>
<p><span id="more-15"></span></p>
<p>Zanim cokolwiek zrobisz sprawdź <a href="http://www.v-smart.pl/routery-linuxowe/htb-linux-router-dhcp-podzial-pasma-lms-faktury/">projekt routera z LMS (kliknij)</a>. Być może zaoszczędzisz sobie dużo roboty <img src="http://s.w.org/images/core/emoji/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Paczki znajdują się tu: [<a href="http://files.v-smart.pl/router-vsmart-2.6.34/i386/">i386</a>] [<a href="http://files.v-smart.pl/router-vsmart-2.6.34/amd64/">amd64</a>]</p>
<p>Paczki zostały przygotowane dla architektur x86 oraz amd64 zatem co kto lubi. Patche pochodzą z serwisu <a href="http://linuxbox.pl">linuxbox.pl</a> - jego właściciel zrobił na prawdę olbrzymią furę dobrej roboty. Krótkie howto co zrobić z paczkami:</p>
<p>1. ściągnąć</p>
<p>2. dpkg -i *.deb</p>
<p>3. reboot</p>
<p>4. przetestować zgodnie z plikiem, w którym to opisano</p>
<p>W moich testach wypadło bez zarzutu. Nie muszę chyba dodawać, że paczki powstały w środowisku zwirtualizowanym przez Proxmoxa?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.v-smart.pl/routery-linuxowe/rabbit-paczki-dla-debiana/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
