USB Networking/zh tw
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
StrictHostKeyChecking no
你可能想要使用 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à |