0%

BeagleBone BlackとHP Chromebook 11 - Part2: インターネットに接続する

前回BeagleBone BlackとChromebookをUSB接続できるようになりました。しかしこの状態ではBeableBone Blackからインターネットに接続できません。Chromebookをルーターとして機能させるためにIPフォワードとファイアウォールの設定をします。

Chromebookの設定

BeagleBone Black USB Ethernet definitionsを参考にChromebookの設定をします。

ctrl + alt + tでcrosh > shellを起動します。

crosh> shell

BeagleBone Blackを接続した状態でifconfigを確認します。eth0がBeagleBone BlackからUSB-Ethernet接続するインタフェースで、mlan0がChromebookからインターネットへつながる無線LANのインタフェースです。

$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.7.1 netmask 255.255.255.252 broadcast 192.168.7.3
inet6 fe80::9259:afff:fe58:32d3 prefixlen 64 scopeid 0x20<link>
ether 90:59:af:58:32:d3 txqueuelen 1000 (Ethernet)
RX packets 208 bytes 24036 (23.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 89 bytes 11263 (10.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 202 bytes 13036 (12.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 202 bytes 13036 (12.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

mlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.12 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::d2e7:82ff:feba:ddb7 prefixlen 64 scopeid 0x20<link>
ether d0:e7:82:ba:dd:b7 txqueuelen 1000 (Ethernet)
RX packets 2485 bytes 1233319 (1.1 MiB)
RX errors 0 dropped 24 overruns 0 frame 0
TX packets 2404 bytes 456542 (445.8 KiB)
TX errors 4 dropped 0 overruns 0 carrier 0 collisions 0

ChromebookのIPフォワードを有効にします。

$ echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward > /dev/null

iptablesのルールを追加してeth0からmlan0を経由してインターネットへ接続できるようにNATします。

$ sudo iptables -t nat -A POSTROUTING -o mlan0 -j MASQUERADE

mlan0とeth0の間は双方向でフォワードを許可します。

$ sudo iptables -A FORWARD -i mlan0 -o eth0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
$ sudo iptables -A FORWARD -i eth0 -o mlan0 -j ACCEPT

BeagleBone BlackのUbuntu 14.04 (SDカード)

Chromebookから BeagleBone BlackにSSH接続します。

  • username: ubuntu
  • password: temppwd
$ ssh ubuntu@192.168.7.2

usb0インタフェースの設定は以下のように静的に定義しています。

/etc/network/interfaces
...
auto usb0
iface usb0 inet static
address 192.168.7.2
netmask 255.255.255.252
network 192.168.7.0
gateway 192.168.7.1

ルーティングを確認します。

$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.7.1 0.0.0.0 UG 0 0 0 usb0
192.168.7.0 0.0.0.0 255.255.255.252 U 0 0 0 usb0

デフォルトゲートウェイの設定は正常に読み込まれていますが、表示されない場合は以下のように追加します。

$ sudo route add default gw 192.168.7.1

/etc/resolvconf/resolv.conf.d/baseにGoogleのDNSを追加します。

/etc/resolvconf/resolv.conf.d/base
nameserver 8.8.8.8
nameserver 8.8.4.4

/etc/resolv.confに反映させます。

$ sudo resolvconf -u
$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.8.8
nameserver 8.8.4.4

pingで名前解決とインターネット接続を確認します。

$ ping -c 1 www.yahoo.co.jp
PING www.g.yahoo.co.jp (182.22.70.252) 56(84) bytes of data.
64 bytes from f5.top.vip.ssk.yahoo.co.jp (182.22.70.252): icmp_seq=1 ttl=54 time=9.71 ms

--- www.g.yahoo.co.jp ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 9.718/9.718/9.718/0.000 ms

BeagleBone Blackはバッテリがないので電源を入れたあとはシステムクロックの時間あわせをします。

$ ntpdate -b -s -u pool.ntp.org