USB Networking/de

From Openmoko

Revision as of 12:04, 3 December 2007 by Gorschkow (Talk | contribs)

Jump to: navigation, search

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 darun, 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.

Proxying with dnrd

Personal tools

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 darun, 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.

Proxying with dnrd