Here's where we publish articles about wireless technologies.
The SocalFreenet project has tried to develop a "standard AP" that we could order and make over and over again. In the pages below we detail our first attempt. This field is changing so fast, however, that we've deviated slightly from this over time. Currently (May 2004) we like the Metrix kits which are essentially the same as our original standard AP but with an updated Soekris board and a nicer outdoor box.
It may also make sense to have an indoor, cheaper option for coffee shops etc. Soekris becomes a little pricy in this scenario. Something with the feature set of a hacked WRT54G but a better radio would be perfect. We're still looking for the perfect candidate for this.
See also our 802.11a relay project which builds on the work done here.
Recently we returned to an installation of our first standard AP to update the equipment slightly so we could reuse the parts elsewhere. This saved some money, assuming labor is free :-), and also mitigates any (unreported) problems we may have had with the m0n0wall AP powersave mode bug. I hasten to add our m0n0wall client has had no problems running trouble free for 244 days before I rebooted to upgrade the firmware!
Since we first defined and described our standard AP, we've moved from 802.11b-based m0n0wall backhauls running on Soekris 4501 boards to 802.11a backhauls running Pebble on Soekris 4526 boards purchased as kits from Metrix.
The Engenius AP3 (recently replaced with the CB3+ Deluxe) is commonly hacked to turn it into a bridge or to add PoE support, but our needs were simpler. We had already built a PoE splitter/injector that used 12V just like the AP3, so all we needed was an external antenna connector.
The images show the simple steps needed. First open the AP3 using the four screws on the bottom. Remove the top of the case - it should come apart easily. Then remove the existing pigtail connector and add your new one. Make sure the removed connector doesn't touch any of the circuitry. You can drill a hole for a new connector, or dangle it free as we did here. We left the lid off the case to help cooling, and since it was going inside a weather resistant enclosure anyway.
Updating the AP was simple. First we configured the AP via its web-based interface. Then we got on the roof, unscrewed the Soekris board, removed the existing pigtail and then added the AP3 and its new pigtail. Then we plugged it in and ... held our breath when the LAN light didn't go on. Ugh, at first we thought we needed to add a crossover to the Cat-5 cable, but then the LAN light came on and it all started up just fine.
After that it was mostly plain sailing. While there, we updated m0n0wall to the latest firmware version. There was some odd interaction between its auto-firmware update function and the MikroTik captive portal gateway, but after we disconnected the backhaul that went away and we could upgrade first to m0n0wall 1.0 and then 1.11 succesfully.
Now we're ready to install the Soekris board, with m0n0wall, as the captive portal gateway for the 2nd DSL feed in the Golden Hill neighborhood network.
Here's some preliminary thoughts following up on this week's SDWUG meeting discussion. I propose that we spec and build a standard relay configuration consisting of:
My thinking about the various parts of this is:
I further propose that we price all installations at flat fee of $1000. In an easy install we should aim to have $100 left over to put towards site survey equipment etc. Rough cost list including shipping & taxes is: $200 (Soekris) + $80 (Senao) + $100 (case with connector and pigtail) + $50 (POE + cat 5 cable, crimp connectors) + $70 (antenna) = $500. We could probably do a little better in quantity (e.g. Soekris drops to $156 for 5+). A fixed price simplifies quoting for landlords / whoever, and also allows us to pre-purchase in quantity without getting into all the bits of paper that reimbursement requires.
(Hmm, $1000 doesn't include mounting hardware or a tripod if need be... might be barely enough...)
A cheaper option is to put two radios on one Soekris as BAWUG/SFLan do with their kit, http://www.archive.org/iathreads/uploaded-files/AstridB-PICT0017.JPG, but I worry about interference reducing throughput as described here
http://lists.nocat.net/pipermail/nocatnet/2003-July/002138.html ,
http://lists.nocat.net/pipermail/nocatnet/2003-July/002163.html and
http://lists.nocat.net/pipermail/nocatnet/2003-September/002347.html.
Anyhow, this is long enough for one post. I look forward to some feedback!
(Edited Feb 4 to reflect change from Soekris 4511 to 4501).
Here's a proposed parts list for a Soekris Relay. Comments welcomed! Did I miss anything?
Open questions: 1) Do we need a lightening arrestor on the Yagi / Patch relay antenna?
Item# | Description | Vendor | Qty | Price | Ext Price |
|---|---|---|---|---|---|
15450130 | net4501-30 Board only | www.soekris.com | 2 | 161 | 322 |
31311212 | Power Supply 12V, 1.25A, Mini switch mode | www.soekris.com | 2 | 10 | 20 |
64MB CF | Compact Flash for Soekris | www.newegg.com | 2 | 23 | 46 |
Nema box | Outdoor case | ESD / hardware store | 2 | ~50 | 100 |
NL-2511MP | 160mW Ultra Long Range Wireless miniPCI Card | www.netgate.com | 2 | 79 | 158 |
PIG-UFL-NF-19 | U.FL to N FEMALE Pigtail | www.netgate.com | 2 | 13 | 26 |
MFB24008DT12 | Omni Antenna, 8 dBi, 12deg downtilt | www.ecommwireless.com | 1 | 75 | 75 |
WISP24015PTNF | Yagi Antenna, 15 dBi | www.ecommwireless.com | 1 | 60 | 60 |
WISP24013PTNF | Patch Antenna, 13 dBi (in place of Yagi) | www.ecommwireless.com | 1 | 40 | 40 |
LMR195–05–NMNM | LMR195 cable, N male to N male, 5 ft | www.ecommwireless.com | 2 | 22 | 44 |
AL-NMNFB | N-Male-N-Female 0-3 GHz Lightning Protector | www.hyperlinktech.com | 2 | 25 | 50 |
wall mount | mount Yagi/Patch to wall | hardware store | 1 | ~25 | 25 |
peak mount | mount omni to roof peak | hardware store | 1 | ~25 | 25 |
ethernet | cable and connectors | various | 1 | 10 | 10 |
966 |
Notes:
Please add any comments using the link below.
Updated Feb 4 to reflect switch to 4501 (from 4511) and miniPCI radio from PC Card radio).
Controlling cost is one of the challenges of creating a standard access point. We took photos of the steps we went through to fit the Soekris 4501 into a standard 8"x8" outdoor electrical box. Here are some of them:
This is part of our Standard Access Point project.
In our standard Access Point, m0n0wall will run on each of two radios. The basic configuration we're trying to achieve is:
Through trial and error it seems the best way to assign these roles in m0n0wall is as follows.
Not absolutely necessary, but we prepared the soekris boards by connecting a serial adapter, booting it, interrupting the boot sequence within 5 secs with Ctrl-P and then entered the following commands:
set conspeed 9600 set pxeboot disabled set bootdelay 2
The console speed is set to match the default m0n0wall console speed. Disabling PXE boot seems like a good idea. And the minimum 2 seconds boot delay shaves 3 seconds off the boot time.
One radio provides the relay back to 'home base'. This radio also provides DHCP services and routing. We use the WAN port to communicate to the "Home AP" and LAN is hardwired to the local AP radio. Here are the configuration steps:
At this stage your LAN computer should be able to ping the gateway computer beyond the WAN port (e.g. 10.0.0.1). It may even be able ping external links (e.g. www.yahoo.com). A couple of issues may stop this from happening. My gateway to the internet box (at 10.0.0.1) is also running m0n0wall and I had to make two changes to its config before Radio 1 traffic could get to the internet:
The AP radio is configured as a bridge. I.e. virtually none of the m0n0wall features are used.
As 802.11b becomes more and more congested, we're looking at alternatives to use for relay or backhaul links. Price is always an issue, so we're considering 802.11a gear which thanks to 802.11g now seems to be largely ignored in the consumer realm and is thus sometimes quite cheap.
The project pages below describe how we built our own backhaul for approximately $450 using two $22 surplus Proxim Harmony APs, a Soekris board, patch antennas etc.
Important Note About FCC Compliance: We are currently evaluating the FCC compliance of the prototype 802.11a system described here. Anyone seeking to emulate our design should do likewise! We take compliance seriously and will modify the design to comply if at all necessary.
The key to our 802.11a backhaul project was finding the Proxim 802.11a Harmony 8571 which is a rare 802.11a device because it has removable antennas. These are available at www.justdeals.com for $15, but with $12 shipping for the first and $4 for subsequent devices, they average out around $23 each for two with shipping. Still pretty reasonable for a device that was originally $600!
We took one apart and discovered it has an 'unwrapped' PCMCIA card in it with standard SMA connector pigtails. Its also potentially re-programmable as a bridge which would make this whole relay unbelievably cheap, but we lack the expertise to get that far! The non-standard PoE support was a nice bonus - as is the ability to run with the standard power supply 100 feet away.
The next piece of the puzzle was antennas. Most point to point 802.11a antennas are in the 5.8GHz range where point to point is allowed by the FCC. The proxim is at 5.3GHz as its designed for multipoint. Fortunately SuperPass has a suitable patch antenna that someworks across the entire 802.11a 5GHz range of 5.1-5.9GHz. At 18.5dbi with 12 degree H and 32 degree V beam its a great solution (so far).
We decided to use the Proxim AP unmodified at one end of the link and a Soekris board with a Proxim PCMCIA card removed from another AP at the other. The Soekris adds a lot to the expense, but does provide a lot of configuration flexibility. The MadWiFi Atheros chip drivers work fine with this chipset (at least for our needs).
There's a couple of ways to slice this as some new products are almost available. First, here are the parts that stay the same regardless:
| Item# | Description | Vendor | Qty | Price | Ext Price |
|---|---|---|---|---|---|
SPPJ28 | 18.5dbi 5.1-5.9 GHz panel antenna | www.superpass.com | 2 | 65 | 130 |
48M2MLMR400 | 48 in RP-TNC Male - N Male LMR400 | www.fab-corp.com | 2 | 20 | 40 |
various | outdoor cases | local electrical supply store / supermarket | 2 | 10 | 20 |
190 |
Here's the rest of the parts that reflect how we built the prototype version:
| Item# | Description | Vendor | Qty | Price | Ext Price |
|---|---|---|---|---|---|
15451130 | net4511-30 Board only | www.soekris.com | 1 | 161 | 161 |
31954804 | PoE Power Supply | www.soekris.com | 1 | 22 | 22 |
8571-01_Combo | Proxim Harmony 8571 | www.JustDeals.com | 2 | 23 | 46 |
RSA-3452 | SMA-M TO N-Female Adapter | www.radiooutfitter.com | 2 | 6 | 12 |
64MB CF | 64MB Compact Flash card for Soekris | 1 | 25 | 25 | |
homebrew PoE | PoE Hack Adapter - injector only | www.socalfreenet.org/poe | 1 | 10 | 10 |
276 |
Here's a 2nd variation that replaces the Proxim radio and AP with a miniPCI a/b/g card and uses the latest Soekris boards (available at the end of March):
| Item# | Description | Vendor | Qty | Price | Ext Price |
|---|---|---|---|---|---|
15452620 | net4526-20 Board only (32MB, 15MB CF) | www.soekris.com | 2 | 129 | 268 |
31954804 | PoE Power Supply | www.soekris.com | 2 | 20 | 40 |
| #5354 MP ARIES | 5354 ARIES MP 802.11a/b/g miniPCI card | www.netgate.com | 2 | 90 | 180 |
| #PIG-UFL-NF-19 | U.FL to N FEMALE bulkhead Pigtail | www.netgate.com | 2 | 13 | 26 |
514 |
And then there's the combination option that uses one cheap Proxim AP unmodified, and a Soekris board plus miniPCI radio card (thereby avoiding hacking a Proxim AP):
| Item# | Description | Vendor | Qty | Price | Ext Price |
|---|---|---|---|---|---|
15452620 | net4526-20 Board only (32MB, 15MB CF) | www.soekris.com | 1 | 135 | 135 |
31954804 | PoE Power Supply | www.soekris.com | 1 | 22 | 22 |
| #5354 MP ARIES | 5354 ARIES MP 802.11a/b/g miniPCI card | www.netgate.com | 1 | 90 | 90 |
| #PIG-UFL-NF-19 | U.FL to N FEMALE bulkhead Pigtail | www.netgate.com | 1 | 13 | 13 |
8571-01_Combo | Proxim Harmony 8571 | www.JustDeals.com | 1 | 27 | 27 |
RSA-3452 | SMA-M TO N-Female Adapter | www.radiooutfitter.com | 1 | 6 | 6 |
homebrew PoE | PoE Hack Adapter - injector only | www.socalfreenet.org/poe | 1 | 10 | 10 |
303 |
The cheapest possible version would cost $78 and requite no hardware hacking at all (just outdoor cases) - but it involves changing the firmware in the Proxim. Its possible in theory, but perhaps not in practice unfortunately:
| Item# | Description | Vendor | Qty | Price | Ext Price |
|---|---|---|---|---|---|
8571-01_Combo | Proxim Harmony 8571 | www.JustDeals.com | 2 | 23 | 46 |
RSA-3452 | SMA-M TO N-Female Adapter | www.radiooutfitter.com | 2 | 6 | 12 |
homebrew PoE | PoE Hack Adapter - injector only | www.socalfreenet.org/poe | 2 | 10 | 20 |
78 |
Notes about pricing:
These pages describe how we assembled the first 'prototype' version of the relay. Now that we know its working, we'll refine everything - e.g. by replacing the plastic food containers :-).
The relay has two ends. The radios are configured so that one end is an Access Point and the other is a client. We chose to do it this way because the Proxim only supports Access Point mode, unlike some APs that also have bridge mode capability. The Access Point end is pretty simple: basically a Proxim modified for PoE in an outdoor case with a high gain antenna.
The other end of the relay is more complicated. We chose a Soekris board and installed a second Proxim radio taken from a Proxim AP. We installed Pebble on the board which is probably overkill. We'll try Leaf Wisp for our next install.
First add straight-thru leads for the ethernet signal between the two connectors as shown. Then, cut the plugpack lead, and solder it to some solid core ethernet cable strands. We used cat-5 wiring standard T-568B for our adapter.
The white stripe on the plugpack wire goes to 4-5 (blue/bluewhite) and the totally black lead goes to 7-8 (brown-brownwhite). Then feed those strands into a double ethernet jack box. Punch those strands down as color coded on the block and you're done!
According to this poe calculator at 100ft it should still
get 12.5 even at the full 1 Amp (probably more than the AP draws).
DO NOT PLUG IN A STANDARD POE ADAPTER. Although the AP supports power on its ethernet port, close reading of the Proxim Harmony Power System manual, which also contains the PoE pinouts, suggests that Proxim was using 24V rather than the 48V which was later adopted as standard. Maybe someone can review the parts on the board and provide a definitive answer?
One end of the AP uses an unmodified Proxim Harmony AP. Unmodified as in - you could return this under warranty. Accordingly, this is the simple end of the relay. The parts you need for this end are:
Putting everything in the case is a fun part. There's a few non-obvious details however. By taking some simple signal strength measurements, we found that the antenna connector furthest from the ethernet jack is the 'primary' antenna, so be sure to use that. Also, sometimes the AP won't boot if the other antenna is left disconnected. Sure enough, the manual even says this on page 44: For Model 8571, you must use two antennas. This was inconsistent - sometimes it would boot and not others, so we left the 2nd antenna connected.
We decided to use an SMA to N-Female adapter because we're standardizing all our radios to have N-Female connectors so our antenna cables can all be identical. However you could instead buy a custom cable to suit. Note that this is an SMA connector, not the Reverse Polarity SMA (RP-SMA) connector that many 802.11b/g Access Points use.
Connecting and mounting the antenna is simple enough. Note there's no up/downtilt on this antenna mount. You can fudge this by jamming something appropriate at the top or bottom fitting to tilt up or down as needed.
The final piece of the puzzle is to create a PoE adapter. The Proxim already has internal support to take up to 24V power from the ethernet cable, so we just need an 'injector' to add the power to the ethernet cable. I.e., this is half of the PoE project. We measured the voltage from the supplied plug pack at 13.7VDC under load which was far enough above the manual's specified 12VDC input that we thought we could use the standard plugpack. Our first installation is running succesfully at 105 feet, so it seems to work in practice ok.
Pebble does not come with SNMP installed. Fortunately there is a contribution that makes it available.
Here is how we installed SNMP on a Pebble that was already in operation (always a scary thing to do!).
Get the avcNetSNMPv3-0.0.2.tar.gz file onto the pebble box. We used the scp that was built into the ssh client I was using. By default it will end up in the /root directory. The untar it and install it as follows:
tar -xvzf avcNetSNMPv3-0.0.2.tar.gz remountrw cp init.d/snmpd /etc/init.d chmod +x /etc/init.d/snmpd mkdir /ro/etc/snmp cp ro/etc/snmp/snmpd.conf /ro/etc/snmp mkdir /ro/var/net-snmp cp ro/var/net-snmp/snmpd.conf /ro/var/net-snmp/ cp sbin/snmpd /sbin chmod +x /sbin/snmpd mkdir /etc/snmp ln -s /rw/etc/snmp/snmpd.conf /etc/snmp/snmpd.conf mkdir /var/net-snmp/ ln -s /rw/var/net-snmp/snmpd.conf /var/net-snmp/snmpd.conf
If you think you got it all correct, you can then issue a fastreboot command to restart your machine.
Now that its installed, you can test it. Do this with:
/etc/init.d/snmpd start cat /var/log/snmpd.log
You may see some errors about renaming files. These should go away after the next reboot.
Once you're satisfied its working correctly, you can now set it up to automatically start when Pebble boots. This can be done as follows:
cd /etc/rc0.d ln -s ../init.d/snmpd K20snmpd cd /etc/rc1.d ln -s ../init.d/snmpd K20snmpd cd /etc/rc2.d ln -s ../init.d/snmpd S20snmpd cd /etc/rc3.d ln -s ../init.d/snmpd S20snmpd cd /etc/rc4.d ln -s ../init.d/snmpd S20snmpd cd /etc/rc5.d ln -s ../init.d/snmpd S20snmpd cd /etc/rc6.d ln -s ../init.d/snmpd K20snmpd
Now if you do a fastreboot you should find snmpd running succesfully.
Now you're ready to fire up your favourite snmp client and start generating pretty graphs.
The bridge end of the relay takes the feed from the 802.11a AP end and routes it for use locally (e.g. to feed an 802.11b Access Point). We used a Proxim card and antenna lead taken from a Proxim 8571 AP. Software is NYCWireless's Pebble distribution.
(Yes, we'll expand on this page!)
We decided to use Pebble for the client end of the relay - in part because it was the only distro we tried that would recognise the Atheros-based radio card.
First you'll need a compact flash with pebble. For this you'll need a Linux system and a CF adapter that works with it (we used the 'test' release of Debian's Sarge version). Then follow the instructions in the pebble readme. If you follow the directions it works great. This is not trivial for a Linux newcomer, so get help if need be.
Now plug your Soekris into a serial port, run a suitable terminal program (like Tera Term) set it to 19200 baud and fire it up. Iinterrupt the boot sequence within 5 secs with Ctrl-P and then enter the following commands:
set conspeed 9600 set pxeboot disabled set bootdelay 2
The console speed is set to match the default pebble console speed. Disabling PXE boot seems like a good idea. And the minimum 2 seconds boot delay shaves 3 seconds off the boot time.
Now power off the Soekris, plug the flash card into it and power up again, or type 'reboot' if you already have the card installed. Change your terminal program speed to 9600 and (hopefully) watch the pebble boot sequence unfold. Now we're ready to configure Pebble.
What we're trying to achieve is:
With the above in mind, let's get things set up! Log in to pebble via the serial port (using 'root' and the password you specified when building pebble). Then issue the command:
/usr/local/sbin/remountrw
so that your changes can be saved. Now edit the /etc/network/interfaces file. (I used 'vi /etc/network/interfaces'). Comment out or remove what's there and add the following:
auto lo
iface lo inet loopback
iface ath0 inet static
address 10.0.0.129
netmask 255.255.255.0
broadcast 10.0.0.255
gateway 10.0.0.1
up iwconfig ath0 ap 00:20:A6:47:F9:77
# alternatively use
# up iwconfig ath0 mode managed essid socalfreenet.org
auto eth0
iface eth0 inet static
address 10.0.3.1
netmask 255.255.255.0
broadcast 10.0.3.255
This tells it that 'ath0', the radio card, will be at 10.0.0.129 on the 10.0.0.x (/24) subnet and its gateway is 10.0.0.1. The iwconfig line tells it to register with the AP specified by the mac address that follows. It then configures the eth0 port for a static IP of 10.0.3.1/24. Save the changes and exit the editor (Shift ZZ in vi).
Now the IPs are specific, but the atheros radio isn't started yet (type ifconfig at the prompt to confirm). Some magic is needed to get it going. At least it seemed like magic to me. I'm sure there's a simpler, more elegant and more correct way to do this, but this is what worked for me. We need to create a new file /etc/rcS.d/S99local and place in it:
#!/bin/sh modprobe ath_pci ifup --force -v ath0
Then issue the command:
chmod 777 /etc/rcS.d/S99local
This file will be executed at the appropriate place in the startup sequence and will start the radio card.
April 6 update: Another configuration we've started using is a Soekris 4511 with an 802.11a and 802.11b card. This becomes a combination AP and relay radio in one box. If you're using the miniPCI card, you need to add the following commands to the S99local file:
modprobe hostap_pci ifup --force -v wlan0
Alternatively, if you use a Soekris 4521 and a PCMCIA 802.11b card as the 2nd card, then you can omit the modprobe hostap_pci line.
For our scenario we wanted to disable nocat. To do this, mount the CF read-write and edit /etc/inittab to comment out the last line where it is started. After editing it should read:
#NC:23:respawn:start-stop-daemon -S -c nocat --exec /usr/local/nocat/bin/gateway -- -F
We're not done yet, but this is a good point to restart and check your work so far. Type:
/usr/local/sbin/fastreboot
to save all the changes made so far to the compact flash and then reboot the Soekris. After logging in, the (trimmed) ifconfig command output will look something like this:
pebble:~# ifconfig
ath0 Link encap:Ethernet HWaddr 00:20:A6:47:86:7A
inet addr:10.0.0.129 Bcast:10.0.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:633 errors:0 dropped:0 overruns:0 frame:0
TX packets:30 errors:7 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:199
RX bytes:46932 (45.8 KiB) TX bytes:2062 (2.0 KiB)
Interrupt:10 Memory:c4895000-c48a5000
eth0 Link encap:Ethernet HWaddr 00:00:24:C1:8C:34
inet addr:10.0.3.1 Bcast:10.0.3.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:120 (120.0 b) TX bytes:0 (0.0 b)
Interrupt:11 Base address:0x7000
and you should be able to ping the access point:
PING 10.0.0.128 (10.0.0.128): 56 data bytes 64 bytes from 10.0.0.128: icmp_seq=0 ttl=15 time=59.2 ms 64 bytes from 10.0.0.128: icmp_seq=1 ttl=15 time=1.7 ms --- 10.0.0.128 ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max = 1.7/30.4/59.2 ms
You may see some console output as the atheros card adjusts its rate due to errors:
ath_rate_ctl: 36M -> 24M (0 ok, 2 err, 2 retr). You can avoid this link retraining by specifying a link speed in the /etc/network/interfaces file.
So far, so good. You should now be able to log in using an ssh client on your network. This will be faster than using console, but either works.
Now we can get the machine running correct as a gateway on eth0. Again mount the CF read/write with:
/usr/local/sbin/remountrw
Now add the DNS servers by editing /etc/resolv.conf and replacing the servers listed with your own, e.g.:
nameserver 10.0.0.1 nameserver 64.81.45.2
Now we configure the DNS cache / forwarder. Enter the following commands:
echo 10.0.3.1 >/ro/var/dnscache/env/IP touch /ro/var/dnscache/root/ip/10.0.3 ln -s /rw/var/dnscache/root/ip/10.0.3 /var/dnscache/root/ip/10.0.3 rm /ro/var/dnscache/root/ip/192.168.*
(Answer 'y' when prompted by rm.). These commands tell the DNS caching program, djbdns which interface to listen on (10.0.3.1) and to provide DNS service for the 10.0.3 subnet.
With the DNS servers configured, we can now setup the DHCP server to hand out DNS server addresses along with local IPs. Edit the file /etc/default/dhcp so it contains the single (non-commented) line:
INTERFACES="eth0"
which tells the DHCP server which interface to operate on. Next, edit the file /etc/dhcpd.conf so it has the ilnes:
option subnet-mask 255.255.255.0;
default-lease-time 600;
max-lease-time 7200;
subnet 10.0.3.0 netmask 255.255.255.0 {
range 10.0.3.10 10.0.3.99;
option routers 10.0.3.1;
option broadcast-address 10.0.3.255;
option domain-name-servers 10.0.3.1,10.0.0.1;
}
Here we've specified both 10.0.3.1 and the main DNS forwarder 10.0.0.1 both as possible DNS servers. Now save your changes and reboot again:
/usr/local/sbin/fastreboot
After the reboot is complete, you're ready to test your configuration.
Update: Mar 22 2004: It's handy to set the time after getting everything going. In our configuration where our gateway runs an ntp server, you can do this with
ntpdate -u 10.0.0.1 /sbin/hwclock --systohc
This makes the logs much easier to compare with other logs after updating.
Some quick notes now that we're using Metrix boxes for most of our a/b relay/AP installs (mostly for myself so I don't have to remember each time!). Note that Metrix has bind installed and not djbdns.
/etc/network/interfaces
/etc/default/dhcp to add the interfaces which will have a DHCP server running
/etc/dhcpd.conf so it serves appropriate addresses
/etc/bind/named.conf and uncomment the query-source line and add the forwarders. Also add the line "forward only", not to be confused with the perhaps pre-existing commented out line "forward-only".
Here's some pictures of the inside of the Proxim Harmony 802.11a AP with removable antennas:
Update (Dec 2004): The device can be reflashed with Linux, but its 'nontrivial'. Read the gory details. Also the telnet password is 'notbrando'. Not sure what extra facilities that provides.
This radio was recently available for $15 + shipping and tax (originally $600).
Its features, well documented in the manual include:
Getting inside was a little tricky. The screws are some special type with an outside pattern and inside hump that makes using a screwdriver, torx or hex key impossible. However by drilling out the center hump with a 5/64 bit, its possible to then use a 5/64 hex (allen) key to remove the screws. Failing that you can easily drill out the screw head - but then its hard to get the cover back on.
POE is supported, sort of. Its designed to be used with the Harmony Power System which supplies 24VDC with ethernet pins 4-5 DC+ and 7-8 DC-. Thus a regular 48V POE is likely to be problemmatic (though I don't pretend to understand the POE spec in any detail!). It definitely should be ok to use for short runs with a homebrew POE adapter like this one where we reuse the supplied PS which is marked 12VDC but measures 14V under load. Having the wiring already internal to the AP saves building the splitter part of a standard homebrew PoE injector.
Our Golden Hill installation is starting to keep our DSL line too busy and until we get more bandwidth, we thought we could add a caching proxy server for web browsing requests.
A plea to the user group for an old laptop resulted in several offers, including one with a broken screen which I decided to use. This article describes roughly the steps I went through to get it going on the network.
First step was to install Debian. I chose this because its package system makes it easy, plus Pebble is also a cut down Debian and thus it shares the same file layout and commands.
There are many guides to installing Debian, so I'll just highlight some of the strangeness I found and some decisions I made.
/etc/network/interfaces file directly if you prefer.
<alt><f2> to switch to another login. Login as root with no password required
/etc/pcmcia/config
/etc/network/interfaces and replace dummy0 with eth0. Issue the command ifdown dummy0
/etc/init.d/pcmcia restart
squid and just squid (none of the html config stuff).
Once you have it all installed and running, you can try to use it from another machine. For my subnet, I first tested by putting the laptop on the subnet and then logging in via ssh and making sure it could access the internet and generally work as expected.
When you're satisfied its working correctly, you're reading to configure squid.
Once you have the laptop running correctly, you're ready to get squid configured. We want to use squid as a 'transparent proxy'. This means that users won't have to do any configuration on their machine to use squid and benefit from the proxy. And, alternatively, users won't be able to avoid the proxy, and hence we get maximum benefit of the cache (more info, and HowTo).
The squid configuration file for debian is found at /etc/squid.conf. The vast majority of the values can be left as is, at least until you start tuning squid. Here are some settings we changed from the defaults:
httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on
These few lines should get squid going enough to test. Issue the command /etc/init.d/squid restart to force it to re-read its settings (though maybe a SIGHUP would do the same thing more elegantly?).
Now squid should be working. You can test basic functionality by setting the proxy settings of your web browser to point directly to the squid proxy. If you issue the command /tail -f /var/log/squid/access.log you should be able to see the pages you're visiting being logged. (Use Ctrl-C to break out of the tail).
Next up is how to change the firewall / gateway settings to force users to use the proxy.
We did some minor tuning with these settings:
maximum_object_size 8192 kb
Once you have squid working, you can now start forcing traffic to use it. If you have a single gateway box, this is most likely the easiest place to do this. In our network we run MikroTik's RouterOS which is in turn based on Linux and supplies all the hooks necessary to do what's needed.
The basic idea is to redirect all outbound traffic on port 80 to the squid server. The devil is the details!
more to come, but basic idea follows
make sure the squid server is exempt from captive portal signon. The tricky part is making it exempt but not a client that signs on through it (hence exception above that the captive portal destination is exempt).
The squid box must send all replies back to the gateway, not to the requesting machine directly - its not expecting them! So in the squid box's file /etc/network/interfaces is the extra line:
up "route add -net 10.0.0.0 netmask 255.255.255.0 gw 10.0.0.1"
which adds a static route to force all traffic on the squid's subnet (10.0.0.x) back to the gateway which will in turn route back to the correct host.
Our main Golden Hill network uses a gateway box running MikroTik software. If we want to monitor boxes via snmp or access the admin interfaces of a device within the network, we configure MikroTIk to forward traffic appropriately.
The general approach is to pick a port number and then have MikroTik forward all traffic that comes into that port on the main IP to the specfic device, remapping the port in the process.
Typically we need either http, https or ssh access and also snmp. As the former are tcp protocols and the latter is udp, we use the same port number for both to simplify things a little.
Here are the basic steps for adding a new device to forwarded list sing the MikroTik winbox interface.
For the following example, we assume port 1234 and an internal destination IP of 10.0.0.250.
Note that the winbox UI gets confused with dragging sometimes. If you suspect this, log out of winbox and log back in again - its possible to cause major damage to rulesets by dragging them when the UI is messed up.
Now the outside world can get into the AP, but it can't get out because of the captive portal. The following steps allow it to bypass the portal:
That's it. You should now be able to access the box from the outside using an url like https://66.93.33.41:1234.
For our Access Point Project we needed a POE adapter. www.NYCWireless.net tells how and this is basically a clone of their info with the added value of part numbers and suppliers for those people who'd like everything appear on their doorstep for reasonable cost. The full PoE standard is quite involved and does much more than suggested here.
Here's an order for a single POE from www.greatcables.com. I'm sure others have similar parts and I would welcome some alternative suppliers:
| Part # | Description | Price |
|---|---|---|
| C5E03WT | 3 foot Cat 5 Molded | $1.95 |
| SMM-UE2-WT | Dual Port Surface Mount Box Loaded | $8.66 |
| SMM-UE1-WT | Single Port Surface Mount Box Loaded | $4.73 |
The total price before shipping works out around $15 per adapter - assuming you cut the cord on the plugpack instead of using extra power plugs. Note that Fry's has identical equipment but its almost twice the price.
10 Mar 2004 update: Another supplier that works out much cheaper is: http://deepsurplus.site.yahoo.net. Their prices / part numbers are:
| Part # | Description | Price |
|---|---|---|
| CB241-1BL | 1ft Blue Cat 5E Molded Patch Cable | $1.47 |
| CN394-2 | Two Port Surface Mount Housing, White | $1.25 |
| CN394-1 | One Port Surface Mount Housing, White | $0.85 |
| CN380 | Cat 5E Keystone Jack - White Toolless - 2 needed | $1.47 |
| CN380-BL | Cat 5E Keystone Jack - Blue Toolless | $1.47 |
This brings the price per POE adapter down to about $6.75 before tax shipping (their shipping is reasonable).
Every dollar counts when you're deploying networks on a minimal budget. And since we usually use a gateway running m0n0wall running on an SBC (single board computer) like those produced by Soekris or PCEngines WRAP, that $100-200 is a significant chunk of the total network price.
So for cost reasons, and to be honest also for the fun of it, we're exploring using the Nokia IP-110. This device also holds the promise that it might be able to run pfSense which builds from m0n0wall, but assumes a hard disk and thus has many more features, like Squid caching support.
The Nokia 110 is a firewall device with the following features (pics):
A great guide to putting m0n0wall on the box can be found at Chris Buechler's great site. Please take a look at it for pictures and a great overall description as well as most of the steps needed to get it working with m0n0wall.
This page will continue from where that leaves off.
Many Ebay items do not include a power supply. This makes them cheap to buy, but leaves you with a problem to solve. The Nokia power supply uses a DIN-like 5 pin plug. When looking at the plug from the back, the pins from left to right, i.e. counterclockwise, are used as follows:
| Pins | Voltage |
|---|---|
| 1,2 | 5V |
| 3,4,5 | Ground |
The power supply that comes with the Nokia is labelled 5V @ 5A (thanks to Joe for this info). It has part number UP02521050.
Fortunately, again thanks to Joe, the power supply problem was easy to solve, and relatively cheap too. At least at the time he looked, someone was selling them on EBay as an unbranded power supply. Two with shipping and tax came to $20 (though without the AC cords).
The Nokia box reports the MAC addresses for all three ports as FF:FF:FF:FF:FF:FF. Fortunately, m0n0wall provides a way to assign a MAC address using the <spoofmac> tag. As Travis Dixon explains:
The IP330 had weirdness in the NIC configs - mainly they all defaulted to
a MAC address of ff:ff:ff:ff:ff:ff. To fix this what I did was write the image
to a drive (a smaller one than the 8GB one that came with it BTW) and then boot
it on another PC with a couple of fxp (intel) nics and get the initial NIC config
done. THen I rebooted into FreeBSD on the same box and mounted the m0n0wall drive
onto the freebsd box. Once mounted I edited config.xml and added a statement to
each NIC of <spoofmac> (make up a MAC address here) </spoofmac>. As long as the
made up MAC address is unique on your LAN you're OK.
Once this was written out I put the drive back in the IP330 and proceeded as normal.
"PC Engines":http://www.pcengines.ch/ makes a card called the CFDISK.2F. As you can see from the picture at right, this is a perfect physical replacement for the hard disk - right down to the screw mounts.
The power supply arrived and I was able to boot the Nokia after loading a CF card with the generic version of m0n0wall.
I managed to confuse myself when I came back to this later and wasted a good hour getting this working again. Here is the order and gotchas:
Now you need to modify the config.xml file on the CF card to add the spoofmac tags referenced above. When I forgot this step, I had weird behaviour. I could get a lease via DHCP, but could never ping the m0n0wall or log in via http. Later releases could ping my computer from m0n0wall using the console ping command but not vice versa.
I found that the easiest way to modify the config.xml file was to boot a FreeSBIE "Live CD", plug in a CF reader, plug in the CF card, mount the card and then modify the config.xml file directly. This happens somewhat as follows:
dmesg | more to page through what went by in more detail. Look specfically for "CF" or similar and then find the device name, such as da1.mkdir /mnt/cfmount /mnt/cf /dev/da1 where you found the device name abovecd /mnt/cf and then view the files with an @ls@ commandcd conf and do another ls to reveal the config.xml filevi config.xml or ee config.xml)<lan> tags and add <spoofmac>01:02:03:04:05:00</spoofmac> below the <if> tag and do likewise for the <wan> tag, but change the mac, e.g. end in 01.cd /umount /mnt/cfNow you're ready to boot the Nokia 'for real' this time. Put the CF back in the Nokia and it should boot normally, provide a lease, and you should be able to login via the gui and continue the config.
Note that I tried to cheat and do the OPT1 interface also by creating that section in the XML file myself. It didn't obviously confuse m0n0wall, but it didn't respond to pings either.
All in all, pretty frustrating as I recalled it 'just worked' the first time around. In hindsight I must have got it just right - beginner's luck in action!
Good luck!
Mon0wall now supports captive portal! It is available in the version 1.1 (non-beta) release. These pages will be left here for historic interest and to help others building captive portals.
The m0n0wall captive portal project is trying to add captive portal support to the already awesome m0n0wall project. Here we'll keep specs, status and any other relevant information. Ongoing discussions will take place on the m0n0wall developer mailing list, but feel free to add comments to these pages too - someone will get them to the right place.
What is it? A captive portal forces anyone who connects to a network for the first time to a specific web page. There they can find out who is providing this access and typically acknowledge the rules of access. More complex portals require a validated login but that is beyond the scope of this project.
The motivation for this project is simple: there are growing numbers of free wireless networks around the world looking for gateway software like m0n0wall which is small, fast, reliable, powerful and easy to maintain and configure. The main thing missing is captive portal support.
Many thanks to the Personal Telco CaptivePortal page which formed the genesis of this page.
Another approach to this (as done by NoCat?) is to hand out very short leases (15 secs) in another range until the user 'Continue's, and then give them a lease that lets them outside. Maybe this would be easier given the questions that Manuel raises.
We won't try and do everything in this release. Here are some things we can
do next:
M0n0wall is succesful in large part due to the vision of its designer. Manuel provided the following guidelines that a captive portal needs to meet for him to consider adding it to the core m0n0wall release (taken from Manuel's email):
Manual also asks:
Did you check that it fits in with the rest of m0n0wall
without requiring a complete overhaul thereof? I mean - you know that
ipfilter doesn't do layer 2 filtering, and that ipfw has got a kinda
"reserved" function for the traffic shaper, which must work no matter if the
captive portal is on or off. Same goes for other functions like VPN etc. of
course.
A little googling reveals a few FreeBSD captive portals:
http://www.cc.saga-u.ac.jp/opengate/index-e.html http://opensplash.qalab.com/ http://software.stockholmopen.net/index.shtml
and a bunch of others (not necessarily FreeBSD based) at:
http://www.personaltelco.net/index.cgi/PortalSoftware
I admit I'm out of my depth here when it comes to the level of hacking required for this, but I figure I know enough to be dangerous and can kick start this conversation, so here goes...
Manuel asked here:
Did you check that it fits in with the rest of m0n0wall without requiring a complete overhaul thereof? I mean - you know that ipfilter doesn't do layer 2 filtering, and that ipfw has got a kinda "reserved" function for the traffic shaper, which must work no matter if the captive portal is on or off. Same goes for other functions like VPN etc. of course.
Two different ways I've heard of implementing captive portals are:
1) change the filtering rules to re-direct newly leased IPs to a specific page, then reset the rules when they're approved
2) change the DHCP server to initially supply very short leases in a different, walled-off, subnet and then provide a new IP when they're approved.
One problem with (2) is that someone might simply create their own static IP in the right (2nd) range, but if (1) proves hard, maybe its a good 80% solution?
I think NoCatSplash is an example of (1), http://nocat.net/download/NoCatSplash/.
Perhaps a better starting point is http://www.geekspeed.net/wicap/, which is a captive portal that runs on OpenBSD (presumably closer to FreeBSD than Linux?).
Btw, for those new to m0n0wall, read the full description of its FreeBSD based underlying software and configuration.
There is a $222.50 reward(*), plus 1 yr NYCWireless membership and T-Shirt, to anyone who can add captive portal support and an additional $222.50 to Manuel (m0n0wall's developer) to reflect the work he's done to date and the work doubtless involved with integrating even the best made additions. I'm doing this to try and speed up the appearance of captive portal support which is vital for using m0n0wall in more community projects.
Please email me if you'd like to add to this amount.
The rules are (hopefully) simple:
Feel free to post comments directly to this page or on the m0n0wall mailing list. Thanks! Michael Mee.
(*) This total reflects $200 of my own money and, so far, $100 of an anonymous contributor, another $100 from www.openacces.org, $20 from Barry Murhpy and $25 from Benjamin Henry, as well as a contribution from NYCWireless. I'll continue to split contributions 50-50 with the contributor and Manuel.
This page is the master IP allocation list for SoCalFreeNet networks. Per the master list at FreeNetworks, we have reserved the 10.12/16 subnet. We typically use a class C (/27) subnet at each new physical location which allows for 30 computers.
| subnet | location | comments |
|---|---|---|
| 10.12.0.0/29 | small subnets used for backhauls | assignments |
| 10.12.2.0/27 | K26,Golden Hill | golden hill |
| 10.12.5/24 | 23rd & C St,Golden Hill | |
| 10.12.10/24 | El Toyon Rec Center, National City | further divided |
| 10.12.11/24 | Golden Villas Apartments, South Park | further divided |
| 10.12.12/24 | Mercado Apartments, Barrio Logan | further divided |
| 10.12.13/24 | Mansfield St & Collier Ave, Normal Heights | |
| 10.12.42/24 | Carmel Valley | |
| 10.12.45/24 | Ocean Beach | |
| 10.12.50/24 | Otay Ranch, Chula Vista | |
The Golden Hill network also uses 10.0.0.1/23. This will eventually be changed to the 10.12 subnet.
| subnet | location | comments |
|---|---|---|
| 10.12.4.0 | SH Rooftop | |
| 10.12.4.32 | SH Basement | |
| 10.12.4.64 | 906 Basement | |
| 10.12.4.96 | 906 Rooftop | |
| 10.12.4.128 | Kreigan 20th Rooftop | |
| 10.12.5.0/24 | Casa 23 | |
The thirty-two 10.12.0.0/29 subnets are used for backhaul links within our various networks. This page is for tracking their allocation and other useful details.
Our networks are generally routed networks of individual subnets rather than bridged networks. This is in large part because few of the wireless card drivers we use allow bridging directly between two wireless cards. Thus it is often necessary to have a couple of IP addresses to link between two nodes. Rather than take a large IP address space (e.g. a /24 containing up 252 addresses) we use smaller /29 subnets that allow 6 IPs. Most of the time we only need two IPs, but occaisionally we need more (e.g. a point to multi-point link, or a management IP) so we went with the slightly larger space.
| Network | Hosts | Broadcast | comments |
|---|---|---|---|
| 10.12.0.0 | 10.12.0.1 to 10.12.0.6 | 10.12.0.7 | |
| 10.12.0.8 | 10.12.0.9 to 10.12.0.14 | 10.12.0.15 | |
| 10.12.0.16 | 10.12.0.17 to 10.12.0.22 | 10.12.0.23 | |
| 10.12.0.24 | 10.12.0.25 to 10.12.0.30 | 10.12.0.31 | |
| 10.12.0.32 | 10.12.0.33 to 10.12.0.38 | 10.12.0.39 | |
| 10.12.0.40 | 10.12.0.41 to 10.12.0.46 | 10.12.0.47 | |
| 10.12.0.48 | 10.12.0.49 to 10.12.0.54 | 10.12.0.55 | |
| 10.12.0.56 | 10.12.0.57 to 10.12.0.62 | 10.12.0.63 | |
| 10.12.0.64 | 10.12.0.65 to 10.12.0.70 | 10.12.0.71 | |
| 10.12.0.72 | 10.12.0.73 to 10.12.0.78 | 10.12.0.79 | |
| 10.12.0.80 | 10.12.0.81 to 10.12.0.86 | 10.12.0.87 | |
| 10.12.0.88 | 10.12.0.89 to 10.12.0.94 | 10.12.0.95 | |
| 10.12.0.96 | 10.12.0.97 to 10.12.0.102 | 10.12.0.103 | |
| 10.12.0.104 | 10.12.0.105 to 10.12.0.110 | 10.12.0.111 | |
| 10.12.0.112 | 10.12.0.113 to 10.12.0.118 | 10.12.0.119 | |
| 10.12.0.120 | 10.12.0.121 to 10.12.0.126 | 10.12.0.127 | |
| 10.12.0.128 | 10.12.0.129 to 10.12.0.134 | 10.12.0.135 | |
| 10.12.0.136 | 10.12.0.137 to 10.12.0.142 | 10.12.0.143 | |
| 10.12.0.144 | 10.12.0.145 to 10.12.0.150 | 10.12.0.151 | |
| 10.12.0.152 | 10.12.0.153 to 10.12.0.158 | 10.12.0.159 | |
| 10.12.0.160 | 10.12.0.161 to 10.12.0.166 | 10.12.0.167 | |
| 10.12.0.168 | 10.12.0.169 to 10.12.0.174 | 10.12.0.175 | |
| 10.12.0.176 | 10.12.0.177 to 10.12.0.182 | 10.12.0.183 | |
| 10.12.0.184 | 10.12.0.185 to 10.12.0.190 | 10.12.0.191 | |
| 10.12.0.192 | 10.12.0.193 to 10.12.0.198 | 10.12.0.199 | |
| 10.12.0.200 | 10.12.0.201 to 10.12.0.206 | 10.12.0.207 | |
| 10.12.0.208 | 10.12.0.209 to 10.12.0.214 | 10.12.0.215 | |
| 10.12.0.216 | 10.12.0.217 to 10.12.0.222 | 10.12.0.223 | |
| 10.12.0.224 | 10.12.0.225 to 10.12.0.230 | 10.12.0.231 | |
| 10.12.0.232 | 10.12.0.233 to 10.12.0.238 | 10.12.0.239 | |
| 10.12.0.240 | 10.12.0.241 to 10.12.0.246 | 10.12.0.247 | |
| 10.12.0.248 | 10.12.0.249 to 10.12.0.254 | 10.12.0.255 |
This page details the network work configuration for the Golden Villa installation.
This installation uses the 10.12.10.0/24 subnet - i.e. 10.12.10.0 to 10.12.10.255. This is further divided as follows:
| subnet | network | broadcast | host range |
|---|---|---|---|
| computer lab | 10.12.10.0/25 | 10.12.10.127 | 10.12.10.1-126 |
| wireless | 10.12.10.128/25 | 10.12.10.255 | 10.12.10.129-254 |
A Soekris 4511 is used as the main router, running m0n0wall. The two ports are assigned as follows:
| port | subnet | address | function |
|---|---|---|---|
| eth0 | 10.12.10.0/25 | 10.12.10.1 | computer lab |
| eth1 | DSL DHCP | internet connection | |
| wi0 | 10.12.10.128/25 | 10.12.10.129 | wireless AP |
Other addresses used on the network:
| address | device | comment |
|---|---|---|
| 10.12.10.2 | Cisco router in lab | (not yet installed) |
| 10.12.10.3 | m0n0wall PPTP server address | |
| 10.12.10.4-10 | none | reserved for static assignments |
| 10.12.10.32/24 | PPTP subnet | used by PPTP clients |
| 10.12.10.50-99 | computer lab DHCP | way more than needed |
| 10.12.10.130-150 | none | (reserved for static assignments) |
| 10.12.10.151-254 | wireless DHCP | |
MAC addresses of equipment in the network:
| MAC | device | comment |
|---|---|---|
| 00:00:24:c1:8c:34 | Soekris eth0 | LAN port |
| 00:00:24:c1:8c:35 | Soekris eth1 | WAN port |
| 00:02:6f:33:b2:56 | Soekris wi0 | wireless port |
| Cisco Router | in computer lab |
The following are the subnets and various hardware info for the Golden Hill network. It is currently incomplete.
This installation uses the 10.12.2.0/27 subnet - i.e. 10.12.2.0 to 10.12.2.31. This is further divided as follows:
A Netgate PowerG8 is used as the main AP, running m0n0wall. The three ports are assigned as follows:
| port | subnet | address | function |
|---|---|---|---|
| sis0 | DHCP | WAN | |
| wi0 | 10.12.2.0/27 | 10.12.2.1 | wireless 802.11b AP |
| ath0 | 10.12.8.248/29 | 10.12.8.251 | 802.11a client |
| item | value |
|---|---|
| LAN interface | wi0 |
| Network | 10.12.2.0 |
| Netmask | 255.255.255.224 (/27) |
| Broadcast | 10.12.2.31 |
| HostMin | 10.12.2.1 |
| HostMax | 10.12.2.30 |
| DHCP range | 10.12.2.3-30 |
| 802.11b radio | 10.12.2.1 |
| reserved | 10.12.2.2 |
Network: 10.12.8.248/29 (255.255.255.248)
Broadcast: 10.12.8.255
HostMin: 10.12.8.249
HostMax: 10.12.8.254
This small subnet hooks the La Cresta 802.11a backhaul to Pink Palace to the 802.11a radio that services 27th and Broadway and soon also K26. The 'a' radio runs in bridged mode to avoid another subnet and for simplicity.
Allocated as follows:
| address | device | MAC | comment |
|---|---|---|---|
| 10.12.8.253 | lc a relay eth2 | 00:00:24:C1:DE:7E | |
| 10.12.8.254 | 27th a radio | 00:02:6F:20:F7:2D | |
| 10.12.8.252 | lc 27th a ap | eth0 bridged to ath0 | |
| 10.12.8.251 | k26 a radio | ||
This page details the network work configuration for the Golden Villa installation.
This installation uses the 10.12.11.0/24 subnet - i.e. 10.12.11.0 to 10.12.11.255. This is further divided as follows:
| subnet | network | broadcast | host range | comment |
|---|---|---|---|---|
| office lan | 10.12.11.0/25 | 10.12.11.127 | 10.12.11.1-126 | mostly unused |
| tenant wlan | 10.12.11.128/25 | 10.12.11.255 | 10.12.11.129-254 | |
A Soekris 4501 is used as the main router, running m0n0wall. The three ports are assigned as follows:
| port | subnet | address | function |
|---|---|---|---|
| eth0 | 10.12.11.0/25 | 10.12.11.1 | office equipment |
| eth1 | 10.12.11.128/25 | 10.12.11.129 | wireless AP |
| eth2 | Cable DHCP | internet connection | |
Other addresses used on the network:
| address | device | comment |
|---|---|---|
| 10.12.11.130 | main AP | on office rooftop |
| 10.12.11.131 | repeater AP | on 2nd furthest apartment rooftop |
| 10.12.11.3-10 | none | reserved for static assignments |
| 10.12.11.2 | PPTP server address | |
| 10.12.11.32/24 | PPTP subnet | used by PPTP clients |
| 10.12.11.50-99 | office LAN DHCP | way more than needed |
| 10.12.11.130-150 | none | reserved for static assignments) |
| 10.12.11.151-250 | wireless DHCP | |
MAC addresses of equipment in the network:
| MAC | device | comment |
|---|---|---|
| 00:05:9E:80:47:25 | HS 3000 Repeater | |
| 00:05:9E:80:47:1F | HS 3000 Main AP | |
| 00:00:24:c2:2e:08 | Soekris eth0 | LAN port |
| 00:00:24:c2:2e:09 | Soekris eth1 | WLAN port |
| 00:00:24:c2:2e:0a | Soekris eth2 | WAN port |
The Mercado network consists of a master node and subnodes. Each subnode consists of an 802.11a relay radio and an 802.11b local AP radio. Each subnode has its own independent subnet and runs its own dhcp server and DNS cache. This allows easier location of problem clients (they can be readily identified by IP).
Each subnode works in a 32 address subnet and follows the same
general layout:
| Setting | Value |
|---|---|
| Subnet mask | 255.255.255.224 |
| CIDR / length | /27 |
| 802.11b radio | first address in range |
| eth0 port | second address in range |
| 802.11a radio | address from master node subnet |
| DHCP | all unused addresses are allocated |
The subnets are allocated from the range 10.12.12.x as shown
below:
| Network | Name | Host Start | Host End | Broadcast |
|---|---|---|---|---|
| 10.12.12.0 | Master | 10.12.12.1 | 10.12.12.30 | 10.12.12.31 |
| 10.12.12.32 | node1 | 10.12.12.33 | 10.12.12.62 | 10.12.12.63 |
| 10.12.12.64 | node2 | 10.12.12.65 | 10.12.12.94 | 10.12.12.95 |
| 10.12.12.96 | node3 | 10.12.12.97 | 10.12.12.126 | 10.12.12.127 |
| 10.12.12.128 | node4 | 10.12.12.129 | 10.12.12.158 | 10.12.12.159 |
| 10.12.12.160 | node5 | 10.12.12.161 | 10.12.12.190 | 10.12.12.191 |
| 10.12.12.192 | node6 | 10.12.12.193 | 10.12.12.222 | 10.12.12.223 |
| 10.12.12.224 | node7 | 10.12.12.225 | 10.12.12.254 | 10.12.12.255 |
Using the scheme above, the actual addresses assigned are:
| Name | Address | Comments |
|---|---|---|
| gateway | 10.12.12.1 | backhaul gateway |
| 802.11a radio | 10.12.12.1 | |
| 802.11b radio | 192.168.0.33 | connects to existing D-Link wireless router |
| eth0 | 10.12.12.2 | |
| broadcast | 10.12.12.31 | |
| Name | Address | Commment |
|---|---|---|
| ath0 | 10.12.12.11 | 802.11a backhaul radio |
| wlan0 | 10.12.12.33 | local 802.11b AP radio |
| eth0 | 10.12.12.34 | reserved, not currently used |
| DHCP range | 10.12.12.35 - 62 | |
| broadcast | 10.12.12.63 | |
| subnet mask | 255.255.255.224 | i.e., /27 |
The other nodes are configured similarly, using the following table for their 802.11a backhaul subnet address.
| Name | Address | Subnet |
|---|---|---|
| node1 a radio | 10.12.12.11 | 10.12.12.32 |
| node2 a radio | 10.12.12.12 | 10.12.12.64 |
| node3 a radio | 10.12.12.13 | 10.12.12.96 |
| node4 a radio | 10.12.12.14 | 10.12.12.128 |
| node5 a radio | 10.12.12.15 | 10.12.12.160 |
| node6 a radio | 10.12.12.16 | 10.12.12.192 |
| node7 a radio | 10.12.12.17 | 10.12.12.224 |
SocalFreeNet was recently asked to propose a wireless system that could be deployed in Afghanistan by local residents funded by a microloan scheme as a "last mile" solution where phone lines are rare and internet unheard of. This page describes our (evolving) response.
This page is not up to our usual detailed standards due to the recent deployment of several key group members into Mississipi to help with Katrina relief efforts. It will be completed by eary October.
After some consultation, we decided to build a project to satisfy the following criteria.
When pricing out a system, it quickly becomes apparent that the solar panel is the dominant cost with batteries a close second. One easy way to reduce that cost is to reduce the hours of operation. ALthough in most so-called "developed" countries, we expect 24 hr everything (e.g. water, electricity, gas, phone), this not so often the case in other countries even where these facilities are available. If a phone system, say, only worked for 2 hours in the morning and 2 hours at night, that would still be hugely beneficial. And of course services like email are inherently suited to partial connectivity.
Many approaches to providing solutions in remote areas obsess about reliability. For the purposes of this design, we've separated hardware reliability from software reliability. The hardware is expensive and thus should work reliably in the target conditions of heat, variable power and sub-optimal installations. However, if the software is not perfect in ways that are easily circumvented, then this can be a reasonable tradeoff. For example, if the software locks up occaisionally or needs to be restarted at regular intervals, this may be a perfectly reasonable tradeoff against price. Not ideal certainly, but the cost difference between, say, a professional Cisco Access Point at $600-900 and their consumer Linksys branded gear at $60 is arguably worth the occaisonal reboot.
Auto-configuration is highly desirable. One of the appeals of mesh networking is the concept of 'turn it on and walk away'. Unfortunately we're not at the point where this is routinely available, so for now, we're stuck with manually configuring. The next best requirement is a web-based configuration (though an argument can be made for a simple text mode also).
We modified a cheap consumer based access point to function not only as an access point, but also as a client bridge and VOIP server to enable telephone communications. We chose a Linksys WRT54G. It has the following features which make it suitable for this project:
+ retail price is US$60
+ wide availability
+ it runs Linux and has a strong public community developing software addons for it
+ runs on 12V (although 6-18V is ok), so its perfect for powering from commonly available batteries such as car batteries
+ is very power efficient. There are different hardware versions, so values vary, but our 3.1 based hardware used 250mA at 12V, or about 3W. Thus it can easily be powered by a cheap 5W solar panel for as long as the sun is shining. (See also Future Ideas)
The following hardware is required for a single node. Two nodes are needed to make a link.
| Item | Price | Comment |
|---|---|---|
| Linksys WRT54G | $60 | |
| 8-18dBi Antenna | $40 | |
| Outdoor Case | $10 | |
| 12V 5W solar panel | $60 | trickle charge panel |
| 12V 20 amp hour battery | $20 | 10 Amp Hour is enough |
| Misc hardware | $5 | u-bolts or hose clamps, cable |
| PoE | $5 | spiltter and injector |
| Total Price | $180 | |
more detailed info and pictures to come
The Linksys AP is re-flashed with software from www.dd-wrt.com. The test model was built with v.23 beta released on 15 sep. One end of the link was an unmodified Linksys AP. The other end runs the DD-WRT VOIP version. It is configured to run in client-bridge mode.
Need to check:
+ Temperature rating?
+
The power requrements could possibly be halved if the on board switchmode power supply could be eliminated and the box powered directly from a suitable battery (somewhere around 3.3V)
It may also be possible to reduce power consumption by disabling the radio interface at regular intervals (ifdown wi0). We need to make more measurements.
A common strategy for community wireless and rural wireless ISPs is to use single board computers (SBC) as the basis for access points. These can be custom programmed to perform many functions and save cost and increase flexibility. A common approach because of the low power of 802.11b and 802.11a networks is to place the computer on the pole with the antenna to reduce signal loss in the cables. Popular SBCs for wireless use include Soekris, WRAP and MikroTik.
However, while affordable in USA at approx $300-500 each in an outdoor case, it is far more expensive than consumer equipment typically costing $60. Is there a way to have our cake and eat it too? This paper suggests it is.
Many consumer access points are based on reference designs made by computer chip companies. The popular Linksys series use modified designs from Broadcom based around the popular Broadcom radio chips. These boards typically contain a low-power simple computer chip that is different from SBC designs, but still quite powerful.