2013/06/09

BeagleBoneをUSB経由でインターネットにつなぐ

無印BeagleBoneとBeagleBone BlackはPCとUSBケーブルで接続するとUSB-Ethernetとして認識されます(母艦PC、BeagleBoneともにインターフェース名がusb0となります)

母艦PC側には当然インターネットに接続しているインターフェースがあるので、これを共有すればBeagleBoneにLANケーブルや無線LANアダプタを挿さなくてもインターネットが使えるはず。

というわけでググって調べてみました。


参考元:How To Share Network with Beagleboard through USB


母艦PC側

sudo iptables --table nat --append POSTROUTING --out-interface wlan2 -j MASQUERADE
sudo iptables --append FORWARD --in-interface usb0 -j ACCEPT
sudo echo 1 > /proc/sys/net/ipv4/ip_forward


(私の環境では、インターネットに接続しているのがwlan2、BeagleBoneに接続しているのがusb0です ip_forwardに1を書きこもうとして怒られても、ip_forwardの中身が1になってればOKです)

BeagleBone側

route add default gw 192.168.7.1

vi /etc/resolv.conf

(以下の行を追加)
nameserver 192.168.7.1

参考元の手順ではここまででOKとのこと。

我が家のネットワーク環境は以下のような感じになっているので、
まずは近いところからチェックしていきます。


ネットワーク環境

BeagleBone側で、
ping 192.168.7.1
ping 192.168.111.11
ping 192.168.111.1
ping 133.243.3.34  (NTPのサービスをしているnict)

と外側に向かってPINGを打っていきます。
インターネットに出れればOKです。

次にDNSのアドレスを設定する必要がありますが、192.168.7.1ではなく、
我が家のネットワークのDNSサーバ(ルータ)のIPに書き換えます。

vi /etc/resolv.conf
nameserver 192.168.111.1

これで ping www.google.co.jpとかやっても無事PINGが通ります。

喜んだのもつかの間、BeagleBoneを再起動すると設定が元に戻ってしまいます。
仕方が無いので

ubuntu@arm:~$ cat setupUSB0.sh
#!/bin/sh


count=`grep -c 192.168.111.1 /etc/resolv.conf`
echo ${count}
if [ ${count} -eq 0 ]; then
  echo "Adding default gateway"
  echo nameserver 192.168.111.1 >> /etc/resolv.conf
  tail /etc/resolv.conf
fi

route add default gw 192.168.7.1
netstat -rn

としてインターネット接続が必要なときに実行することにしました。


0 件のコメント:

コメントを投稿