RPi OS IPv4 静的設定

2024/05/26 22:06 OS別::Linuxその他::技術情報
Raspberry Pi を利用したサーバの、初期に行うべき手順で IPv4 アドレスを固定します。
対象は、Raspbian GNU/Linux 12 (bookworm) になります。


IPv6 を有効化していると、ホームルータの NAT に関係なく、インターネットと直接接続できるようになります。
セキュリティ的に設定が面倒なのと、まだ IPv4 が中心なので IPv6 無効化と、静的 IP アドレス設定を行います。

事前準備

IPv6 設定 (無効化)

/etc/sysctl.conf に IPv6 の利用を停止する設定を追記します。
$ sudo cp -p /etc/sysctl.conf{,_$(date +%Y%m%d)}
$ sudo diff /etc/sysctl.conf{,_$(date +%Y%m%d)}
$ sudo vi /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
$ sudo diff /etc/sysctl.conf{,_$(date +%Y%m%d)}
61,62d60
< net.ipv6.conf.all.disable_ipv6 = 1
< net.ipv6.conf.default.disable_ipv6 = 1
$ sudo sysctl -p
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
$ ip a

IPv4 設定

ネットワーク設定方法確認

対象のバージョンを確認します。
Raspberry Pi OS が bookworm の場合は、NetworkManager を設定します。
【参考】ネットワーク設定パッケージ
Debian 系ネットワーク設定備考
12bookwormNetworkManager
11bullseyedhcpcd
これは 11 から 12 への変更点のひとつです。
$ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 12 (bookworm)"
NAME="Raspbian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

IPv4 アドレス設定(NetworkManager 版)

ここでは、Raspberry pi OS 12 (bookworm) 以降NetworkManager を利用した IP アドレスの設定を行います。
ネットワーク設定の確認
接続情報確認
まずは、DEVICE を確認します。
$ nmcli con show
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  0f3c983a-4e89-39f5-b433-aa43b0088c28  ethernet  eth0
$ nmcli device status
DEVICE         TYPE      STATE                   CONNECTION
eth0           ethernet  connected               Wired connection 1
lo             loopback  connected (externally)  lo
wlan0          wifi      disconnected            --
p2p-dev-wlan0  wifi-p2p  disconnected            --
NAME が 'Wired connection 1' のものが eth0 となっています。
デバイス情報確認
次に、デバイス毎の詳細情報を、ふむふむと確認しておきます。
$ nmcli device show
GENERAL.DEVICE:                         eth0
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         B8:27:EB:27:55:9C
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     Wired connection 1
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
WIRED-PROPERTIES.CARRIER:               on
IP4.ADDRESS[1]:                         192.168.1.198/24
IP4.GATEWAY:                            192.168.1.1
IP4.ROUTE[1]:                           dst = 192.168.1.0/24, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]:                           dst = 0.0.0.0/0, nh = 192.168.1.1, mt = 100
IP4.DNS[1]:                             192.168.1.1
IP4.SEARCHES[1]:                        flets-east.jp
IP4.SEARCHES[2]:                        iptvf.jp
IP6.GATEWAY:                            --
IP6.DNS[1]:                             2404:1a8:7f01:b::3
IP6.DNS[2]:                             2404:1a8:7f01:a::3
IP6.SEARCHES[1]:                        flets-east.jp
IP6.SEARCHES[2]:                        iptvf.jp

GENERAL.DEVICE:                         lo
GENERAL.TYPE:                           loopback
GENERAL.HWADDR:                         00:00:00:00:00:00
GENERAL.MTU:                            65536
GENERAL.STATE:                          100 (connected (externally))
GENERAL.CONNECTION:                     lo
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/1
IP4.ADDRESS[1]:                         127.0.0.1/8
IP4.GATEWAY:                            --
IP6.GATEWAY:                            --

GENERAL.DEVICE:                         wlan0
GENERAL.TYPE:                           wifi
GENERAL.HWADDR:                         B8:27:EB:72:00:C9
GENERAL.MTU:                            1500
GENERAL.STATE:                          30 (disconnected)
GENERAL.CONNECTION:                     --
GENERAL.CON-PATH:                       --
IP4.GATEWAY:                            --
IP6.GATEWAY:                            --

GENERAL.DEVICE:                         p2p-dev-wlan0
GENERAL.TYPE:                           wifi-p2p
GENERAL.HWADDR:                         (unknown)
GENERAL.MTU:                            0
GENERAL.STATE:                          30 (disconnected)
GENERAL.CONNECTION:                     --
GENERAL.CON-PATH:                       --
設定変更
接続名変更
これは行わなくてもいいのですが、毎回クォートで括らなければならない接続名(NAME)を 'Wired connection 1' から svnet へ変更しておきます。
逆に言うと、毎回クォートで括れば、設定変更の必要はありません。
$ sudo nmcli con mod 'Wired connection 1' connection.id svnet
$ nmcli con show
ネットワーク設定変更
次に、IP アドレスやルーティングの設定を変更します。

IP アドレスや設定情報は、適当に読み替えてください。
$ sudo nmcli con mod svnet ipv4.address "192.168.10.100/24"
$ sudo nmcli con mod svnet ipv4.gateway "192.168.10.1"
$ sudo nmcli con mod svnet ipv4.dns "192.168.10.1 192.168.10.10"
$ sudo nmcli con mod svnet ipv4.dns-priority 10 ipv6.dns-priority 20
$ sudo nmcli con mod svnet ipv4.dns-search "example.jp"
$ sudo nmcli con mod svnet ipv4.routes "192.168.10.0/24 192.168.10.1"
$ sudo nmcli con mod svnet ipv4.method "manual"
$ sudo nmcli con mod svnet ipv6.method "disabled"
$ sudo nmcli con up svnet
途中、IPv6 は無効にしているのに指定があるのはなぜかというと、IPv6 アドレスに対する名前解決の優先度が下げるためです。
いま接続しているセッションについては接続が切れないようですが、今後は新しい IP アドレスで接続する必要があります。
設定確認
ネットワーク設定を確認する。
$ ip a
$ nmcli connection show
設定反映確認
[反映確認 1] OS 再起動
ネットワーク設定が保存されていることを確認するにはいくつか方法がありますが、すべて一括で反映するには OS を再起動します。
$ sudo reboot
起動後は、設定した IP アドレスに対して Tera Term 等で接続してください。
[反映確認 2] サービス再起動
ネットワーク設定だけを反映したい場合は、対象サービスを再起動します。
$ systemctl status network.service
$ systemctl restart network.service
$ systemctl status network.service
後は、設定した IP アドレスに対して Tera Term 等で接続してください。

設定確認

IP アドレス
$ ip a
/etc/resolv.conf
$ cat /etc/resolv.conf
# Generated by resolvconf
domain example.jp
nameserver 192.168.10.10
nameserver 192.168.10.1
$ ping 192.168.10.1 -c 3