コンテンツにスキップ

Raspberry Pi に固定 IP を設定する

ネットワーク確認

Windows の場合、ipconfig /allでデフォルトゲートウェイとサブネットマスク、DHCP サーバーを確認できる。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
イーサネット アダプター イーサネット:

   接続固有の DNS サフィックス . . . . .:
   (省略)
   IPv4 アドレス . . . . . . . . . . . .: 192.168.11.4(優先)
   サブネット マスク . . . . . . . . . .: 255.255.255.0
   (省略)
   デフォルト ゲートウェイ . . . . . . .: xxxx::xxxx:xxxx:xxxx:xxxx%xx
                                          192.168.11.1
   DHCP サーバー . . . . . . . . . . . .: 192.168.11.1
   (省略)

サブネットマスク

サブネットマスクが255.255.255.0なので、 先頭の 24 ビット分はネットワークアドレス、残りの 8 ビットがホストアドレスとわかる。

CIDR 表記

IP アドレスとサブネットマスクの 2 つでネットワークアドレスとホストアドレスがわかるのだが、2 つも書くのはダルいので(多分) CIDR という表記もある。

名前 値の例 説明
IP アドレス 192.168.11.4 よく見るやつ。
サブネットマスク 255.255.255.0 IP アドレスのうち、ここまでがネットワークアドレスだと示すもの。
ネットワークアドレス 192.168.11.0 IP アドレスとサブネットマスクの AND を取った値。端末が異なっていても同一ネットワーク内であれば同じ値になる。
ホストアドレス 4 IP アドレスとサブネットマスクの AND を取ったときのあまり。同一ネットワーク内でユニークな値にする必要がある。
CIDR 表記による IP アドレス 192.168.11.4/24 左の IP アドレスのうち、左 24 ビットはネットワークアドレスであることを示している。

デフォルトゲートウェイ

デフォルトゲートウェイはルーター自身の IP アドレスである。 値が192.168.11.1なので、サブネットマスクと併せてネットワークアドレスは192.168.11とわかる。これがルーター内のネットワークのアドレスを表す。また1はルーター自身を表す。

ここまでで、IP を割り振りたい端末のアドレス(ホストアドレス)は192.168.11.XXXにする必要があることがわかる。(XXX: 2 ~ 254, 255 はブロードキャスト用のため割り当て不可)

Raspberry Pi の固定 IP の割り当て

以下コマンドで Wi-Fi の IP アドレス設定をする。

1
$ sudo nano /etc/NetworkManager/system-connections/preconfigured.nmconnection

書き換えるのは[ipv4]のところだけでよい。

preconfigured.nmconnection
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
[connection]
id=preconfigured
uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
type=wifi
[wifi]
mode=infrastructure
ssid=xxxxxxxx
hidden=false
[ipv4]
address1=192.168.11.10/24,192.168.11.1
dns=192.168.11.1;
method=manual
[ipv6]
addr-gen-mode=default
method=auto
[proxy]
[wifi-security]
key-mgmt=wpa-psk
psk=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

有線 LAN は以下の要領で設定する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$ nmcli connection show
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  ethernet  eth0
preconfigured       xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  wifi      wlan0
lo                  xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  loopback  lo
$ sudo nmcli connection modify "Wired connection 1" ipv4.addresses "192.168.11.4/24"
$ sudo cat /etc/NetworkManager/system-connections/Wired\ connection\ 1.nmconnection
[connection]
id=Wired connection 1
uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
type=ethernet
autoconnect-priority=-999
interface-name=eth0
timestamp=1703468836

[ethernet]

[ipv4]
address1=192.168.11.4/24,192.168.11.1
dns=192.168.11.1;
method=manual

[ipv6]
addr-gen-mode=default
method=auto

[proxy]

最後にsudo rebootする。

sudo nano /etc/dhcpcd.confで以下の設定を追記する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
interface eth0
static ip_address=192.168.11.5/24
static routers=192.168.11.1
static domain_name_servers=192.168.11.1
static domain_search=

interface wlan0
static ip_address=192.168.11.5/24
static routers=192.168.11.1
static domain_name_servers=192.168.11.1
static domain_search=

IP アドレスにある/24は CIDR 表記と呼ばれ、左のアドレスの 24 ビット分はネットワークアドレスであることを表している。

IP アドレスは 8 ビットごとに.で区切られているので、192.168.11はネットワークアドレスであることがわかる。またこれから先の値はホストアドレスであることがわかる。

最後にsudo rebootする。

IP アドレス変更後、SSH 接続できない

設定した IP を DHCP の端末が使用済みの可能性がある。

開発 PC やスマートフォンが IP アドレスを再起動してみる。