First off, a disclaimerThis is not about using my spare router as a signal amplifier. I didn't find a way to do that with my Sweex LW150. Also note that, as the title unfortunately omits, this story also needs a spare laptop. Or something else that has wifi and an ethernet port, and can run iptables.
The house is not too big, the signal is too weak.The use case: Wireless router is at one end of the house, near the stables. Large parts of the house, including the salon and the servants' quarters, are out of reach. And halfway, in the music room, there's this small laptop that's always on when i'm at home, and only runs Spotify and Guayadeque (on Lubuntu 12.10).
Iptables, and scripting itSo i hooked up the spare router to the laptop (which by now runs a dhcp server). To make traffic pass from the spare router (eth0) to the internet connection (wlan0), there's some iptables stuff to do. To make sure the routing restarts when the laptop has gone down, i created an upstart configuration. This also enables me to turn routing off and on quickly. Here's how:
- Create /etc/init/route-eth0-wlan0.conf:
# route-eth0-wlan0 - Route traffic from eth0 to internet on wlan0
# We have internet on our machine's wlan0 interface, an unrelated wireless
# router in eth0, and want to route that router's traffic.
# The router on eth0 will then be an extra access point for our internet,
# extending its range.
description "Route eth0 through wlan0"
# Make sure we start before an interface receives traffic
start on (starting network-interface
or starting network-manager
or starting networking)
stop on runlevel [!023456]
# Set up IP FORWARDing and Masquerading (NAT)
iptables --table nat --append POSTROUTING --out-interface wlan0 -j MASQUERADE
iptables --append FORWARD --in-interface eth0 -j ACCEPT
# enable IP forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
# disable IP forwarding
echo 0 > /proc/sys/net/ipv4/ip_forward
# delete old configuration, if any
# Flush all the rules in filter and nat tables
iptables --table nat --flush
# delete all chains that are not in default filter and nat table, if any
iptables --table nat --delete-chain
- Symlink /etc/init.d/route-eth0-wlan0 -> /lib/init/upstart-job
Update 2013-03-27: The motto "because we can" applies to all of the above. After, i applied "use the right tool for the job" and bought a wireless repeater from Amazon (Anker Kompakt, 26 Euros, works great).