USB Networking/de
From Openmoko
Contents |
Neo1973 - Seite
Namensauflösung
Standardmäßig hat das Neo1973 eine Netzwerkschnittstelle usb0, die mit einem im Kernel einkompilierten (g_ether) Ethernet Dadget arbeitet.
Wenn Sie auf dem Neo voll qualifizierte Hostnamen im Internet erreichen wollen, müssen sie einen DNS-Server definieren. Dazu erstellen Sie die Datei /etc/resolv.conf, die mindestens diese Zeile enthält:
nameserver xxx.xxx.xxx.xxx
z.B. nameserver 192.168.1.1
Danach können Sie auf dem Neo Ihre Openmoko 2007.2 Pakete mit "ipkg update && ipkg upgrade" aktualisieren.
Ein besserer Ansatz ist ein symbolischer Link
ln -s /var/run/resolv.conf /etc/resolv.conf
Danach erstellen Sie die datei /etc/network/if-up.d/08setupdns, die folgende Zeilen enthält:
#!/bin/sh -e echo nameserver 192.168.0.200 > /var/run/resolv.conf
Auf diese Weise wird diese Datei vom PPP-Paket korrekt behandelt, wenn eine Einwahl per GPRS stattfindet.
Routing
Sie benötigen eine zusätzliche Route für die Verbindung ins Internet. Diese verbindung kann von Ihrem PC geroutet werden (siehe unten), wenn der PC das Standardrouting-Ziel ist. Sie erreichen dies durch das Hinzufügen von
gateway 192.168.0.200
zu Ihrer /etc/network/interfaces im Abschnitt usb0.
Desktop-Seite
Manuelle Methode
Nach dem Verbinden mit dem Gerät laden Sie das Modul usbnet und konfigurieren Sie die Schnittstelle usb0 (als root):
ifconfig usb0 192.168.0.200 netmask 255.255.255.0
Wenn Ihre eth0 Schnittstelle sich im selben 'Bereich' (z.B. 192.168.0.105) befinet, dann können Sie folgendes tun: 1. Neo anpingen:
# ping -I usb0 192.168.0.202
2. Route zum Neo hinzufügen:
# /sbin/route add -host 192.168.0.202/32 dev usb0
3. Einloggen auf dem Neo:
# ssh root@192.168.0.202
Wenn Sie keine notwendigen Module zum Erzeugen von usb0 haben, stellen Sie sicher, dass folgende Kernel Optionen aktiviert sind:
- CONFIG_USB_USBNET
- CONFIG_USB_NET_CDCETHER
Beide Optionen sind unter Device Drivers -> USB support -> USB Network Adapters zu finden. Für weitere Informationen siehe usbnet driver homepage.
Automatische Methode
Die Information entnehmen sie dem Hotplugging usbnet, geschickt von Marcin 'Hrw' Juszkiewicz.
Debian oder ähnliche
Editieren Sie /etc/network/interfaces wie folgt:
allow-hotplug usb0 iface usb0 inet static address 192.168.0.200 netmask 255.255.255.0 network 192.168.0.0 post-up iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24 post-up echo 1 > /proc/sys/net/ipv4/ip_forward post-up iptables -P FORWARD ACCEPT
Ubuntu (getestet mit Feisty und Gutsy)
Editieren Sie /etc/network/interfaces:
auto usb0 iface usb0 inet static address 192.168.0.200 netmask 255.255.255.0 network 192.168.0.0 up iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24 & up echo 1 > /proc/sys/net/ipv4/ip_forward & up iptables -P FORWARD ACCEPT & down iptables -D POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24 &
Wenn Sie das Kommando "echo 1 > /proc/..." manuell ausführen, könnte sudo nicht ausreichen, denn das Kommando sudo muss unter der Shell bash ausgeführt werden.
Ubuntu Fiesty und Gusty haben offenbahr einen Fehler, dass ifdown nicht ausgeführt wird, solange die Schnittstelle "unplugged" ist. Das bedeutet, dass es nur dann funktioniert, wenn das System neu gebootet wird.
Man kann die Datei /etc/udev/rules.d/85-ifupdown.rules patchen, indem man zwei Zeilen am Ende der Datei editiert:
SUBSYSTEM=="net", DRIVERS=="?*", GOTO="net_start" GOTO="net_end" LABEL="net_start" # Bring devices up and down only if they're marked auto. # Use start-stop-daemon so we don't wait on dhcp ACTION=="add", RUN+="/sbin/start-stop-daemon --start --background --pidfile /var/run/network/bogus \ --startas /sbin/ifup -- --allow auto $env{INTERFACE}" LABEL="net_end" ACTION=="remove", RUN+="/sbin/start-stop-daemon --start --background --pidfile /var/run/network/bogus \ --startas /sbin/ifdown -- --allow auto $env{INTERFACE}"
Der Fehler besteht darin, dass LABEL="net_end" an falscher Position steht.
openSuSE
/etc/sysconfig/network/ifcfg-usb0
# USB configuration for PDAs (openmoko) IPADDR=192.168.0.200 NETMASK=255.255.255.0 STARTMODE=onboot
Fedora (getestet unter FC8)
/etc/sysconfig/network-scripts/ifcfg-usb0
# USB configuration for PDAs (openmoko) # from http://www.handhelds.org/moin/moin.cgi/UsbNet DEVICE=usb0 BOOTPROTO=none IPADDR=192.168.0.200 NETMASK=255.255.255.0 ONBOOT=yes
Red Hat oder ähnliche
Editieren Sie /etc/sysconfig/network-scripts/net.hotplug:
Nach diesem Kommando
case $INTERFACE in # interfaces that are registered after being "up" (?)
fügen Sie hinzu
usb0) ifconfig usb0 192.168.0.200 netmask 255.255.255.0 route add 192.168.0.202 usb0 iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24 echo 1 > /proc/sys/net/ipv4/ip_forward exit 0 ;;
Gentoo
- Öffnen Sie /etc/conf.d/net und fügen Sie hinzu:
# Neo1973 config_usb0=( "192.168.0.200 netmask 255.255.255.0" ) routes_usb0=( "192.168.0.202/32 via 192.168.0.200" )
- Erzeugen Sie einen neuen init Script:
cd /etc/init.d ln -s net.lo net.usb0
- Erzeugen Sie iptables Einträge:
iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24
- Speichern Sie das
/etc/init.d/iptables save
- Wenn Sie möchten, dass Routing standardmäßig aktiviert wird:
rc-update add iptables default
MacOS X
Sehen Sie USB Netzwerk Abschnitt im MacOS X Artikel.
Mobile Entwicklung
Weiterleiten der DNS Anfragen
Wenn Sie Ihren Standort oft wechseln und somit Verbindung zu mehreren Netzwerken haten und Ihre IP Adresse über DHCP beziehen, ist es ziemlich aufwendig, jedes mal die Datei /etc/resolv.conf zu aktualisieren.
Um dies als Teil eines Setup-Scriptes zu tun, kann man einen Proxy DNS einrichten, der auf die IP Adresse des Neo zeigt. Dies bedeutet, dass die Datei /etc/resolv.conf auf dem Neo nur folgendes enthält:
nameserver 192.168.0.200
und z.B. der Notebook funktioniert als DNS Proxy und leitet alle Anfragen basierend auf seiner /etc/resolv.conf weiter.
Starten Sie den DNS Proxy nur auf der Schnittstelle usb0, um andere Netzwerkverbindungen nicht zu unterbrechen.
Weiterleiten mit dnrd
Das Script wurde für die Nutzung von dnrd als DNS Proxy entwickelt. Das Script und eine Kopie von dnrd sind auf meiner Seite verfügbar. Das Script führt auch die Ersteinrichtung für die Verbindung wie mit USB_Networking/de#Manuelle_Methode durch (siehe oben).
Weiterleiten mit einem UDP-Forwarder
Eine weitere einfache Installation ist mit einem UDP-Forwarder von http://www.tapor.com/udpf/ mit dem folgenden Kommando möglich:
udpf-elf\ -p=53\ -f=`cat /etc/resolv.conf|awk '$1 == "nameserver"{print $2; exit(0);}'`:53
Weiterleitung mit Iptables
Es ist möglich DNS Anfragen mit Iptables und DNAT weiterzuleiten:
iptables -t nat -A PREROUTING -p tcp -s 192.168.0.202 -d 192.168.0.200 --dport domain -j DNAT --to-destination 192.168.0.1 iptables -t nat -A PREROUTING -p udp -s 192.168.0.202 -d 192.168.0.200 --dport domain -j DNAT --to-destination 192.168.0.1
Dabei ist 192.168.0.1 die IP Adresse des Heimatgateways (Routers). Dies ist die einfachste Methode, aber sie ist nicht empfehlenswert, wenn Sie eine direkte Verbindung zum Internet haben und die DNS Server ihres ISP ändern können. Außerdem hat diese Methode keine Lastverteilung.
Verbindung mit dem Telefon
Zum Anmelden am Neo ssh root@192.168.0.202 mit dem leeren root Passwort
Notiz: Der SSH Daeomon (dropbear 0.49) im Openmoko scheint einen Bug beim Zurückgeben des Verbindungsstatus an den Client zu haben. Ab und zu bekommen sie einen Rückgabewert 255.
SSH Extras
Wenn Sie nicht mehr root@192.168.0.202 auf dem PC eintippen möchten, können sie einen Eintrag in der /etc/hosts machen:
192.168.0.202 neo
dann editieren Sie ~/.ssh/config (oder erzeugen sie) und fügen hinzu
host neo user root
dann brauchen Sie nur einzutippen:
# ssh neo
Um zu vermeiden, dass SSH für jeden Host eine Zeile mit dem Host-Key in der Datei known_hosts einfügt, können Sie folgende Zeile in der ~/.ssh/config einfügen
UserKnownHostsFile /dev/null
Vielleicht möchten Sie einen Schlüssel zur Umgehung der Anzeige des Anmeldebildschirms nutzen.
SSH Schlüssel
Vom Host zum Neo
Zur Erzeugung des SSH Schlüssels für die Verwendung des Login Mechanismus geben sie folgendes ein:
ssh-keygen -t rsa
Wenn Sie nach einem Passwort gefragt werden, drücken Sie Enter für leeren Passwort (wirklich keine gute Idee) oder geben Sie das Passwort für diesen Schlüssel ein. Loggen Sie sich am Neo mit ssh ein und erzeugen Sie das Verzeichnis ~/.ssh wie folgt:
# mkdir ~/.ssh
Danach kopieren Sie die Datei .pub vom PC auf den Neo:
# scp ~/.ssh/id_rsa.pub phone:.ssh/authorized_keys
Jetzt sollten Sie in der Lage sein, sich auf dem Neo direkt per ssh anzumelden.
Zum Deaktivieren des Passwort Logins (nach dem Einrichten des Schlüssel Zuganges) editieren Sie die Datei /etc/init.d/dropbear und ändern Sie folgende Zeile:
DROPBEAR_EXTRA_ARGS=
zu
DROPBEAR_EXTRA_ARGS="-s"
Jetzt müssen Sie den dropbear neu starten um die Änderung zu aktivieren.
Vom Neo zum Host
Erzeugen Sie den Schlüssel
dropbearkey -t rsa -f id_rsa
Die Ausgabe wird in etwa wie folgt aussehen:
Will output 1024 bit rsa secret key to 'id_rsa' Generating key, this may take a while... Public key portion is: ssh-rsa AAAAB3Nza[...] Fingerprint: md5 ca:e8:f0:b7:f6:7b:c2:b6:b9:71:e4:45:86:a9:ff:b8
Kopieren Sie eine Zeile (in diesem Beispiel beginnend mit 'ssh-rsa') am Ende der Datei authorized_keys auf dem Host System (oft in ~/.ssh/).
Loggen Sie sich vom Neo aus mit ssh -i:
ssh -i id_rsa user@host
Die Anweisungen wurden entnommen aus: [[1]]
GUI auf dem Desktop über SSH
Wenn Sie die GUI des Neo auf dem Desktop benutzen möchten, können Sie den X Server wie folgt über SSH tunneln:
ssh -l root -X -v 192.168.0.202
Melden Sie sich an und starten Sie z.B. das Programm openmoko-finger-demo, welches auf ihrem Desktop geöffnet wird. Um die Seitenverhältnise zu verändern, verändern Sie einfach die Größe des Fensters auf dem Desktop.
Remote Anwendungen auf dem Neo
Um die Desktop Anwendungen auf Ihrem Neo anzuzeigen melden Sie sich zuerst auf dem Neo an:
ssh -l root 192.168.0.202
Danach darauf folgendes eingeben:
DISPLAY=:0 xhost +192.168.0.200
Danach können Sie die SSH Sitzung schließen. Gehen Sie zurück auf den Desktop und führen Sie aus:
DISPLAY=moko:0 xclock
Beachten Sie, dass der Befehl xhost entfernten Anwendungen auf 192.168.0.200 den Zugriff auf den X-Server erlaubt. Dies erlaubt also jedem Programm auf dem Desktop auf den X-Server zu zugreifen, einschließlich allen Kommandos, die Sie eingeben. Um die Fernbedienung auszuschalten, geben Sie folgendes ein:
DISPLAY=:0 xhost -192.168.0.200
Languages: |
English • العربية • Български • Česky • Dansk • Deutsch • Esperanto • Eesti • Español • فارسی • Suomi • Français • עברית • Magyar • Italiano • 한국어 • Nederlands • Norsk (bokmål) • Polski • Português • Română • Русский • Svenska • Slovenčina • Українська • 中文(中国大陆) • 中文(台灣) • Euskara • Català |