FreeBSD is very well suited for use as a wifi access point as it has 'master mode' support for a variety of wifi network cards, out of the box. Some of these include ralink and Atheros cards.
There are many difficulties setting up a wireless network access point on linux. Some of the problems(with non madwifi cards) include:
- You must use a kernel that is yet-to-be released (2.6.26-rc4).
- You must patch the kernel. Download Patch
- You must compile a recent libnl(I used libnl-1.1-r1, on Gentoo) against the custom kernel.
- On Gentoo you need to copy nl80211.h from your kenrel directory to /usr/include/linux
- Finally, you need to compile a git version of hostapd...
All of the above steps must be completed for maximum support of various wireless network cards. Most other sets are fairly similar to those on FreeBSD.
On this Howto we will assume that your modem gives you a dhcp address,see AccessPoint using pppoe if you need to setup PPPOE
For my setup, and the instructions included here, I used:
- 2 Realtech PCI 10/100 cards, on FreeBSD. These cards are recognized as rl0 and rl1. (Perhaps there is the possibility to use interfaces aliasing, but as i had 2 cards...)
- 1 Ralink rt2500 PCI card, on FreeBSD. This card is recognized as ral0.
Installation and Configuration
- Install FreeBSD as usual. This example uses FreeBSD 7.0.
- Enable ssh logins during the installation, or add the following line to your /etc/rc.conf:
- If you have a DHCP-enabled modem, you can add the following to your /etc/rc.conf:
Note, make certain you replace rl0 with your wired network interface name.
To configure the wireless card, the following commands need to be executed:
ifconfig ral0 inet 192.168.1.1 netmask 255.255.255.0 ssid freebsdap mediaopt hostap channel 4
Note that, in the FreeBSD Handbook, inet is placed incorrectly. Also, make certain to include a channel number. Without it, I was unable to get this working.
Next, try to associate to the new AP from a client. If something goes wrong (i.e. ping doesn't work), look to dmesg for debugging output. Specifically, look for association messages.
Finally, if you can see the wireless network, and can ping it, simply add the following to /etc/rc.conf:
ifconfig_ral0="inet 192.168.1.1 netmask 255.255.255.0 ssid freebsdap mediaopt hostap channel 4"
Useful Association Commands
Under GNU/Linux type as root(remplacing wlan0 by your wifi card interface name):
ifconfig wlan0 up iwlist wlan0 scan iwconfig wlan0 essid "freebsdap" ifconfig wlan0 192.168.1.100 netmask 255.255.255.0 ping 192.168.1.1
Under FreeBSD type as root(remplacing ral0 by your wifi card interface name):
ifconfig ral0 up ifconfig ral0 list scan ifconfig ral0 inet 192.168.1.100 netmask 255.255.255.0 ssid freebsdap ping 192.168.1.1
DNS and DHCP
Once the wireless AP is working, we can install DNS and DHCP servers. For simplicity, we will use dnsmasq. As root, execute the following command:
cd /usr/ports/dns/dnsmasq && make config && make install
On the configuration menu, deselect the followingn options:
Once installed, we need to configure dnsmasq:
Edit /usr/local/etc/dnsmasq.conf with your favorite editor and add the following:
# filter what we send upstream domain-needed bogus-priv filterwin2k localise-queries # allow /etc/hosts and dhcp lookups via *.lan local=/lan/ domain=workgroup expand-hosts #resolv-file=/tmp/resolv.conf.auto dhcp-authoritative #dhcp-leasefile=/tmp/dhcp.leases # use /etc/ethers for static hosts; same format as --dhcp-host # <hwaddr> <ipaddr> read-ethers # other useful options: # default route(s): dhcp-option=3,192.168.1.1 # dns server(s): dhcp-option=6,192.168.1.1 dhcp-range=192.168.1.100,192.168.1.255,255.255.255.0,12h
The option, read-ethers, permits you to assign statics IPs to certain MAC addresses. Edit /etc/ethers with entries as follows:
In order to give a DNS name to this entry, edit /etc/hosts and add an entry like this:
To start your dnsmasq server at boot, add the following to /etc/rc.conf:
You can now test the wifi connection with any graphical tool (like NetworkManager in GNU/linux or even test it with a windows computer) you can even try to ping a website... but you will only get his ip and no response...that's because we didn't set up the NAT yet...
Nat and firewall
in order to set the nat we will add this to /etc/rc.conf:(remplacing ral0 by your wired card(that is connected to the internet) interface name)::
gateway_enable="YES" firewall_enable="YES" firewall_type="OPEN" natd_enable="YES" natd_interface="rl0" natd_flags=""
if you wish to redirect ports add this to natd_flags="" in /etc/rc.conf:
-redirect_port tcp 192.168.0.6:80 80
now normally the access point should work...
now that we have wireless we could choose between theses choices:
- having a full open wireless(not great for security)
- having a wpa wireless(not compatible with all drivers,devices doesn't always work),no guests...
- having an open wireless while encrypting the data sent to to wireless access point...yes that is possible...with the help of openvpn
i chose the third possibility.
here the commands to run in order to install openvpn:
cd /usr/ports/security/openvpn make make install
cd /usr/ports/shells/bash make make install ln -s /usr/local/bin/bash /bin/bash
run theses commands:
cp -r /usr/local/share/doc/openvpn/easy-rsa/2.0/ /root/easy-rsa-2.0
here we will copy it in order not to have our keys erased by an update... then we will need bash run:
/bin/bash cd /root/easy-rsa-2.0
then we will make the certificates: modify the vars script in order to suit your needs,then run:
source ./vars ./clean all ./build-ca ca
then we will build the server key:
then we will build the clients key:
./build-key client1 ./build-key client2
then we genreate diffie helman parameters:
in order to build a new client just do:
source ./vars ./build-key client2
then copy the keys at the keys location:
cp -r keys /usr/local/etc/openvpn/keys
alternatively you can do the following:
mkdir /usr/local/etc/openvpn/keys/ cd /root/easy-rsa-2.0/keys cp ca.crt /usr/local/etc/openvpn/keys/ca.crt cp server.crt /usr/local/etc/openvpn/keys/server.crt cp server.key /usr/local/etc/openvpn/keys/server.key cp dh1024.pem /usr/local/etc/openvpn/keys/dh1024.pem
We will first install all in test-mode that is to say not runnning ... \n
Happiness: Getting Our Priorities Straight
There is a vitally important shift underway in how we think about progress. Growing numbers of economists, political leaders and expert commentators are calling for better measures of how well society is doing; measures that track not just our economic standard of living, but our overall quality of life. We too can benefit from a shift in priorities and a recognition that real happiness is less about what we earn or own and more about our relationships and state of mind;
Your Life Is What You Make It
If you limit your choices only to what seems possible or reasonable, you disconnect yourself from what you truly want, and all that is left is compromise. Robert Fritz
The Power of You! Living Life Without Limits
To every person there comes in their lifetime that special moment when you are figuratively tapped on the shoulder and offered the chance to do a very special thing, unique to you and your talents. What a tragedy if that moment finds you unprepared or unqualified for work which could have been your finest hour. Winston Churchill
Worth Our Weight: The Taste of Compassion
Its a sunny Saturday morning, and my wife and I turn into a residential neighborhood of Santa Rosa, California the only sign of commerce is a beleaguered shopping mall a few hundred feet away. I glance down at my GPS to make sure this is where we want to be and in doing so I almost pass my destination. There it is tucked away to the left, sandwiched between two homes: Worth our Weight (W.O.W)
The Importance of Imagination
While growing up, Id never really considered how important it is to be imaginative. Its a childhood profession, you could say. It comes naturally. Then we hit an age when were presented with a scantron of bubble-in options, a template for a CV that we need to create, and Excel. At that point, our learning has to fit into certain parameters: within that little bubble, within the one page limit, and within a tiny digital graph. So, what happens to our imagination?It seems to fade.