Establishing a Mesh Portal: Difference between revisions

From OLPC
Jump to navigation Jump to search
(A few updates)
(more updates)
Line 3: Line 3:


==Requirements==
==Requirements==
* http://www.cozybit.com/projects/mpp-utils/mpp-utils.tar.gz
* A USB ethernet adapter
* A USB ethernet adapter
* One OLPC laptop (XO)
* One OLPC laptop (XO)
Line 10: Line 9:
* Plug the USB ethernet adapter into the XO
* Plug the USB ethernet adapter into the XO


* Stop NetworkManager and dhcdbd scripts
* 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):

<pre>
# 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
</pre>

* Stop NetworkManager and the 'network' scripts
<pre>
<pre>
chkconfig --level 2345 NetworkManager stop
chkconfig --level 2345 NetworkManager stop
chkconfig --level 2345 network stop
chkconfig --level 2345 dhcdbd stop
chkconfig --level 2345 dhcdbd stop
</pre>
</pre>
Line 50: Line 32:
id:3:initdefault:
id:3:initdefault:
</pre>
</pre>

* 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:
* 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:
Line 57: Line 37:
<pre>
<pre>
DEVICE=eth0
DEVICE=eth0
ONBOOT=no
ONBOOT=yes
BOOTPROTO=dhcp
BOOTPROTO=dhcp
</pre>
</pre>
Line 63: Line 43:
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.
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.


* Create an ifcfg file for the mesh interface "msh0". Edit /etc/sysconfig/network-scripts/ifcfg-msh0 to look like the following:
* Start the wired interface

<pre>ifup eth0</pre>
<pre>
# Marvell mesh network module
DEVICE=msh0
MODE=ad-hoc
CHANNEL=1
ESSID="olpc-mesh-1"
IPADDR=172.18.16.1
NETMASK=255.255.240.0
NETWORK=172.18.16.0
BROADCAST=172.18.31.255
ONBOOT=yes
</pre>


* Install the DHCP daemon
* Install the DHCP daemon
Line 78: Line 70:
<pre>
<pre>
# Command line options here
# Command line options here
DHCPDARGS=msh0
DHCPDARGS="msh0"
</pre>
</pre>


Line 84: Line 76:


<pre>
<pre>
subnet 10.0.0.0 netmask 255.255.255.0 {
subnet 172.18.16.0 netmask 255.255.240.0 {
option routers 172.18.16.1;
range 10.0.0.5 10.0.0.254;
option subnet-mask 255.255.240.0;
default-lease-time 3600;
option broadcast-address 172.18.31.255;
max-lease-time 7200;
range 172.18.16.2 172.18.31.254;
option subnet-mask 255.255.255.0;
option broadcast-address 10.0.0.255;
option domain-name-servers x.x.x.x, x.x.x.x;
default-lease-time 600;
option routers 10.0.0.1;
max-lease-time 1800;
option domain-name-servers x.x.x.x, x.x.x.x;
}
}
</pre>
</pre>
Line 100: Line 92:
</pre>
</pre>


* reboot
* Configure the mesh interface
<pre>iwconfig msh0 mode ad-hoc channel 11 essid "olpc-mesh"</pre>

* Assign the address to the mesh interface
<pre>ifconfig msh0 10.0.0.1 up</pre>

* run the mpp.py script
<pre>python mpp.py</pre>


and it should all work
and it should all work

Revision as of 21:47, 13 April 2007

It's not entirely automatic quite yet; we'll get a more automatic solution in place soon.

Requirements

  • A USB ethernet adapter
  • One OLPC laptop (XO)

What to do

  • Plug the USB ethernet adapter into the XO
  • Stop NetworkManager and dhcdbd scripts
chkconfig --level 2345 NetworkManager 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:
  • 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=yes
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.

  • Create an ifcfg file for the mesh interface "msh0". Edit /etc/sysconfig/network-scripts/ifcfg-msh0 to look like the following:
#  Marvell mesh network module
DEVICE=msh0
MODE=ad-hoc
CHANNEL=1
ESSID="olpc-mesh-1"
IPADDR=172.18.16.1
NETMASK=255.255.240.0
NETWORK=172.18.16.0
BROADCAST=172.18.31.255
ONBOOT=yes
  • 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 172.18.16.0 netmask 255.255.240.0 {
	option routers			172.18.16.1;
	option subnet-mask		255.255.240.0;
	option broadcast-address	172.18.31.255;
	range                           172.18.16.2 172.18.31.254;
	option domain-name-servers	x.x.x.x, x.x.x.x;
	default-lease-time	600;
	max-lease-time 		1800;
}
  • Set DHCP to run on startup
chkconfig --level 345 dhcpd on
  • reboot

and it should all work

Further Reading

More information is available on these topics: