Establishing a Mesh Portal
Jump to navigation
Jump to search
It's not entirely automatic quite yet; we'll get a more automatic solution in place soon.
Requirements
- http://www.cozybit.com/projects/mpp-utils/mpp-utils.tar.gz
- A USB ethernet adapter
- One OLPC laptop (XO)
What to do
- Plug the USB ethernet adapter into the XO
- Un-gzip and un-tar that somewhere on your mesh portal machine
- in masquerade.sh from the mpp-utils, change EXTIF to your USB wired interface. If the USB ethernet adapter is plugged in at at boot, this will usually be "eth0".
- In masquerade.sh, make the following changes (shown here in patch-style form):
# This line results in iptables: Unknown error 4294967295 - #$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT + $IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A FORWARD -i $EXTIF -o $INTIF -j ACCEPT $IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT - $IPTABLES -A FORWARD -j LOG + #$IPTABLES -A FORWARD -j LOG
- Stop NetworkManager and the 'network' scripts
chkconfig --level 2345 NetworkManager stop chkconfig --level 2345 network stop chkconfig --level 2345 dhcdbd stop
- Set your init level to '3'; stopping Sugar and X from starting again.
nano /etc/inittab
find the line with:
id:5:initdefault:
and change the '5' to a '3' so it looks like this instead:
id:3:initdefault:
- reboot
- Create an ifcfg file for your USB wired interface. For example, if your wired interface is eth0, create /etc/sysconfig/network-scripts/ifcfg-eth0, which should contain:
DEVICE=eth0 ONBOOT=no BOOTPROTO=dhcp
This file will already exist for 'eth0', but if your USB wired interface is _not_ 'eth0', you need to create this file for whatever interface name your wired USB device is.
- Start the wired interface
ifup eth0
- Install the DHCP daemon
yum -y install dhcp
You may have to try this command twice; yum sometimes runs out of memory doing dependency solving, and terminates before actually installing the RPM.
- Configure DHCP to serve on the mesh interface. Edit /etc/sysconfig/dhcpd so it looks like this:
# Command line options here DHCPDARGS=msh0
- Set up DHCP to provide leases on the mesh interface. Edit /etc/dhcpd.conf to look like the following. For the "option domain-name-servers", use the domain name servers that your USB Ethernet device returned via DHCP, which should be found in /etc/resolv.conf. Don't leave "option domain-name-servers with the "x.x.x.x" values. If you only have one DNS server, omit the second value from at line.
subnet 10.0.0.0 netmask 255.255.255.0 { range 10.0.0.5 10.0.0.254; default-lease-time 3600; max-lease-time 7200; option subnet-mask 255.255.255.0; option broadcast-address 10.0.0.255; option routers 10.0.0.1; option domain-name-servers x.x.x.x, x.x.x.x; }
- Set DHCP to run on startup
chkconfig --level 345 dhcpd on
- Configure the mesh interface
iwconfig msh0 mode ad-hoc channel 11 essid "olpc-mesh"
- Assign the address to the mesh interface
ifconfig msh0 10.0.0.1 up
- run the mpp.py script
python mpp.py
and it should all work
Further Reading
More information is available on these topics: