Edited at

簡単にRaspberry PiでSORACOM AirのPPP接続とLAN接続のデフォルトゲートウェイを切り替えPPP接続を優先させる。

More than 3 years have passed since last update.


概要

Raspberry Piで富士ソフトのUSBモデム FS01BUなどを使いSORACOM Airの3G通信(PPP接続)ができます。その際、 Raspberry PiにLANケーブルまたはWi-fiドングルを接続して、LAN上のイーサーネット(有線)かWi-fi(無線)に接続しつつ作業している場合が多いのではないでしょうか (少なくともRaspbianインストール後の仕込みの時点ではPPPでサーバ接続+LANでラズパイにSSH接続というというシチュエーションがよくある)。



デフォルトゲートウェイの設定によってはサーバやクラウドへの接続がLAN経由になって肝心のSORACOM AirによるPPP接続が使われていないことがあります。

この記事では、デフォルトゲートウェイを確認しデフォルトゲートウェイを切り替えPPP接続を優先させる手順を示します。


手順 【前提・確認】

FS01BUなどをRaspberry Piに差します。Wi-fiドングルやイーサーネットケーブルが接続された状態でRaspberry Piを立ち上げてターミナルで操作を行います。ターミナルはRaspberry Pi直接でも、LAN接続されたPCのターミナル画面でも構いません。

ifconfigでネットワーク接続のデバイスを確認します。

$ ifconfig

eth0 Link encap:Ethernet HWaddr b8:27:eb:XX:XX:XX
inet addr:192.168.1.96 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::ba27:ebff:fe1f:7d6c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:9934 errors:0 dropped:0 overruns:0 frame:0
TX packets:775 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:929803 (908.0 KiB) TX bytes:72810 (71.1 KiB)

lo …(中略)…

ppp0 Link encap:Point-to-Point Protocol
inet addr:10.205.163.61 P-t-P:10.64.64.64 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:46 errors:0 dropped:0 overruns:0 frame:0
TX packets:57 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:3172 (3.0 KiB) TX bytes:3161 (3.0 KiB)

イーサーネット(有線)接続のインターフェース・デバイス名(以下「デバイス名」と呼びます)がeth0、SORACOM Airの3G通信(PPP接続)のデバイス名はppp0になっています。

Wi-fiドングルでWi-fi(無線)接続をしている場合、デバイス名はwlan0などになっているでしょう。

次に、netstat -rコマンドで現在のルーティングテーブルを確認します。

$ netstat -r

Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
10.64.64.64 * 255.255.255.255 UH 0 0 0 ppp0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0

Destination(受信先サイト)列がdefaultになっている行に着目します。

Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface

default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0

Iface(インタフェース)列がeth0になっており、インターネットにアクセスする場合eth0のゲートウェイ(=ルータのこと)経由で接続されます。これをPPP接続経由に変更したいと思います。


手順 【デフォルトゲートウェイの切り替え】

route delコマンドでeth0デバイスのデフォルトゲートウェイの削除を行い、route addコマンドでppp0デバイスのデフォルトゲートウェイの追加を行います。

$ sudo route del default dev eth0

$ sudo route add default dev ppp0

route delコマンドで既存のデフォルトゲートウェイの削除を行った後、route addコマンドで新たなデフォルトゲートウェイの追加を行う手順を行う必要があります。

その後、netstat -rコマンドで変更後のルーティングテーブルを確認します。

$ netstat -r

Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default * 0.0.0.0 U 0 0 0 ppp0
10.64.64.64 * 255.255.255.255 UH 0 0 0 ppp0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0

またDestination(受信先サイト)列でdefaultになっている行に着目します。

Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface

default * 0.0.0.0 U 0 0 0 ppp0

Iface(インタフェース)列がppp0になっていればデフォルトゲートウェイが変更され、PPP接続経由に変更されています。


手順 【Wi-fi(無線)接続での切り替え】

Wi-fiドングルでWi-fi(無線)接続をしている場合、デバイス名はwlan0などになっているので、以下のコマンドを打つことになります。

$ sudo route del default dev wlan0

$ sudo route add default dev ppp0


接続確認

デフォルトゲートウェイの表示で確認は取れていますが、実際に接続して確認を取ってみたいと思う方は、tracerouteコマンドで適当なサイトを指定してみればいいでしょう。

$ traceroute www.yahoo.co.jp

traceroute to www.yahoo.co.jp (xxx.xx.xx.xxx), 30 hops max, 60 byte packets
1 ec2-yyy-yy-yyy-yyy.ap-northeast-1.compute.amazonaws.com (yyy.yy.yyy.yyy) 366.993 ms (以下略)

現時点(2015年11月時点)では最初のホップが、EC2の東京リージョンのIPアドレスになっていればOKです。インターネットへはSORACOM Airの3G通信(PPP接続)を経由して接続されています。


参考サイトURL



  • Linuxルーティング追加

    Linuxでのルーティングテーブルの設定方法を様々なシチュエーションから取り上げられています。


  • SORACOM Airで色々と検証してみる。

    株式会社マイニングブラウニーの得上さんが、SORACOM AirのアクセスするIPアドレス周りをイロイロ調べられています。

では、SORACOM AirでIoTをお楽しみください