USB Networking/zh cn
From Openmoko
Contents |
Neo1973 side
命名方式
预设的状况下Neo1973拥有usb0界面,被编译到kernel中,做为以太网络装置。 在Neo上,如果你想要在网络上使用完整的主机名称,你必须定义你的DNS server。建立 /etc/resolv.conf档案,档案中要包含以下的内容:
nameserver xxx.xxx.xxx.xxx
e.g. nameserver 192.168.1.1
因此,你也可以轻松的使用 "ipkg update && ipkg upgrade" 更新 Neo.
更好的方法是编辑: /etc/network/interfaces 并且写入以下的内容:
up echo nameserver 192.168.0.200 >/etc/resolv.conf
要指定你喜好的DNS server而不是192.168.0.200。
example: up echo nameserver 4.2.2.2 >/etc/resolv.conf
另一个方法是symlink (NOW OBSOLETE?)
ln -s /var/run/resolv.conf /etc/resolv.conf
并且在启动 /etc/network/if-up.d/08setupdns script中写入:
#!/bin/sh -e echo nameserver 192.168.0.200 > /var/run/resolv.conf
使用这个方法可以在拨号到GPRS时,正确的从ppp 软件中处理。
Routing
你必须自额外的流量绕送到因特网上。 若你的计算机是预设的目的地位置,这个流量可以透过你的计算机被绕送出去 (see below)。你可以使用下列方法达到这个目地:
gateway 192.168.0.200
在usb0区段中到 /etc/network/interfaces。
Desktop side
手动
在连接上了装置之后,modprobe usbnet 模块及设定 usb0 接口 (以root身份):
ifconfig usb0 192.168.0.200 netmask 255.255.255.0
如果你的 eth0 接口位于同一个 '范围' (e.g. 192.168.0.105) 则你可以进行下面的工作:
1. 以下列指令ping Neo装置
# ping -I usb0 192.168.0.202
2. 为Neo加入route:
# /sbin/route add -host 192.168.0.202/32 dev usb0
3 登入 Neo
# ssh root@192.168.0.202
若你没有必要的模块可以让usb0 运作,请确定你启用了以下的kernel选项:
- CONFIG_USB_USBNET
- CONFIG_USB_NET_CDCETHER
二个选项都可以启动 Device Drivers -> USB support -> USB Network Adapters. For more info see the usbnet driver homepage.
自动化方法
自Hotplugging usbnet 取得,由 Marcin 'Hrw' Juszkiewicz张贴。
Debian 或相似的系统
Edit /etc/network/interfaces:
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 (由Feisty、Gutsy 与Hardy测试)
Edit /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 &
若你执行用手动的方式执行 echo 1 > /proc/... 指令,sudo 可能尚嫌不足,接着,你则可以自auso bash执行。
Ubuntu Feisty、Gutsy 及 Hardy 在未挂载时,ifdown 是有臭虫的,也就是说,它只有在系统加载时可以执行。
这个臭虫很久之前已回报给ubuntu。因此,不要将这个臭虫夹文件,请在下列位置写入备忘:https://bugs.launchpad.net/ubuntu/+source/ifupdown/+bug/130437
One can patch /etc/udev/rules.d/85-ifupdown.rules, editing the two lines at the end of the file:
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}"
臭虫内容为LABEL="net_end" ,它被放在错的地方。
SuSE
/etc/sysconfig/network/ifcfg-usb0
# USB configuration for PDAs (openmoko) IPADDR=192.168.0.200 NETMASK=255.255.255.0 STARTMODE=onboot
Fedora (由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 或类似套件(在 Workstation 5下测试)
编辑Edit /etc/sysconfig/network-scripts/net.hotplug:
在这个指令之后
case $INTERFACE in # interfaces that are registered after being "up" (?)
加入
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
- 开启 /etc/conf.d/net 并且加入add:
# Neo1973 config_usb0=( "192.168.0.200 netmask 255.255.255.0" ) routes_usb0=( "192.168.0.202/32 via 192.168.0.200" )
- 建立一个新的init script:
cd /etc/init.d ln -s net.lo net.usb0
- 将iptables放入使用:
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
- 将它们存放在
/etc/init.d/iptables save
- I如果你希望在预设的情况下绕送:
rc-update add iptables default
- 你必须也通知 kernel,开始传送。建立以下的内容,则可以自动传送:
create /etc/conf.d/net.usb0 as follows preup() { echo 1 > /proc/sys/net/ipv4/ip_forward return 0 } postdown() { echo 0 > /proc/sys/net/ipv4/ip_forward return 0 }
用这个方法,封包传递将会在NEO连接上的时候开始传送,若关闭,则无法传送。
MacOS X
请参考MacOS XUSB Networking 一节.
Mobile开发
代管DNS请求
若你是像我一样,常常搬家,必须透过DHCP连接到不同的网络,你可能会因为经常性的更新Neo 1973的resolv.conft而感到烦恼。
要处理这个问题,如我的安装script,我在NEO USB0端口号的IP地址执行。这表示 Neo /etc/resolv.conf 只包含了:
nameserver 192.168.0.200
我的计算机将只会依的 /etc/resolv.conf 代管DNS
请注意我们只会在usb0界面上执行dns proxy ,因此我们并不会破坏其它的网络联机
使用 dnrd 代管
这个 script 被设定为使用 dnrd 做为 dns proxy。script 及 dnrd的复本可以自我的网站取得。这个 script也可以执行上列的USB_Networking#Manual_method初始安装。
以UDP forwarder代管
另一个简单的安装是使用来自http://www.tapor.com/udpf/ 的udp forwarder,它可以用下列指令操作:
udpf-elf\ -p=53\ -f=`cat /etc/resolv.conf|awk '$1 == "nameserver"{print $2; exit(0);}'`:53
Proxying with iptables
Its is possible to forward DNS requests with iptables using the DNAT target
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
在这里192.168.0.1 是你的gateway的IP。它是最简单的方法,但是不建议这样做。但假设你有像ISP DNS服务一样直接连到网络,则建议这样做,但它无法做到流量调节。
连接到电话
接着以空白密码连接到 ssh root@192.168.0.202 电话。
注意: 在Openmoko上的ssh daemon (dropbear 0.49) 的程序在传现及离开客端状态有 bug。你会收到的离开状态为255。
SSH Extras
I如果你在PC上键入root@192.168.0.202,编辑 /etc/hosts 并加入一个输入'phone'
192.168.0.202 phone
接着编辑 edit ~/.ssh/config (或建立它) 并加入
host phone user root
你必须做的工作是
# ssh phone
要避免 ssh 为每个已知的hostsssh host-key加入新的一行,你可以加下下列的内容到~/.ssh/config
UserKnownHostsFile /dev/null
你可能想要使用 key 跳过这个过程。
SSH Keys
从主机到手机
要产生可以用的 ssh key 做为登入之用,请输入:
ssh-keygen -t rsa
在出现键入密码时,请键入ENTER(虽然它不是个好主意)或者是以这个KEY做为密码输入。ssh到手机,并且建立~/.ssh
# mkdir ~/.ssh
接着,从你的计算机上复制 .pub档案到手机上
# scp ~/.ssh/id_rsa.pub phone:.ssh/authorized_keys
你现在应该可以直接 ssh 到手机上
要停用登入密码 (在设定完KEY存取之后) 编辑 /etc/init.d/dropbear 并且变更下列的内容
DROPBEAR_EXTRA_ARGS=
为
DROPBEAR_EXTRA_ARGS="-s"
你必须重新启动,以让设定生效。
从手机到主机
产生key
dropbearkey -t rsa -f id_rsa
输出内容将如下:
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
复制并贴上以下的内容 (在这个范例当中,以'ssh-rsa' 开始,到主机的 authorized_keys 档案为止 (通常是在 ~/.ssh/).
从手机,ssh -i:
ssh -i id_rsa user@host
对我来讲,它是行的通的。 I ripped off these instructions from: [[1]]
透过桌面的GUI SSH
如果你必须方过USB取得手机上的GUI,你可以用下面的方式使用SSH:
ssh -l root -X -v 192.168.0.202
如登入,并且执行openmoko-finger-demo ,它会在桌面开启。要取得横式的检视,请变更桌面的GUI窗口。
NEO上的远程程序
要让桌面上的程序能在你的NEO上显示,请登入手机:
ssh -l root 192.168.0.202
执行:
DISPLAY=:0 xhost +192.168.0.200
之后,你可以关闭ssh session。回到桌上型计算机,执行:
DISPLAY=moko:0 xclock
请注意xhost 指令只会允许远程应用程序在 192.168.0.200 存取X server。它允许任何人用桌上型机器存取neo X server。要停用远程应用程序,在NEO上执行:
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à |