Linux bridging alternative

Submitted by Jochus on Wed, 20/02/2013 - 22:37 | Posted in: Linux
I just found this old article I've written down once to simulate a Linux network bridging alternative. This article was written in Dutch, but I didn't want it to get lost, so I added it to my blog.

Probleem

Enkele jaren heb ik gretig gebruik gemaakt van een Windows 2003 serverke. Maar het toestel werd oud en traag en was dringend aan vervanging toe.
Bij het opzetten van een nieuwe server heb ik gekozen voor Ubuntu, omdat ik al veel positieve dingen gehoord/gelezen heb qua servers & Linux. Bovendien was het zeker niet slecht om mijn CV wat aan te vullen ;-)

Goed, 1 van de vereisten is dat mijn server als netwerk brug functioneert. Waarom? Dat valt hier eigenlijk buiten de scope van het document, maar het is bedoeld om een printer en andere DHCP clients te voorzien via HUB en de server richting het internet (en ook andere DHCP clients in het gebouw)

Bij de windows server ging dat perfect. Je selecteert 2 verbindingen: de wired en de wireless, en je kiest voor Netwerk brug maken...
De rest gebeurt van zelf, en klaar is kees :-).

Bij Linux was dit probleem precies iets anders. Er is genoeg documentatie te vinden over het bridgen van 2 wired interfaces, maar niet zo veel voor wireless en wired.

Dagen heb ik zitten prutsen om de brug in orde te brengen, maar ik kreeg ze maar niet werkend.
Het probleem is als volgt: mijn Linksys WRT54GS stuurt pakketten uit die WDS informatie bevatten. Die informatie zorgt ervoor dat pakketten hetzelfde MAC adres blijven behouden over verschillende access points heen. Nu moet mijn driver van mijn netwerkkaart wel die WDS pakketten verstaan om ze deftig te kunnen doorgeven aan mijn eth0 zijde => MAC spoofing!

En dit was dus niet mogelijk, het MAC adres kon niet gespoofd worden, waardoor mijn pakketten verloren gingen ...
Met andere woorden: ik ben gesjost. Ik kon geen netwerk brug maken onder Linux en dat was voor mij wel een redelijk pain-in-the-ass.
Maar Jochus zou Jochus niet zijn, moest hij daarvoor geen oplossing hebben ...

Getroffen systemen

ROUTER

  • systeem: WRT54GS

SERVER

  • OS: Ubuntu 8.10 Intrepid
  • wireless interface: WMP54G
  • wired interface: RealTek RTL8139

CLIENTS

  • OS: Windows XP SP3
  • wired/wireless interface: doeterniettoe :-)

Oplossing

Alle clients die aangesloten zijn op mijn router, zitten het in het 192.168.1.0/32 netwerk. Ook mijn server heeft verbinding met mijn router op interface wlan0

auto wlan0
iface wlan0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1

Nu heb ik op mijn eth0 interface een 2e subnet geconfigureerd: 192.168.0.0/32. Mijn server zal instaan voor het verkeer tussen de 2 subnetten.
Maar hoe zet je zoiets op?

Configureren eth0 onder Ubuntu

  • Configureren wired connectie (eth0) in een ander subnet
  • Voeg volgende sectie toe aan: /etc/network/interfaces
  • Tip! gebruik geen gateway, want dan zal je standaard verkeer telkens naar eth0 vliegen, ipv wlan0

auto eth0
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0

Toestaan dat IP pakketten van interface wlan0 doorgegeven worden aan eth0 en vice versa

  • Pas volgende file aan: /etc/sysctl.conf

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

IP pakketten herzien van bron- en doelbestemming, zodat pakketten aan de juiste PC teruggegeven worden

$ sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

Aanpassen printerconfiguratie

Op de printer zelf heb ik dan volgende configuratie ingesteld:

address: 192.168.0.2
submask: 255.255.255.0
gateway: 192.168.0.1

Op de clients moest ik ook de printer- en scannerpoort veranderen naar 192.168.0.2

===========
= PRINTER =
===========
* rechts klikken op je printer 
* Eigenschappen
* Tabblad: Poorten
* Selecteer de bestaande poort en druk op Poort configureren
* Stel IP-adres in op : 192.168.0.2
 
===========
= SCANNER =
===========
* Start
* Configuratiescherm
* Scanners & Camera's
* rechts klikken op je scanner
* Eigenschappen
* Tabblad: Netwerkinstellingen
* Stel IP-adres in op : 192.168.0.2

Aanpassen clients

Nu zijn we er nog niet. Want de pakketten zullen op de clients telkens naar 192.168.1.1 gestuurd worden (juist ja de router!). Hoe krijgen we die tot bij de server?

  • a) ... ofwel configureer je een extra route in de router, zodat via de DHCP offers de route ook wordt meegegeven
  • b) ... ofwel configureer je dit manueel op iedere client

Aangezien al mijn clients statisch ingesteld zijn, moest ik wel voor optie b) gaan.
Je moet op elke client het volgende ingeven:

$ route -p ADD 192.168.0.0 MASK 255.255.255.0 192.168.1.100

Add new comment

The content of this field is kept private and will not be shown publicly.

Full HTML

  • Lines and paragraphs break automatically.
  • You can caption images (data-caption="Text"), but also videos, blockquotes, and so on.
  • Web page addresses and email addresses turn into links automatically.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <bash>, <cpp>, <css>, <html5>, <java>, <javascript>, <php>, <sql>, <xml>. The supported tag styles are: <foo>, [foo].
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.