If you want anything done well,do it yourself. This is why mostpeople laugh at their own jokes.
?Bob Edwards
An increasingly popular method for creating wireless networks is to forgo access point hardware entirely and use wireless cards directly in a host computer. The tremendous flexibility of free operating systems (such as Linux and BSD), combined with the ubiquity of inexpensive hardware, makes host-based networking the tool of choice for many large wireless projects. The added flexibility of such systems increases their complexity; if you're not already familiar with Linux, the details of this chapter might seem daunting. If you are just getting started with wireless networking, be sure to read the previous chapter on access points to see if they'll fit your needs.
Like a hardware access point, most useful host-based access points have at least two network interfaces: the wireless interface and one other interface. The second is typically an Ethernet device, although it can also be a modem, another radio, or any other network device. A computer can provide all of the typical access point functions, including DHCP, NAT, bridging, and MAC filtering. In addition, you have the entire suite of Linux applications and networking mechanisms at your disposal, allowing for all sorts of interesting features (including real routing, content-based packet filtering, dynamic intrusion detection, captive web portals, IPSEC tunnels, bandwidth throttling, and just about anything else you can think of).
The one critical technology that has been developed since the first edition of this book was released is the so-called Host AP driver, developed by Jouni Malinen. This software allows a Linux or BSD computer equipped with a wireless card to appear as if it were a true access point (that is, operate as a true BSS Master). While you can't use Host AP with every card on the market (in fact, it works only with cards that use the Prism chipset), it does perform surprisingly well. The Host AP driver allows the host computer to act as an AP for any 802.11b client, regardless of the manufacturer.
Another option for host-based networking is IBSS mode. As with Host AP, an IBSS network effectively makes expensive access point hardware entirely optional. Instead of a centralized model in which all clients must be within range of an access point in order to participate, IBSS allows any node to talk to another node within earshot. If one of those nodes happens to be a gateway to the Internet, it can also act as an access point and performs all typical access point functions.
The biggest disadvantage to IBSS is that, while nearly all client cards support IBSS mode, cards of different manufacturers don't always work together. This situation has improved in the last year, but cards are still not nearly as compatible in IBSS mode as they are when talking to a BSS Master. Also, some client software doesn't do such a good job of detecting available IBSS networks and, once associated, they rarely show signal and noise statistics.
Whenever possible, I highly recommend that you use the Host AP driver for host-based networking. You will reach the largest number of possible clients, and will be able to take advantage of all sorts of nifty features that are just creeping into the Host AP development tree. In this chapter, I'll show you how to build both a Host AP and an IBSS gateway using Linux.