usb0なネットワークの使い方がわかったので記録。
ちなみにここのホストPCはUbuntu14.04なので注意。
これは何?
これはAndroidでもusbテザリングに使われるもののようで
ホストマシンのusbにEdisonをOTGポートにつなぐと出現する。
Edison側にもusb0ネットワークデバイスが出現する。
ただし、ホストになった場合はデバイス側に機能がないと出現しない。
使い方
さて、これを使用する場合
debian系なので/etc/network/interfaceをいじる。
USBファンクション機(Edison)
nano /etc/network/interface
auto usb0
iface usb0 inet static
address 192.168.2.15
netmask 255.255.255.0
USBホスト機(Ubuntu14.04なマシン)
自動的に出現するのでipアドレスとネットマスクのみを変更しファンクション機とネットワークセグメントを合わせる。
sudo ifconfig usb0 192.168.2.2 netmask 255.255.255.0
恒久的に使用したければ、ファンクション機同様に/etc/network/interfaceにエントリーを書く
EdisonをUSB経由で外に繋ぎたい場合は?
上記の設定ではUSBホスト機とUSBファンクション機の間でしか通信はできません。
やってないのですがUSBホスト機側でブリッジを形成するか、natエントリーをIptablesかfirewalldに作成することになります。
前提条件
Edison側
無線LANを無効化するか、ルーティングテーブルをいじってデフォルトゲートウェイをusb0側にします。
まあ目的が持ち歩きなら無効化するほうが省電力でいいかと思われます。
一時的にやるなら以下のコマンドでOK
ifconfig wlan0 down
- natの場合はネットワークセグメントをホスト機のつながっているネットワークと別にします。
- ブリッジの場合はネットワークセグメントを同じにして、他に使われていないアドレスにします。もちろんデフォルトゲートウェイも参加先のネットワークに合わせます。
USBホスト機(Ubuntu14.04相当)
ipv4でやります、Linuxカーネルへipv4パケットをリレーすることを許可します。
sudo nano /etc/sysctl.conf
以下の行のコメントを外す。
net.ipv4.ip_forward=1
即座に反映(本当は再起動した方がよい)
sudo sysctl -p
確認
cat /proc/sys/net/ipv4/ip_forward
1が帰ってくればOK
nat(masquerade)を構成する場合。
以下を参考にします。
http://qiita.com/Kshi-Kshi/items/2fa1436248f1d4938861
ここでは以下のように設定します。
sudo iptables -t nat -A POSTROUTING -s 192.168.2.0/255.255.255.0 -j MASQUERADE
再起動後のことを考えないならこちらがお手軽です。
間違えた場合、以下で行番号を確認
sudo iptables -t nat -L --line-numbers
指定の行番号を削除、確認は上のコマンドで再度行ってください。
sudo iptables -t nat -D POSTROUTING 行番号
bridgeを恒久的に構成する場合。
bridge-utilsのbrctlコマンドを使えば一時的にも可能です
ブリッジは固定でWifiのインターフェイス(dhcp)に設定して、
このブリッジに対してusb0のインターフェイスを参加させていく方法を考える。
auto lo
iface lo inet loopback
auto wlan0
iface wlan0 inet manual
auto br0
iface br0 inet dhcp
bridge_ports wlan0
bridge_maxwait 0
bridge_df 0
bridge_stp off
動的にインターフェイスの追加行う
sudo brctl addif br0 usb0
sudo ifconfig usb0 0.0.0.0
多分、これで使えるはずです。※試してないので試したら追記します。