Raspberry Piで複数Wifiで個別の固定IPを指定する方法

** ※本記事は2015-02-16-raspbian-wheezyをベースに記事を書いています。 **

いろいろ試行錯誤しましたが、Raspberry Piで複数Wifiで個別の固定IPを指定する方法がわかったのでメモしておきます。

用途としては、家のWifiで普段は使っているが、外で開発するときにWimaxやテザリングなどの別のWifiで作業したいときを想定しています。

まず単独Wifiで固定IPを仕込む場合

こちらはGoogleで調べてみるとかなり出てくるので設定しやすかった。

これでバッチリ家のWifiが繋がった。

複数Wifiで個別の固定IPを指定する

上記の設定がうまくいった上で探してみると全然設定がネット上で見つからない。

いろいろ進めていく上で、以下の仮説がでてきた。

  • /etc/wpa_supplicant/wpa_supplicant.conf はWifiの接続設定を司る
    • その接続設定レベルでIPを固定できなくもないがwlan0との設定が小難しくなる挙句に文献が少ない→つまり難しい
  • /etc/network/interfaces はネットワークの切り替えや管理をしている
    • こちらで固定IPを指定してやるのが妥当

こんなかんじ。

ヒントとなる記事を見つけた

しかしながら、そうなるとwlan0に2つのwifiの設定を置くことになり、どう設定していいのかわからなくなってしまう。

おそらくWifiの接続設定であるwpa_supplicant.confと、ネットワークの切り替えや管理をしているinterfacesでの何か共通のつなぎがあるんじゃないかと思ったわけだが、ヒントとなる記事を見つけました。

こちらで、RaspiConfというwpa_supplicant.conf側でのid_strという設定値があり、interfacesでの接続設定にも同名のRaspiConfを利用している記述があります。

こちらの記事を元にいろいろ試行錯誤

試行錯誤しなんとか、うまくいきました。

普段設定している設定を書くのが一番わかり易いのですが、さすがにそのまま書けないので

  • SSID1Wifiは家のWifiの設定として使うもので、ネットワークの範囲は192.168.1.1~192.168.1.255。
    • 固定IPは192.168.1.100にしたい。
  • SSID2Wifiは外部で使うWifi。独自のネットワークの範囲を持っており192.168.20.1~192.168.20.255。
    • 固定IPは192.168.20.30にしたい

という仮定で以下にサンプルを置いておきます。

/etc/wpa_supplicant/wpa_supplicant.conf

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
	ssid="ssid1-????????"
	psk="????????"
	priority=0
	proto=RSN
	key_mgmt=WPA-PSK
	pairwise=TKIP
	auth_alg=OPEN
	id_str="SSID1Wifi"
}

network={
	ssid="ssid2-????????"
	psk="????????"
	priority=1
	proto=RSN
	key_mgmt=WPA-PSK
	pairwise=TKIP
	auth_alg=OPEN
	id_str="SSID2Wifi"
}

/etc/network/interfaces

auto lo

iface lo inet loopback
iface eth0 inet dhcp

auto wlan0
allow-hotplug wlan0

iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

iface SSID1Wifi inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1

iface SSID2Wifi inet static
address 192.168.20.30
netmask 255.255.255.0
gateway 192.168.20.1

ポイントは以下。

  • 単独Wifiだとwpa-confでうまくいくようだが、Wifi切り替えの場合はwpa-roamのほうで動作した.
  • 単独Wifiと同様だが、それぞれ固定IPはネットワークアドレスの範囲に合わせる。コピペして移植すると範囲間違ってて泣く。
    • Wimax端末など家のWifiとは範囲が違ったりするのでよく確認しましょう。
  • ネットワーク系はしくじると直接見に行かないといけないので、モニタ・キーボード・マウス必須。

まとめ

いかがでしたでしょうか。これで外で開発したりするときにも対応しやすくなり、さらに言えば、事前に新しいWifiの設定を把握しておけば、前もって設定をしておいてから現場で接続を試すことも可能ですね。

ちなみに、ここまで確信を得た上で、改めて「id_str Raspberry Pi」と調べてみると、これだよ!っていう海外のいろいろな記事が出てくる体たらくですが、今回の気付きと着地はこれで良かったということにします!

それでは、よきRaspberry Pi Lifeを!