2005年1月19日

[PDA] Zaurus C760 新手筆記 (14) - 與 Windows 以 USB Net 連接

其實與前一篇 [Linux] Debian on My ThinkPad R40 (7) - 與 Zaurus 以 USB Net 連接 的作法相似。只差在:
  1. 要先安裝 Windows 上的 USB Driver。 (C760/C860 光碟的 USBdrivers 目錄)

  2. NAT 的部份要啟動 Windows 的 "網際網路連線共用"。

  3. 每次重新拔插 USB 線後,Windows 都會把 USB 網路連線的 TCP/IP 設定為使用 DHCP。
所以問題只在 Zaurus 端,我們要把 routing table 少的 default gateway,及 resolv.conf 少的 name server 設定變成自動程序。

底下是我的改法,修改 /etc/hotplug/usbd.conf,在每一行的
echo "range $SUBNET.? range $SUBNET.?" >> $dhcpd_conf
之後,加上一行
route add default gw $SUBNET.? dev usbd0
其中的 "?" 會變,新增一行的 "?" 值,依前一行而定。

在 usbd_net_if_up 的最後面加上
if [ ! -f /etc/hotplug/resolv.conf ]; then
  cp /etc/resolv.conf /etc/hotplug/resolv.conf
  sed -e "s/^nameserver/#nameserver/g" /etc/hotplug/resolv.conf > /etc/resolv.conf
  echo "nameserver 168.95.1.1" >> /etc/resolv.conf
  echo "nameserver 168.95.192.1" >> /etc/resolv.conf
fi

在 usbd_net_if_down 的第一行加上
if [ -f /etc/hotplug/resolv.conf ]; then
  cp /etc/hotplug/resolv.conf /etc/resolv.conf
  rm /etc/hotplug/resolv.conf
fi

這樣在每次用 USB 線連接 Windows 或 Debian 時,就可以直接連上網際網路了。
不過其實 usbd_net_if_down 程序不會在一拔掉 USB 線時就被執行,試了幾次,只能確定 Zaurus 進入 suspend 模式 (就是 "電源 Off" 時,不過我覺得用 suspend 是比較精確的講法) 時,該程序會被啟動。
當然,我的 Debian 也受惠於這樣的修改,用不著在與 Zaurus 連接時,還要到 Zaurus 下指令,我也順便把 Debian 上的設定改為 DHCP。
iface zaurus inet dhcp
  #dns-nameservers 168.95.1.1 168.95.192.1
  up echo "nameserver 168.95.1.1" > /etc/resolv.conf
  up echo "nameserver 168.95.192.1" >> /etc/resolv.conf
  up echo "1" > /proc/sys/net/ipv4/ip_forward
  up iptables -t nat -A POSTROUTING -o eth0 -s 192.168.129.201 -j MASQUERADE
  down iptables -t nat -D POSTROUTING -o eth0 -s 192.168.129.201 -j MASQUERADE
  down echo "0" > /proc/sys/net/ipv4/ip_forward

2005/01/26 修正:

因為連線太久後,DHCP 會重給資料,導致 Debian 在 ifup 時改的 name server 又會被覆寫。所以在 Zaurus 的 /etc/hotplug/usbd.conf 中多加一行 (位於 echo "option netbios-name-servers ......" 之前):
echo "option domain-name-servers 168.95.1.1,168.95.192.1;" >> $dhcpd_conf
並且把 Debian 的 logical interface 中有關 nameserver 的內容都去掉。


沒有留言: