Its functionality is similar to Nocatsplash, but it is derived from the codebase of the Wifi Guard Dog project. Nodogsplash is released under the GNU General Public License.
The following describes how Nodogsplash works, how to get it and run it, and how to customize its behavior for your application.
When installed and running, Nodogsplash implements a simple 'authentication' protocol. First, it detects any user attempting to use your internet connection to visit a website. It captures the request, and instead serves back a 'splash' web page using its own builtin web server. The splash page provides a link which, when the user clicks on it, opens limited access for them to the internet via your connection, beginning by being redirected to their originally requested website. This access expires after a certain time interval.
Nodogsplash also permits specifying the amount of bandwidth provided to users, if you don't want to grant all of your available upload or download bandwidth.
Specific features of Nodogsplash are configurable, by editing the configuration file and the splash page. The default installed configuration may be all you need, though.
br0
or
eth1
), and for the
following use ssh or telnet access to your router over a different interface.
nodogsplash*.ipk
package you
want to install from the project website, copy it to
/tmp/
on your OpenWRT router,
and, in as root on the router, run:
ipkg install /tmp/nodogsplash*.ipkOr, to install the latest version, you can just run:
ipkg install http://kokoro.ucsd.edu/nodogsplash/latest.ipk
br0
,
edit /etc/nodogsplash/nodogsplash.conf
and set
GatewayInterface
.
/etc/init.d/S65nodogsplash start
/usr/bin/ndsctl status
/etc/init.d/S65nodogsplash stop
ipkg remove nodogsplash
br0
,
the bridge to both the wireless and wired LAN; or the wireless lan
interface is typically named eth1
if you have broken the br0
bridge to separate the wired and
wireless LAN's.
FirewallRuleSet authenticated-users
and
FirewallRuleSet users-to-router
in the nodogsplash.conf
configuration file).
FirewallRuleSet preauthenticated-users
and
FirewallRuleSet users-to-router
in the nodogsplash.conf
configuration file).
Any other packet is dropped, except that a packet
for destination port 80 at any address is redirected to port 2050 on
the router, where nodogsplash's builtin
libhttpd-based
web server is listening. This begins
the 'authentication' process. The
server will serve a splash page back to the source IP address of the
packet. The user clicking the appropriate link on the splash page will complete
the process, causing future packets from this
IP/MAC address to be marked as
Authenticated until the inactive or forced timeout is reached,
and its packets revert to being Preauthenticated.
Of course, there is the usual tradeoff between security and usability.
For example, not opening ports 25 and 80 in the
FirewallRuleSet users-to-router
helps to prevent unauthorized administrative access to your router,
but (if you have an empty TrustedMACList) does this by blocking
all ssh and http access to the router from the managed
interface.
Nodogsplash implements this functionality by enabling two intermediate queue devices (IMQ's), one for upload and one for download, and attaching simple rate-limited HTB qdiscs to them. Rules are inserted in the router's iptables mangle PREROUTING and POSTROUTING tables to jump to these IMQ's. The result is simple but effective tail-drop rate limiting (no packet classification or fairness queueing is done).
/etc/nodogsplash/nodogsplash.conf
/etc/nodogsplash/htdocs/splash.htmlWhen the splash page is served, the following variables in the page are replaced by their values:
$gatewayname
The value of
GatewayName
as set in nodogsplash.conf
.
$authtarget
A URL which encodes a unique token and
the URL of the user's original web request. If nodogsplash receives a
request at this URL, it completes the authentication process for
the client and replies
to the request with a "307 Temporary Redirect" to the encoded originally
requested URL.
$imagesdir
The directory in nodogsplash's web hierarchy
where images to be displayed in the splash page must be located.
$tok
,$redir
,$authaction
, and
$denyaction
are also available and can be useful if
you want to write the splash page to
use an HTML form instead of using $authtarget
as the value
of an href attribute to communicate with the
nodogsplash server.
/etc/init.d/S65nodogsplash
file to set the
OPTIONS
variable to the flags "-s -d 7"
, restart or reboot, and
view messages with logread.
The -s
flag logs to syslog; the -d 7
flag
sets the maximally verbose level for debugging messages (see syslog.h).
You don't want to run with these flags routinely, as it will
quickly fill the syslog circular buffer, unless you enable remote logging.
A lower level of logging is more appropriate for routine use.
Alternatively, you can set the flag -f
instead of -s
,
and restart.
This will run nodogsplash in the foreground, logging to stdout.
iptables -t mangle -v -n -LFor extensive suggestions on debugging iptables, see for example Oskar Andreasson's tutorial.
br-lan
.
Edit /etc/nodogsplash/nodogsplash.conf
and set
GatewayInterface
appropriately.
/etc/init.d
, but appropriately named symlinks
in /etc/rc.d
determine the sequencing of scripts at boot.
After installing Nodogsplash, do the following:
cd /etc/init.d mv S65nodogsplash nodogsplash cd /etc/rc.d ln -s /etc/init.d/nodogsplash S65nodogsplashAnd then use
/etc/init.d/nodogsplash
to start and stop
Nodogsplash from the command line.