Navigation
/Home
/Informationen /User
Info
[Valid RSS]
Info
http://www.vorratsdatenspeicherung.de
Browser
http://www.mozilla.org
http://www.operasoftware.com
Info
http://www.google.com

[ last change Aug 30, 2010 6:52 pm ]

OpenBSD Bridge

Ein Beispiel einer Bridge Anwendung

Eine Bridge verbindet zwei oder mehrere Netzwerksegmente miteinandener. Fü dieses einfache Beispiel, wird eine Bridge mit zwei Intel Gigabit Karten vor einen Testrechner gehangen. Der Rechner hängt in dem Netz 172.16.3.0/24 und wird nur für Testzwecke verwendet. Die Bridge soll für alle Rechner unsichtbar sein, und den Testrechner von dem Netz trennen. Durch das Aktivieren der Bridge werden die Netzwerkkarten der Bridge in den promiscuous Mode gesetzt. In dieser Konfiguration wird die Bridge mit den default Einstellungen betrieben. Die Bridge lernt z.B. welche Adressen an welchem Interface hängen. Dies kann man aber auch statisch festlegen. Nun aber zur Konfiguration.

Die erste Netzwerkkarte wird so konfiguriert, dass sie die IPv4 Adresse 172.16.3.8 mit der Netzwerkmaske 255.255.255.0 erhält. Das NONE steht nur dafür, dass die Karte im autonegotiate Modus verwendet wird. Für die hier beschriebene Bridge sollte das kein Problem sein.

Die Datei hostname.em0 enthält die Konfigurationsdaten für die em0 Karte:

$ cat /etc/hostname.em0
inet 172.16.3.8 255.255.255.0 NONE
up

Die zweite Karte wird ohne irgendwelche Einstellungen aktiviert. Bei Aktivieren der Bridge, wird so die Karte nur in den promiscuous Mode versetzt.

Konfiguration für die zweite Karte:

$ cat /etc/hostname.em1
up

Bridge Konfigurieren

Mit dem ifconfig bridge0 create Befehl kann wird die Bridge0 erzeugt. Nach Eingabe des Befehls, sollte nun ein Interface bridge0 existieren.

$ ifconfig bridge0 create

Nun werden der Bridge0 die entsprechenden Netzwerkkarten zugewiesen und aktiviert.

$ brconfig bridge0 add em0 add em1 up

Filtern auf der Bridge

Folgende Regeln wurden zum Testen in der Datei /etc/pf-bridge.conf konfiguriert.

$ cat /etc/pf-bridge.conf
protected = "em1"
public = "em0"

localnet = "172.16.3.0/24"
goodnets = "172.16.3.0/24"

pass in quick on $protected all
pass out quick on $protected all

block in on $public all
block out on $public all

pass out on $public proto udp from $localnet to { $goodnet } \
   port = domain keep state
pass out on $public proto tcp from $localnet to { $goodnet } \
   port { domain, ssh } modulate state
pass out on $public proto icmp from $localnet to $localnet \
   icmp-type 8 code 0 keep state
pass in on $public proto icmp from $localnet to $localnet \
   icmp-type 8 code 0 keep state

Damit nur diese Regeln eingelesen werden, ist folgender Befehl notwendig:

$ pfctl -R -f /etc/pf-bridge.conf

Aktiviert wird die Firewall nun mit dem folgenden Befehl:

$ pfctl -e

Nun ist es dem Testrechner möglich Domain Anfragen in das 172.16.3.0/24 Netz abzusetzten. Ausserdem kann der Netzrechner per SSH Verbindungen in das 172.16.3.0/24 Netz aufbauen. Die TCP Verbindungen werden mit modulate state konfiguriert. Das sorgt dafür, dass Verbindungen per NAT zwar stateful behandelt werden, aber die sequencenumbers zufällig vergeben werden.

Verwendungszweck

Diese einfache Bridge dient nur dem Testen des Testrechners. Für die umfangreichen Tests von load-balancing, und firewalling wird eine weitaus aufwendigere Konfiguration einer Bridge notwendig. Das Beispiel zeigt aber wie schnell und einfach eine Bridge unter OpenBSD aufgesetzt werden kann.

Auf dem Testrechner koennen nun Anwendungen getestet werden, ohne das eigene Netzwerk zu gefährden. Auch kann so ein ganzes Netzwerksegment abgehangen oder kontrolliert werden. Für die Umsetzung einer Bridge unter Linux besteht zur Zeit keine Notwendigkeit, wird aber noch durchgeführt.

Quellen