Wireless Bridging
Introduction
MadWifi allows fully transparent bridging in the following modes:
- Master (working as Access Point)
- Managed (working as Access Point client)
- Ad-hoc (working peer-to-peer, without Access Point)
Station Mode client-bridge (ath0-eth0) doesn't work: A STA mode interface can only send using one MAC address.
"Fully transparent" in this context means that you can bridge traffic from other ethernet hosts over the WLAN link. Have a look at the Bridging FAQ (section I still don't understand!'') to learn why this is a noteworthy feature :)
For the same reason it might be worth to warn you about possible compatibility issues: non-madwifi driven equipment might cause problems, due to a lack of a proper support of necessary functionality. The About/TheProjectWDS? page, although related to MadWifi, might give some ideas.
Linux kernel series 2.4 and 2.6 support bridging out of the box, and virtually every distribution comes with the necessary tools. Make sure your kernel has bridging support enabled (option CONFIG_BRIDGE in kernel .config file), and that you have the bridge-tool package installed (name may vary). You should have basic knowledge about how to get a working bridge with Linux, too.
How to configure
Bridging can be used in several scenarios. The most common cases are described below.
Scenario 1: operating as Wireless Distribution System (WDS)
This most probably is what the majority of users might be looking for. WDS? usually is used to make two (or more) Access Points talk to each other, for example to connect two distinct (wired) ethernet networks with a WLAN link. The main difference over the other scenarios below is that there is no need for an association, which allows to have more than one WDS link at the same time.
First you have to create one interface that works in master mode. Configure it according to your needs, at least by setting an ESSID and selecting a channel. Then create one interface per WDS link and enable the use of 4-address-headers with iwpriv ath0 wds 1. After that you need to create a bridge interface and enslave the corresponding interfaces to it.
# create and configure AP interface wlanconfig ath0 create wlandev wifi0 wlanmode ap iwconfig ath0 essid "my_ap_essid" channel# create first WDS interface, tell about WDS partner, enable WDS mode wlanconfig wdsath10 create wlandev wifi0 wlanmode wds iwpriv wdsath10 wds_add iwpriv wdsath10 wds 1 # create second WDS interface, tell about WDS partner, enable WDS mode wlanconfig wdsath11 create wlandev wifi0 wlanmode wds iwpriv wdsath11 wds_add iwpriv wdsath11 wds 1 # bring all interfaces up # NOTE: Bringing up the AP interface first is important at this time ifconfig ath0 up ifconfig wdsath10 up ifconfig wdsath11 up # create the bridge and enslave all needed interfaces brctl addbr br0 brctl addif br0 ath0 brctl addif br0 wdsath10 brctl addif br0 wdsath11 # bring up the bridge ifconfig br0 up
Scenario 2: operating as repeater
Do you know the fancy SOHO devices from D-Link and friends? They offer a mode that allows them to work as repeater for another Access Point, which allows to increase the coverage of this AP. Something similar can be done with MadWifi as well.
to be continued
Scenario 3: bridging as AP client or in Ad-hoc mode
Further information
http://linux-net.osdl.org/index.php/Bridge http://linux-net.osdl.org/index.php/Bridge#Spanning_Tree_Protocol http://www.tldp.org/HOWTO/BRIDGE-STP-HOWTO/