|
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
|
|
"http://www.w3.org/TR/xhtml111/DTD/xhtml111.dtd">
|
|
|
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
|
|
<head>
|
|
<title>Soekris Router Project</title>
|
|
<link rel="stylesheet" href="style.css"/>
|
|
</head>
|
|
|
|
<body>
|
|
<p>
|
|
This document no longer reflects my configuration, but rather
|
|
than delete possibly useful information, I've made notes of my
|
|
changes on a new <a href="errata.html">errata</a> page.
|
|
</p>
|
|
|
|
<h1>Introduction</h1>
|
|
<p>
|
|
Typically there are two choices when setting up a small network:
|
|
buy consumer grade commercial hardware, or find an old machine
|
|
and install unix. A small wireless router and firewall from <a href="https://www.netgear.com"> NetGear</a> or <a href="https://www.linksys.com">Linksys</a> could hardly be easier
|
|
to install and has many pretty <a
|
|
href="http://www.brabandt.de/html/blinken_lights.html">blinken
|
|
lights</a>. It isn't very flexible though, often two or more
|
|
different boxes are needed, upgrading means buying another one,
|
|
and some "enterprise" features are plain not available at the
|
|
low end. On the other hand, a full fledged computer makes a lot
|
|
of noise and has many moving parts to fail.
|
|
</p>
|
|
|
|
<p>
|
|
The solution: create a custom network device running on silent
|
|
hardware designed for embedded systems. Select the best
|
|
hardware and software available to create a device
|
|
unparalleled by anything in the commercial marketplace.
|
|
</p>
|
|
|
|
<ol>
|
|
<li>Stateful packet filtering with NAT</li>
|
|
<li>High power 802.11b wireless access point</li>
|
|
<li>Routing</li>
|
|
<li>Network services (DHCP, NTP, SSH, caching DNS)</li>
|
|
<li>IPsec endpoint</li>
|
|
<li>Upgradable (802.11g, IPv6, etc)</li>
|
|
</ol>
|
|
|
|
<p>
|
|
The real selling point however is that this network device will
|
|
be running a full unix operating system, which provides nearly
|
|
infinite flexibility. All aspects of operation can be fine
|
|
tuned, comprehensive monitoring is possible, and arbitrary
|
|
programs may be installed.
|
|
</p>
|
|
|
|
<h1>The Platform</h1>
|
|
<p>
|
|
<a href="https://www.soekris.com">Soekris Engineering</a>
|
|
produces an excellent line of tiny, x86 compatible,
|
|
embedded computers complete with cases. So first on the list, one <a href="https://www.soekris.com/net4521.htm">net4521</a> which has
|
|
the following key specifications:
|
|
</p>
|
|
|
|
<ul>
|
|
<li>AMD <a href="https://www.amd.com/epd/processors/4.32bitcont/14.lan5xxfam/24.lansc520/">Elan SC520</a> 486 class 133mhz CPU, 64 megs of RAM</li>
|
|
<li>Two 10/100 megabit ethernet ports</li>
|
|
<li>Two PCMCIA/PCCard/CardBus slots</li>
|
|
<li>One Mini-PCI slot, filled with a
|
|
<a href="https://www.soekris.com/vpn1201.htm">vpn1211</a> hardware crypto board</li>
|
|
<li>A CompactFlash card slot for permanent storage of the system software</li>
|
|
</ul>
|
|
|
|
<p>
|
|
The Soekris boards support all the free *BSD variants, Linux,
|
|
and probably anything else that runs on standard PC compatible
|
|
hardware. Soekris has quite a following amongst the wireless
|
|
networking community, and so has a lively <a
|
|
href="http://lists.soekris.com/mailman/listinfo/soekris-tech">mailing
|
|
list</a> with volumes of information about how to get everything
|
|
working.
|
|
</p>
|
|
|
|
<h1>The Wireless Card</h1>
|
|
<p>
|
|
Next is an 802.11b wireless card. Many aren't capable of acting
|
|
as an access point, and some aren't even supported under open
|
|
source operating systems. Fortunately there is a wonderful
|
|
chipset called Prism from <a
|
|
href="http://www.intersil.com">Intersil</a> that is very well
|
|
supported under *BSD and Linux, and it supports an access point
|
|
mode.
|
|
</p>
|
|
|
|
<p>
|
|
One of the people on the Soekris mailing list happens to have a
|
|
company named <a href="https://www.netgate.com">NetGate</a>, and
|
|
this company just happens to ship a <a href="https://www.netgate.com/EL2511.html"> 802.11b PC-Card</a>
|
|
based on the Prism 2.5 chipset which puts out 200mw with
|
|
excellent sensitivity ratings. Not only that but they sell <a href="https://www.netgate.com/kits.html">kits</a> which include:
|
|
</p>
|
|
|
|
<ul>
|
|
<li>The card itself</li>
|
|
<li>A "pigtail" which connects the card to a connector on the outside of
|
|
the Soekris case</li>
|
|
<li>An antenna which greatly increases the range</li>
|
|
</ul>
|
|
|
|
<p>Great stuff!</p>
|
|
|
|
<h1>The Operating System</h1>
|
|
<p>
|
|
Choosing the right network operating system may be the toughest
|
|
task. Linux and the *BSDs (FreeBSD, NetBSD, OpenBSD) will all
|
|
run on this hardware, as will other non-free operating systems
|
|
which I gave no thought to. The <a
|
|
href="http://hostap.epitest.fi">HostAP</a> driver and software
|
|
are what allow a Prism based 802.11b card to act as an access
|
|
point. Apparently this was written for Linux but it is
|
|
available on BSD too.
|
|
</p>
|
|
|
|
<p>
|
|
<a href="https://www.openbsd.org">OpenBSD</a> has a hard won
|
|
reputation for security, stability, and everything else I am
|
|
looking for. It was the natural choice, and many other people
|
|
on the Soekris mailing list have discovered the same thing.
|
|
There is even a project called <a
|
|
href="http://opensoekris.sourceforge.net">OpenSoekris</a> which
|
|
will help set up a Soekris based system from an existing OpenBSD
|
|
install.
|
|
</p>
|
|
|
|
<p>Some of the key features of OpenBSD are:</p>
|
|
|
|
<ul>
|
|
<li>A great <a href="https://www.openbsd.org/faq/faq6.html#PF">packet filter</a>
|
|
with which to make a firewall and NAT engine</li>
|
|
<li>An <a href="https://www.openbsd.org/faq/faq13.html">IPsec</a> engine</li>
|
|
<li>Plus hardened services like a DNS server</li>
|
|
</ul>
|
|
|
|
<h1>Security</h1>
|
|
|
|
<p>
|
|
Sure WEP can be cracked, so can a copper cable network, it just
|
|
requires more intrusive physical access. Even more intrusive is
|
|
tapping into fiberoptic cables, but that too is possible. Real
|
|
security requires top strength crypto and a great solution
|
|
is <a href="https://www.ietf.org/html.charters/ipsec-charter.html">IPsec</a>.
|
|
</p>
|
|
|
|
<p>
|
|
IPsec, via the ISAKMP protocol, can handle client authentication
|
|
via passphrases or x.509 certificates. No need to worry about
|
|
802.1x or proprietary enhancements to WEP. IPsec is extremely
|
|
strong and isn't tied to wireless networks. So, the security
|
|
portion of the plan is:
|
|
</p>
|
|
|
|
<ol>
|
|
<li>Deny all access from the internet interface</li>
|
|
<li>Allow all local clients access to DHCP and ISAKMP</li>
|
|
<li>Deny all other unencrypted communications to wireless clients</li>
|
|
<li>Allow IPsec traffic from authenticated wireless clients</li>
|
|
<li>Allow local administration via SSH</li>
|
|
</ol>
|
|
|
|
<h1>Sections</h1>
|
|
<p>The project is divided into the following sections:</p>
|
|
|
|
<ol>
|
|
<li>Introduction</li>
|
|
<li><a href="openbsd.html">OpenBSD Configuration</a></li>
|
|
<li><a href="diskless.html">Diskless Booting</a></li>
|
|
<li><a href="cf-install.html">CompactFlash Installation</a></li>
|
|
</ol>
|
|
|
|
<p>There are also client configuration how-tos:</p>
|
|
|
|
<ol>
|
|
<li><a href="macosx-ipsec.html">Mac OS X IPSec</a></li>
|
|
</ol>
|
|
|
|
<p>
|
|
<a class="section" href="openbsd.html">
|
|
Next: OpenBSD Configuration >></a>
|
|
</p>
|
|
|
|
<p><img alt="email address" src="contact.png"/></p>
|
|
</body>
|
|
</html>
|
|
|