母艦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 件のコメント:
コメントを投稿