RPi OS IPv4 静的設定
2024/05/26 22:06
対象は、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 系 | ネットワーク設定 | 備考 | |
---|---|---|---|
12 | bookworm | NetworkManager | |
11 | bullseye | dhcpcd |
$ 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