WifiDog:A captive portal suite
What is it composed of ?
A: It is composed of 2 components:
- The client is a daemon process - this gets installed on every wireless router
- The auth server is a web application - this gets installed in a central location
What do I need ?
- Basic proficiency in a GNU/Linux environment
- A GNU/Linux OS with netfilter compiled into the kernel
- The iptables package
- The GNU C compiler (gcc). Other compilers may work, but we have not tested and will not support them.
- The latest Wifidog tarball which can be obtained from SourceForge
Pre-installation
This is where a lot of people run into problems, so let's state this in bold:
MAKE SURE EVERYTHING WORKS FIRST BEFORE INTRODUCING Wifidog INTO THE ENVIRONMENT
That especially means:
- The router must boot properly
- The router must bring up the interfaces properly
- The router must set up the routes properly
- The router must connect to the internet properly
- DNS settings must be set or obtained properly. DNS must work.
- DHCP settings (client, server or both) must be set or obtained properly.
- The ipt_mac.o kernel module must be loaded.
- If using NAT, the router must setup NAT/masquerading rules with iptables properly
- Clients on the desired (WIFI) network must be able to bind, associate, lease and connect the internet properly
- All the above must happen automatically when the router starts or gets rebooted
Do NOT proceed with installing Wifidog until you've satisfied the above. It will not work otherwise and you will waste lots of time.
Installation
Wifidog, like many open source projects, is distributed with standard autotools utilities to make installation easy. Unpack the tarball (from Sourceforge) or get the lastest source from SVN (see Download menu), then follow the standard:
./autogen.sh make make install
If you do not install it with make install, then you will find the compiled wifidog gateway binary in src/wifidog (also don't forget to copy wifidog.conf to /etc).
OpenWrt? ipkg
More details can be found in the README.openwrt file.
mkdir ~/wifidog.openwrt cd ~/wifidog.openwrt wget http://downloads.openwrt.org/whiterussian/newest/OpenWrt-SDK-Linux-i686-1.tar.bz2 tar -jxvf OpenWrt-SDK-Linux-i686-1.tar.bz2 svn checkout https://dev.wifidog.org/svn/trunk/wifidog cd wifidog ./autogen.sh make ipk OPENWRTSDK=~/wifidog.openwrt/OpenWrt-SDK-Linux-i686-1
If there were no errors, your package should be in ~/wifidog.openwrt/OpenWrt-SDK-Linux-i686-1/bin/packages
Configuration
Edit /etc/wifidog.conf and follow the instructions in the file. Things should be self-explanatory.
Running Wifidog for the first time
Run Wifidog with the following switches:
wifidog -f -d 7 -f means to run in foreground (do not become a background daemon) -d 7 increases debug output level to the maximum
Testing
As a client on the WiFi network (or whatever interface is configured as the LAN interface in /etc/wifidog.conf), open a web browser and try to browse to your favourite web site.
Monitor the output of the running Wifidog to see what it's doing.