Mit USB ins Internet

Das Beagleboard über eine serielle Verbindung und ein Terminalprogramm zu steuern, funktioniert zwar gut, aber auf Dauer ist eine richtige Netzwerkverbindung praktischer. Zum Beispiel, um Daten auf die Flash-Karte zu laden, ohne sie dafür am PC in einen Cardreader zu stecken. Oder um neue Software-Pakete in die Angstrom-Linux-Distribution zu installieren. Blöd ist nur: Das Beagleboard hat keinen Anschluss für Ethernet oder gar einen WLAN-Chip.

Glücklicherweise haben die Linux-Programmierer schon vor langer Zeit einen Ausweg geebnet, der aus der Allround-Schnittstelle USB auch ein Netzwerk-Interface macht. Also verbinde ich das Beagleboard mit meinem Linux-PC, einmal per USB und einmal per seriellem Kabel und starte noch einmal das Terminalprogramm. Es ist kaum zu glauben, aber es ist noch nicht einmal nötig, ein Kernelmodul zu laden oder ein Programm zu kompilieren. Es genügt, im Terminal auf dem Beagleboard die USB-Netzwerkschnittstelle zu konfigurieren:

root@beagleboard:~# /sbin/ifconfig usb0 192.168.0.2 netmask 255.255.255.0

Das entsprechende Kommando noch einmal auf dem PC eingegeben:

# /sbin/ifconfig usb0 192.168.0.1 netmask 255.255.255.0

und schon ist der jeweils andere Host über den Ping-Befehl erreichbar:

$ ping 192.168.0.2
PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.
64 bytes from 192.168.0.2: icmp_seq=1 ttl=64 time=0.203 ms
64 bytes from 192.168.0.2: icmp_seq=2 ttl=64 time=0.207 ms
...

Um nun vom Beagleboard ins Internet zu gelangen, sind zwei Dinge nötig: den PC als Default Route eintragen und dort IP-Masquerading einzurichten. Der erste Schritt umfasst nur einen Befehl:

root@beagleboard:~# route add default gw 192.168.0.1

Die folgenden Kommandos konfigurieren auf dem PC das IP-Masquerading und schalten das Routing ein:

# iptables --table nat --append POSTROUTING --out-interface wlan0 -j MASQUERADE
# iptables --append FORWARD --in-interface usb0 -j ACCEPT
# echo 1 > /proc/sys/net/ipv4/ip_forward

Im ersten Befehl ist das ,,Out-Interface“, also die Verbindung des PC ins Internet die WLAN-Schnittstelle »wlan0«. Wer seinen Computer stattdessen über Ethernet angeschlossen hat, muss hier »eth0« eintragen.

Um Hostnamen statt IP-Adressen zu verwenden, muss in der Datei »/etc/resolv.conf« auf dem Beagleboard noch ein Nameserver stehen. Funktioniert die Namensauflösung, startet »opkg update« die Aktualisierung der Paketquellen.

Nach oben