IPを固定にするといろいろ幸せ
無線LAN に繋がっている機器どうしで通信したりする必要がなければ、特に問題ないのですが、RaspberryPiにSSHでつなげたり、はたまた無線中継ポイントとして使ったりする場合、IPは固定されている方が何かと便利です。
ルータのDHCPサーバ機能で固定IPを払い出すのが吉
いくらか設定の方法がありますが、きっちりと衝突せずに固定IPを払い出したい場合はルータの設定をするのがよろしかろうと思います。
みなさんはおそらくご家庭内では無線LANルータをお使いだと思います。そして大抵のルータはDHCPサーバとして稼働しているはずです。
ですので払い出すIPをMACアドレスを元に固定にする機能が備わっているかと思います。
設定はそれぞれのルータで異なるかと思いますが(項目の名称とか手順とか)、おそらくそんなに違いは無いと思うので参考になるかとは思います。
AtermWR9500Nの例
@MINOはNEC AtermWR9500Nというルータを使っています。以下はNEC AtermWR9500Nでの設定例を元に説明していきます。
NEC AtermWR9500Nでは払いだされるIPが192.168.0.0/27
の範囲になっており、ルータ本体のIPが192.168.0.1
となっています。
無線LANに繋がった機器には192.168.0.2〜33
のIPが払い出される様になっています。結構狭いです。
といってもNEC AtermWR9500Nは無線で機器4台までしか繋がらないので、192.168.0.0/27
の範囲でも全然足りますね。
@MINOの家にはパソコン4つ、タブレット3つ、スマートフォン1つ、RaspberryPiが1つあるのでどう考えても同時には繋がりませんが、裏を返せば機器は10台に満たないくらいしかないということなので、ほとんどの場合、動的には192.168.0.12
以下のIPが払い出されている様子です。
ですので今回は192.168.0.20
をRaspberryPiの固定IPとしたいと思います。
MACアドレスを確認する
まずRaspberryPiの(無線LAN アダプタの)MACアドレスが必要です。ifconfigコマンド等でMACアドレスを確認します。
pi@raspberry:~$ ifconfig
eth0 Link encap:Ethernet HWaddr b8:27:eb:cc:xx:xx
inet6 addr: fe80::49aa:ee09:815d:xxxx/64 Scope:Link
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:72 errors:0 dropped:0 overruns:0 frame:0
TX packets:72 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:6288 (6.1 KiB) TX bytes:6288 (6.1 KiB)
wlan0 Link encap:Ethernet HWaddr b8:27:xx:99:xx:a8
inet addr:192.168.0.50 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: 2408:210:cc64:5c00:6812:d52c:14e1:xxxx/64 Scope:Global
inet6 addr: fe80::86f1:f6ff:ce03:c8fe/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6050 errors:0 dropped:3015 overruns:0 frame:0
TX packets:1379 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1022248 (998.2 KiB) TX bytes:178934 (174.7 KiB)
今回はRaspberryPi3には最初から備わっている無線LANアダプタのMACアドレスを使用しますので、wlan0のHWaddrを確認します。もし有線でつなげる方はeth0を確認してください。
@MINOの場合は以下でした(実MACアドレスなので一部伏せ字にしています)
HWaddr b8:27:xx:99:xx:a8
ルータの設定画面にて
ルータの設定画面に行きます。ブラウザからhttp://192.168.0.1
にアクセスしてルータ設定画面に行きます(NEC AtermWR9500Nのデフォルト設定の場合)。
詳細設定からDHCP固定割当設定を選択。
するとMACアドレスにIPアドレスを結びつけるための設定画面が出ます。
ここに先ほど確認したMACアドレスと払いだしてもらいたいIPを入力します。
説明したとおりNEC AtermWR9500Nでは192.168.0.2〜192.168.0.33
までの範囲が払い出し対象のIP帯になります。
ですので192.168.0.50
とか192.168.0.150
とかを設定しても払いだしてもらえず、結局動的にIPが払い出されます。
他のルータがどうなっているのかはわかりませんが、おそらく同じようにIPの範囲があるかと思いますので、ハマらないように気をつけてくださいね。
設定後、設定したIPを払い出してもらうため、RaspberryPiを再起動します(電源を切っていたなら電源入れればよいです)。
そうすると
wlan0 Link encap:Ethernet HWaddr b8:27:xx:99:xx:a8
inet addr:192.168.0.20 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: 2408:210:cc64:5c00:6812:d52c:14e1:xxxx/64 Scope:Global
inet6 addr: fe80::86f1:f6ff:ce03:c8fe/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6050 errors:0 dropped:3015 overruns:0 frame:0
TX packets:1379 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1022248 (998.2 KiB) TX bytes:178934 (174.7 KiB)
inet addr:192.168.0.20
が表示されています。設定した192.168.0.20がちゃんと払いだされていることが確認できますね。
これでRaspberryPiの電源を切ったりしてIPが変わってしまうことはなくなります。
うれしす。
RaspberryPi側のDHCPクライアントで設定する。
RaspberryPiではdhcpクライントがルータからIPを受け取っていますが、設定を変えることでIPを固定することもできます。
Raspbian JessieからはDHCPクライアントの設定でIP固定を実現できます。
dhcpクライントの設定ファイルは/etc/dhcpcd.conf
です。dhcpd(dhcpサーバ)と名前が似ているので勘違いしやすいですが、設定するのはdhcpdc(DHCPクライアント)の方ですのでお間違えなく。
さてこのファイルはroot権限でなくては開けないので、sudoで開きましょう。
Raspbianだと最初からユーザのpiがsudoグループに入っていますのでsuでrootにならなくてもOKです。
pi@raspberry:~$ sudo vi /etc/dhcpcd.conf
ファイルを開くといろいろ設定が書かれているかと思いますが、特にイジる箇所はありません。 IPを固定にするためには、以下のような記述をこのファイルの末尾(でなくてもいいですが)に追加します。
下記は@MINOの環境での例です。IPは各位のルータの設定に合わせて変えてください。
# static ip
interface wlan0
static ip_address=192.168.0.50
static routers=192.168.0.1
static domain_name_servers=192.168.0.1
ここでは192.168.0.50
とか設定していますが、先ほどのルータ側の設定とは違い、このIPでもちゃんと払いだされます。おそらく192.168.0.0/24
の範囲でIP要求しても払いだしてもらえるようですね。
設定したらRaspberryPiを再起動してください。再起動後には設定したIPが割り当てられているはずです。
すくなくともNEC AtermWR9500Nはサーバからの動的払い出しが192.168.0.33
までしかないので、払いだされることのないIPを指定してあげると、他の機器と衝突しなくていいかもしれません。
まとめ
多分ルータから固定IPを払い出してもらう方法の方が良いように思えます。衝突しませんからね。設定もブラウザからで楽ですし。
ともあれ各位の環境に合わせてIP固定をしてみてください。