Raspberry Pi で固定IPアドレスを設定する手順についてまとめておきます。
ローカルネットワーク内に Windows や Linux が混在している場合のコマンドや表示についても情報を集約しておきます。
以下の環境で確認をしています。
環境:
・ Windows パソコン
・ Raspberry Pi (bullseye、他)
・ LAN ネットワーク(インターネット、Wi-Fi 接続用)
★ Windows パソコンと Raspberry Pi はあらかじめ、ローカル LAN に接続済み。
背景 ~ ラズベリーパイで IP アドレスを固定する!
日頃、ローカルネットワークに Windows パソコンや Raspberry Pi を接続して活用しています。
Raspberry Pi のローカル IP アドレスはデフォルトでは可変となっています。
つまり、ネットワークに接続するたび、IP アドレスが変化していく可能性があります。
Windows パソコンなどからリモートデスクトップなどで Raspberry Pi にアクセスしようとする際、接続先の IP アドレスが必要です。しかし、IP アドレスが変わるとその都度、確認が必要となり面倒です。
また、ローカルネットワーク内で Raspberry Pi をWeb サーバー化したり、ファイルサーバーとする際も、やはり IP アドレスを固定化したくなります。
さらに、IP アドレスを可変のままとしていると、起動の際、IP アドレスの重複などにより、Wi-Fi 接続が失敗することもあると思います。
ということで、Raspberry Pi の IP アドレスを固定化する手順についてまとめておきます。
なお、ローカルネットワークを活用する際、Linux と Windows など OS が異なる機器がつながっていることがあります。ネットワーク環境を確認・設定するコマンドや用語も OS ごとに異なっており、煩雑です。
そこで、ネットワークに関連する Linux や Windows のコマンドや用語、相違についても、情報を集約しておくことにします。
なお、以下の具体例は、Wi-Fi でネットワークに接続する場合を想定しています。
LAN ケーブルで接続する場合は、Wireless LAN (wlan) 等となっている部分をイーサネット(ether)等と読み替えるようにしてください。
手順
⓪ あらかじめ、Raspberry Pi や Windows パソコンを(Wi-Fiなどの)ローカルネットワークに接続しておきます。
それぞれのデバイスから、インターネットが参照できるのであれば、ローカルネットワークに接続できていると考えてよいと思います。
Windows 側での確認: DHCP サーバー、DNS サーバーの IP アドレスを確認する
① Windows パソコンのコマンドプロンプトを起動し、以下を実行します。
> ipconfig /all
② 以下の設定値の部分を確認します。数値は一例です。
Wireless LAN adapter Wi-Fi:
デフォルト ゲートウェイ: 192.168.X.X
サブネット マスク: 255.255.255.0
DHCP サーバー : 192.168.X.X
DNS サーバー : 192.168.X.X
★ DHCP サーバー: Dynamic Host Configuration Protocol サーバー
「DHCP」は、「動的にホストを構成するプロトコル」です。DHCP サーバーは実質的に、いわゆるルーターという理解でよいと思います。以下の⑨の “routers” に対応しています。⑨で使いますので、IP アドレスを確認しておきます。
★ DNS サーバー: Domain Name System サーバー
DNS は、ローカルネットワーク内で DHCP とともに設定されているサーバーです。以下の⑨で使いますので、IP アドレスを確認しておきます。なお、サーバーをレンタルしてドメイン名の取得を依頼する際にも DNS という表現が出てきました。
③ さらに、以下を実行します。
> arp -a
④ ここで、ネットワークに接続されたデバイスの IPアドレスを確認しておきます。
表示の例
インターフェイス: 192.168.X.X … Windows パソコンのローカルIPアドレス
インターネット アドレス 物理アドレス
192.168.X.1 00-XX-XX-XX-XX-XX … 上記のデフォルトゲートウェイ/DHCPサーバーの IP アドレス
192.168.X.2 00-XX-XX-XX-XX-XX … Wi-Fi のアクセスポイント
192.168.X.10 b8-27-eb-XX-XX-XX … Raspberry Pi の現在の IPアドレスと MAC アドレス
★ 「インターネット アドレス」は、ローカルネットワークの IP アドレスのことです。
Windows ではこのような表現となっています。ローカルネットワークに接続された各機器の IP アドレスが列挙されます。
この IPアドレスは、ネットワーク上では固有の値となっていますが、必ずしも常にハードウェアに1対1で対応するものではありません。電源の再投入などにより、また、ローカルネットワークに接続する機器の台数や接続状態などにより、変化しうるものです。
★ 「物理アドレス」は、MAC アドレスのことです。機器固有の文字列となっています。
MAC アドレス: Media Access Control Address
MAC アドレスは、ネットワーク機器の仕様として、ハードウェアに1対1で対応するように与えられた識別番号、と理解すればよいと思います。IP アドレスはネットワークに接続するたびに動いてしまう(変化しうる)のに対し、MAC アドレスは機器ごとに固定されています。
★ ”b8-27-…” となっているものは、Raspberry Pi の MAC アドレスです。
他に、Raspberry Pi の基板に対応して “dc-a6-…”、”e4-5f-…” となっている場合もあります。これらの文字列があれば、Raspberry Pi だと考えてよいと思います。
★ 加えて、Windows 上で arp -a コマンドを実行することで、Raspberry Pi がネットワークに正常に接続できているかどうかを確認しておきます。
Raspberry Pi 側の確認
つぎに、Raspberry Pi 側で確認をします。
⑤ Raspberry Pi の GUI 画面で、タスクバー右上の Wi-Fi のマーク上にマウスを合わせ、表示を確認します。
表示の例
eth0: Link is down
wlan0: Associated with XXXXXXXXX
wlan0: Configured 192.168.X.X/24 … ローカルネットワーク内での現在の Raspberry Pi の IP アドレス
★ 上記は、イーサーネットは接続しておらず、Wi-Fi (wlan0) で接続している状態での表示の例です。
★ ここで、Raspberry Pi の IP アドレスは、wlan0 として表示されており、④で Windows 側で確認した IP アドレスと一致しています。
★ この IP アドレスは、Raspbery Pi が起動してネットワークに加わるとき、②のデフォルトゲートウェイ/DHCP サーバーによって、自動的に/動的に振られています。
したがって、Raspbery Pi を再起動すると、値がダイナミックに変わります。(そこで、今回、ローカルネットワーク内の IP アドレスを固定したい、ということです。)
★ ”/24″ の 24 の数値は、アクセスしているネットワーク ②のサブネットマスクに対応しています。
つまり、②では、サブネットマスクは “255.255.255.0” となっていました。”255.255.255.0″ を2進数に直すと、”11111111 11111111 11111111 00000000″ となります。
前から、”1″ が並んでいる桁数は、8桁×3組 = 24桁となっています。このサブネットマスクの桁数に対応した数値 “/24” が表示されるようになっています。
⑥ Raspberry Pi の画面の左上から、ターミナル(LXTerminal)を起動し、以下を入力します。
$ ifconfig
⑦ 今回、Wi-Fi で接続しているので、wlan0 の部分を確認します。
もし、LAN ケーブルで接続している場合は eth0: の部分を確認します。
表示の例
wlan0: (LAN ケーブルで接続している場合は eth0: の部分を確認する。)
inet 192.168.X.X … Raspberry Pi の現在の IP アドレス
netmask 255.255.255.0
ether b8:27:eb:XX:XX:XX … Raspberry Pi の MAC アドレス
★ Raspberry Pi の IP アドレスと MAC アドレスは、④で確認したものと一致しています。対応していることがわかります。
固定 IP アドレスを設定する
⑧ つぎに、IPアドレスを固定するため、Raspberry Pi 上で以下を実行し、設定ファイルを編集モードにします。
$ sudo vi /etc/dhcpcd.conf
⑨ カーソルをファイルの末尾に移動させ、以下の設定例を参考に、ファイルの末尾に追記します。
設定例
# 2021/09/XX
interface wlan0
static ip_address=192.168.X.32/24
static routers=192.168.X.X
static domain_name_servers=192.168.X.X
★ vi エディタに不慣れな場合は、この画面で「↓」キーで末尾行まで行き、キーボードの「o」をタイプすることで編集モードに入ります。この編集モードの状態で、上記を参考に入力をします。編集モードから抜ける場合は、[esc]キーを押します。その後、vi エディタを終える場合は、”:” キー を押し、保存しない場合は “q!”、保存する場合は “wq” (write & quit) と入力し、[enter] を押すことで、vi エディタを終了できます。vi エディタの使い方については、下記の関連リンクでまとめていますので、参照してください。
★ ”# … ” とした行は、単なるコメントです。後日、設定をもとに戻すことができるようにするための記録です。不要であれば、記載する必要はありません。
★ ここで、static ip_address の行が、Raspberry Pi の固定IP アドレスを指定している行です。
Raspberry Pi の固定IPアドレスとして、使いたい IP アドレスをここで指定してください。(例: “192.168.X.32″ )
ここで、サブネットマスク部分(前半の3つの数値 192.168.X )は、ローカルネットワーク内で、他の機器のサブネットマスクと一致させる必要があります。そこで、上記の事例では、最後の桁の部分で数値(”32” )を決め、設定します。
また、固定 IP アドレスの数値(”32″の数値) は、あまり小さな値を使うと、先にローカルネットワークにつながっている機器とバッティングする可能性があります。
そこで、経験的には、他の機器とはまず重複しないであろう、ある程度大きな値としておくことが望ましいです。
★ ”/24″ はサブネットマスクです。②で、設定されている DHCP サーバー側ですでに決まっていますので、表記を合わせてください。
なお、②と⑤で、”255.255.255.0″、”/24″ 等の数値が違っていれば、対応するように修正してください。たとえば、”255.255.0.0″ であれば “/16” となります。
★ 上記の “static routers” が②の DHCP サーバーに対応しています。②で確認した IP アドレスに一致させるように記載してください。参照するルーターの IP アドレスを指定する、ということになります。
★ domain_name_server も同様に、DNSサーバーのところで確認した IP アドレスに一致させるように記載してください。
⑩ 追記が終わったら、ファイルを保存して vi を終了します。
[esc] → ":" → "wq" → [enter]
⑪ 設定を反映させるため、Raspberry Pi をいったんシャットダウンして、再度、起動します。(ローカルネットワークに入り直します。)
$ sudo shutdown -h now
固定IPアドレスが設定されていることを確認する
⑫ Raspberry Pi を再起動後(ネットワークに接続後)、以下を確認してください。
Raspberry Pi の画面右上の Wi-Fi アイコンにマウスカーソルを合わせる。
→ ⑨で書き込んだ設定が反映されている。
例: wlan0: Configured 192.168.X.32/24
⑬ Windows パソコン側のコマンドプロンプトで以下を実行し、ネットワーク上の Raspberry Pi の IP アドレスが修正されていることを確認してください。
> arp -a
→ 192.168.X.32 b8-27-eb-XX-XX-XX 等と表示されると思います。
上記の⑫、⑬で、⑨で設定した固定IPアドレス(192.168.X.32)が反映されていれば、成功です!
★ なお、設定したIPアドレスがすでに他の機器に使われてしまっているなどの場合、設定がうまく反映されないことがあります。この場合、表示される Raspberry Pi の IPアドレスは、設定した固定IPアドレスとは異なるものとなると思います。
IPアドレスが他の機器と重複している場合は、設定するIPアドレスを重複しないものに修正する必要があります。
設定に何ら問題がない場合は、経験的に、Raspberry Pi を再度(何度か)シャットダウンして起動してみると、設定した固定IPアドレスが反映されることがあります。
固定IPアドレスの活用例
ローカルネットワーク内でのファイルサーバー、Web サーバーとして活用する
例えば、Raspberry Pi に USB ハードディスク等を接続し、共有フォルダとして設定しておくことで、自宅のローカルネットワーク上でのファイルサーバーとして活用できます。
また、Raspberry Pi 側で Web サーバーを自動起動等すれば、自宅のネットワーク上で自作の Webアプリが使えることになります。
例えば、Python などで便利ツールを作成したとき、Raspberry Pi に移植して、他の Windows パソコンなどからアクセスすることで、ローカルネットワーク内で独自の Web アプリを利用できることになります。
Wi-Fi 接続を安定化させる
Raspberry Pi が Wi-Fi にうまく接続できなくなったとき、1つの要因として、複数の機器でIPアドレスが重複してしまい、ネットワークに入ることができなかった可能性があります。例えば、ローカルネットワークに接続する機器が増えてきたとき、失敗する可能性が高まると考えられます。
そこで、IP アドレスを固定化すると、ネットワークの接続が安定化することがあります。
Wi-Fi 接続がうまくできないとき
なお、以前はできていたはずの Wi-Fi 接続がうまくできなくなったとき、経験上、対策としては以下があります。
(a) IP アドレスを固定化してみる。重複することのない IP アドレスを固定 IP アドレスとして設定する。
デフォルトの状態では、IP アドレスは可変となっています。経験的に IP アドレスは小さな値から接続を試みているようです。推測ですが、この場合、IPアドレスの重複が起こりやすいのではないかと思います。
そこで、重複する可能性のない値で IP アドレスを固定化することで、IP アドレスがバッティングする可能性をなくすということです。
(b) Raspberry Pi の起動後、数分ほど待ってみる。
Raspberry Pi を起動すると、直後にネットワークに接続にいくと思います。このとき、接続に失敗すると、数分後(5分ほど?)に再度ネットワークへの接続を試みるようです。その時間を待ってみます。最初は接続できていなくても、そのまま使い続けていたところ、自動的に接続できていたことがあります。
(c) Wi-Fi ルーター側を再起動する。また、別のパソコンからネットワーク接続を確認してみる(前述の③、④)。
(d) Wi-Fi ルーターから電波が届きやすい場所に Raspberry Pi の位置を変える。
Raspberry Pi 周辺のケーブル類、遮蔽物、金属でできたものを片づける。
Raspberry Pi は小型で動かしやすいので、つい、電波の届きにくい場所に置いてしまいやすいです。また、金属類/プラスチック類が近くにあると Wi-Fi の電波を通さない/通しにくいので、ラズパイからアクセスポイントを結ぶ直線近辺にあるモノを片づけるようにします。
まとめ
Raspberry Pi で固定 IP アドレスを設定して接続する手順についてまとめました。
また、Windows や Linux が混在するときの用語の対応についてもまとめました。
Windows と Linux を併用してみると、ネットワーク関連の理解も深まります。OSが異なっていても、ネットワーク関連用語程度は統一して欲しいですね。。
なお、固定 IP アドレスの応用として、ローカルネットワーク内で Raspberry Pi を Web サーバー化する方法などについてもまとめています。もし関心があるようでしたら、以下の関連リンクも参照してみてください。
関連リンク
・ vi コマンドのまとめ 【Linux】
・ Raspberry Pi にリモートデスクトップで接続する
・ Raspberry Pi でローカルWebサーバー 【Python 活用】
・ Raspberry Pi の Wi-Fi がつながりにくくなったとき