<?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>baseciq.org &#187; bridge</title>
	<atom:link href="http://www.baseciq.org/tagi/bridge/feed" rel="self" type="application/rss+xml" />
	<link>http://www.baseciq.org</link>
	<description></description>
	<lastBuildDate>Wed, 26 Oct 2011 09:01:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Linux &#8211; bridge</title>
		<link>http://www.baseciq.org/2004/12/03/linux-bridge</link>
		<comments>http://www.baseciq.org/2004/12/03/linux-bridge#comments</comments>
		<pubDate>Fri, 03 Dec 2004 10:00:47 +0000</pubDate>
		<dc:creator>Baseciq</dc:creator>
				<category><![CDATA[howtos]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[bridge]]></category>

		<guid isPermaLink="false">http://www.baseciq.org/?p=118</guid>
		<description><![CDATA[Co to jest bridge? Bridge jest urządzeniem odzielającym dwa lub więcej fizyczne segmenty sieci będące w jednej sieci logicznej (w obrębie jednej klasy adresowej). Bridge jest najczęściej umieszczany pomiędzy dwoma grupami komputerów w sieci, gdzie komputery w obrębie danej grupy komunikują się ze sobą bardzo często, lecz komputery pomiędzy tymi grupami komunikują się rzadziej. W [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Co to jest bridge?</strong></p>
<p>Bridge jest urządzeniem odzielającym dwa lub więcej fizyczne segmenty sieci będące w jednej sieci logicznej (w obrębie jednej klasy adresowej).</p>
<p>Bridge jest najczęściej umieszczany pomiędzy dwoma grupami komputerów w sieci, gdzie komputery w obrębie danej grupy komunikują się ze sobą bardzo często, lecz komputery pomiędzy tymi grupami komunikują się rzadziej. W takim wypadku bridge zminimalizuje obciążenie sieci.</p>
<p><span id="more-118"></span><br clear="both"/><div class="adsense-single" id="adsense-single"><!-- jeżeli nie lubisz reklam, to sobie wytniesz po id obiektu... --> 
	<script type="text/javascript"> google_ad_client = "pub-3850786112207919"; google_ad_slot = "3874219152"; google_ad_width = 468; google_ad_height = 60; </script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
 </div></p>
<p>Zadaniem bridge&#8217;a jest decyzja czy pakiety z jednego interfejsu sieciowego powinny być przeniesione na drugi interfejs sieciowy. Bridge działa podobnie jak switch sieciowy (switch warstwy drugiej) &#8211; jest przezroczystym komponentem sieci (są nimi także huby czy też switche). Różnica pomiędzy switchem a zwykłym hubem jest taka, że ten drugi pakiety zasłyszane na jednym porcie przenosi na wszyskie porty, a switch tylko na te na które trzeba. Niektórzy zaraz powiedzą &quot;przecież tak działają także routery!&quot;. Nie do końca. Routery działają tylko dla protokołu IP, natomiast bridge nie przenosi pakietów patrząc na typ protokołu (IP, IPX/SPX, NetBeui), ale na adres MAC źródłowe i docelowe. Dlatego też dzięki uruchomieniu bridge&#8217;a możemy bezproblemowo korzystać z usługi netbios czy programów korzystających z protokołu IPX/SPX w sieciach połączonych serwerem Linuxowym. Po uruchomieniu bridge&#8217;a nadal możemy na serwerze uruchamiać jakiekolwiek usługi o ile chcemy.</p>
<p>Inne pożyteczne zastosowanie bridge&#8217;a to możliwość połączenie dwóch standardów sprzętu sieciowego np. 10-Base-T (sieć BNC) i 100-Base-TX (sieć na skrętce) &#8211; do tego wystarczy nam komputer klasy 486 ze stacją dyskietek i kością pamięci który leży niepotrzebny pod biurkiem. Efekt: nie musimy kupować huba z uplinkiem BNC a przy okazji bridge taki zmniejszy nam obciążenie sieci.</p>
<p>Jako że autor HOWTO na którym bazuje ten tekst podał swój prywatny powód dlaczego postawil bridge&#8217;a, zrobię tak i ja. W naszej sieci blokowej są trzy segmenty sieci na BNC. Każdy z nich miał swoją klasę C z puli 192.168.0.0/16. W jednym z nich (nazwijmy go segmentem nr. 1) stał serwer DHCP dla tego segmentu sieci. Wszystkie 3 segmenty zbiegały się w routerze Linuxowym. Na tymże routerze działał serwer DHCP dla segmentów 2 i 3. Należało oczywiście zainstalować także serwer samby z obsługą wins&#8217;a aby w windowsowym otoczeniu sieciowym komputery widziały się nawzajem pomiędzy segmentami. Niestety rozwiązanie to nie pomagało aby chodziły bezproblemowo w sieci programy do komunikacji w lanie a o graniu pomiędzy segmentami w gry wkorzystujące protokół IPX/SPX nie było wogóle mowy. Teraz wszystkie trzy segmenty są w obrębie jednej klasy adresowej, serwer WINS nie jest już potrzebny, DHCP działa jedno dla całej sieci, a i serwer ma tylko jeden adres IP.</p>
<p><strong>Kilka pojęć o bridge.</strong></p>
<p>- po przypisaniu karty sieciowej do bridge&#8217;a staje się ona jego portem i nie mamy nad nią już żadnej kontroli;<br />
- port może być przypisany tylko do jednego bridge&#8217;a (na jednej maszynie może być kilka bridge&#8217;y);<br />
- bridge nic nie wie na temat protokołów wyższych niż ARP, dlatego potrafi obsłużyć każdy możliwy protokół uruchomiony w Twojej sieci lokalnej;<br />
- bridge może mieć dowolną ilość interfejsów (mimo iż się spotkałem z opiniami że bridge może mieć tylko dwa porty i po uruchomieniu bridge&#8217;a komputer staje się bezwartościowy jako maszyna tcp/ip);</p>
<p>- bridge działa jak interfejs sieciowy, może mieć swój adres IP;<br />
- można uruchomić dowolną ilość bridge&#8217;y, np: bridge1 obsługuje sieci na eth0 i eth1 a bridge2 obsługuje sieci na eth2 i eth3, a pomiędzy bridge1 i bridge2 można uruchomić normalny routing tak jakby bridge1 i bridge2 były kartami sieciowymi;</p>
<p><strong>Potrzebne pliki.</strong></p>
<p>Wszystkie pliki potrzebne do postawienia bridge&#8217;a można znaleźć pod adresem <a href="http://bridge.sourceforge.net/download.html">http://bridge.sourceforge.net/download.html</a>. Kernele serii 2.4.* posiadają wbudowaną obsługę bridge&#8217;a, natomiast by w kernelach 2.2.* wszystko sprawnie działało potrzebna jest ta łatka: <a href="http://bridge.sourceforge.net/patches/">http://bridge.sourceforge.net/patches/bridge-1.0.2-against-2.2.20.diff</a> &#8211; powinna się znajdować na dole tamtego indeksu. Do zarządzania bridge&#8217;m potrzebny jeszcze jest program brctl: <a href="http://bridge.sourceforge.net/bridge-utils/">http://bridge.sourceforge.net/bridge-utils/</a>. Obsługę bridge&#8217;a najlepiej wkompilować jako moduł (CONFIG_BRIDGE=m). Będzie ona działała poprawnie, natomiast przy kompilacji na stałe może ona wywołać problemy. Później przystępujemy do kompilacji i instalacji bridge-utils:</p>
<pre>$ tar -xzf bridge-utils-0.9.3.tar.gz$ cd bridge-utils$ make$ cp brctl/brctl /sbin</pre>
<p>Składnia brctl wygląda tak: brctl &lt;komenda&gt; [parametry]</p>
<p>Podstawowe komendy:</p>
<p><strong>addbr [nazwa], delbr [nazwa]</strong> &#8211; odpowiednio dodanie bridge&#8217;a i usnięcie bridge&#8217;a o podanej nazwie. Nazwa może być prawie dowolna &#8211; np. mostek, most0, bridge7, br0. Uwaga. Usunięcie bridge jest możliwe tylko wtedy kiedy nie są przypisane do niego żadne interfejsy.</p>
<p><strong>addif [nazwa] [iface], delif [nazwa] [iface]</strong> &#8211; odpowiednio dodanie interfejsu (portu) do bridge&#8217;a o nazwie &#8216;nazwa&#8217; i jego usunięcie. Przykładowo: brctl addif br0 eth0 &#8211; to dodaje do bridge&#8217;a br0 port eth0.</p>
<p><strong>showbr [nazwa]</strong> &#8211; pokazanie listy bridge&#8217;ów lub wyświetlenie ustawień jednego z nich.</p>
<p><strong>showmacs [bridge]</strong> &#8211; pokazanie listy widocznych adresów sprzętowych kart (MAC) które widzi [bridge] oraz portów (kart sieciowych) przez które je widzi</p>
<p>Te kilka komend powyżej pozwolą nam uruchomić i kontrolować bridge&#8217;a. Jeżeli nasze karty sieciowe które chcemy włączyć do bridge&#8217;a mają już skonfigurowane adresy, należy te adresy im odebrać komendą: ifconfig eth0 0.0.0.0. W tym momencie po wyświetleniu listy interfejsów komendą &#8216;ifconfig&#8217; powinniśmy widzieć karty sieciowe, ale bez przyznanych adresów IP. Cały skrypt do uruchamiania bridge&#8217;a wygląda tak:</p>
<pre>#!/bin/sh
#
# Podnieśmy karty sieciowe.
# Oczywiście tych kart sieciowych może być więcej lub mniej (czyli dwie).
# Jeżeli ten skrypt jest już wywoływany po zainicjowaniu sieci (np. z
# rc.local) należy dopisać po każdym 'up' adres '0.0.0.0'
#

/sbin/ifconfig eth0 up
/sbin/ifconfig eth1 up
/sbin/ifconfig eth2 up

#
# Jeżeli mamy wkompilowaną obsługę bridge'a na stałe, możemy zahashować
# następną linijkę. W przeciwnym wypadku należy załadować moduł bridge.
#

/sbin/modprobe bridge

#
# Utwórzmy bridge o nazwie 'br0'.
#

/sbin/brctl addbr br0

#
# Dodajmy do bridge'a br0 karty sieciowe
#

/sbin/brctl addif br0 eth0
/sbin/brctl addif br0 eth1
/sbin/brctl addif br0 eth2

#
# Teraz przydzielmy bridge'owi adres ip, żebyśmy mogli używać serwera
# do normalnych celów
#

/sbin/ifconfig br0 up 192.168.1.1 netmask 255.255.255.0

#
# Powinno działać
#</pre>
<p>Teraz, pakiety pomiędzy sieciami powinny przechodzić swobodnie. Jeżeli bridge został uruchomiony na komputerze robiącym maskradę, powinna ona nadal działać. Łaty na ipchains są jedynie potrzebne w momencie gdy chcemy ustawiać regułki pomiędzy sieciami (tj. zrobić przezroczystego firewalla).</p>
<p>A jak to zrobić w PLD? Musimy mieć kernel dystrybucyjny (2.2.20-6.2 na przykład). Tworzymy nowy plik /etc/sysconfig/interfaces/ifcfg-br0 który wygląda tak:</p>
<pre># Nazwa bridge'a

DEVICE=br0

# Adres IP bridge'a:

IPADDR=192.168.1.1/24

# Czy bridge ma być aktywowany podczas uruchamiania systemu:

ONBOOT=yes

# Urządzenia sieciowe które mają być częścią bridge'a:

BRIDGE_DEVS=&quot;eth0 eth1&quot;

# Protokół STP (zalecane 'yes')

SPANNING_TREE=yes</pre>
<p>Teraz /etc/rc.d/init.d/network restart i powinno chodzić ;). Podziękowania dla <a href="http://jack.eu.org/">Jack&#8217;a</a> za pomoc z bridge w PLD.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.baseciq.org/2004/12/03/linux-bridge/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

