Ubuntu16.04にUSB接続したraspberrypiZeroをUSB経由でインターネットに接続する。(OTG接続)
用意するもの
- 母艦PC Ubuntu16.04
- OTGモードの設定が済んでいるRaspberrypiZero
- 参考:http://www.raspi.jp/2016/07/pizero-usb-otg/
- config.txt
dtoverlay=dwc2の1行を追記します。
- cmdline.txt
modules-load=dwc2,g_etherの1文をrootwaitのあとに追記します。改行せずスペース区切りで続けて記述するように注意します。
Ubuntu に RaspberryZero をUSB接続する。
デスクトップ > 設定 > ネットワーク > 有線 (ハードウェアアドレスからraspi zero を判断。) > オプション > IPv4設定
ローカルリンク専用へ変更
※ 再接続や母艦の再起動後にはまた設定が必要。 そのたびに有線接続**がインクリメントされてる。 誰か永続化方法教えてくださいw
Routing する
sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -A POSTROUTING -s 169.254.0.0/16 -o [internet iface名(eth0..wpl**)] -j MASQUERADE
※ 永続化するなら
vi /etc/sysctl.conf
- # sysctl -w net.ipv4.ip_forward=1
+ sysctl -w net.ipv4.ip_forward=1
iptables 永続化は省略...
リンク先のscriptを動かす。
https://gist.github.com/MarkJB/c1d72682142f545171aa207fb1634153
※以下はgithubのscriptを手動で行う手順
問題なくscriptが動く人、書き換えて使う人はリンク先のscriptを動かして作業完了。
接続情報を調べておく。
ifconfig
直接Webに繋がるIPのgatewayを控える [webIPのgatewayIP]
eth0 IP or wlp* IP
と、そのgatewayIP (192.168.1.1とか)
raspberrypiZero が接続されてるenps* の[LocalIP]
リンクローカルアドレス 169.254.xxx.xxx
raspberrypi Zero にログインする。
ssh pi@raspberrypi.local (pwはここでは省略)
raspberrypi側でRouting
sudo route add default gw [localIP] usb0
echo "nameserver [WebIPのgatewayIP]" | sudo resolvconf -a usb0
これで外部に繋がる(はず