bookworm(Debian12)にバージョンが上がって、ネットワークがNetworkManagerに変わりました。Raspberry Piをサーバ専用で使用する時、使用しないネットワークを無効化する方法を説明します。
準備
現在のネットワークの状態は、赤文字の通りwifiとIPv6が有効な状態となっていますので、無効化します。
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether b8:27:eb:20:91:fa brd ff:ff:ff:ff:ff:ff
inet 192.168.100.101/24 brd 192.168.100.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::908a:d1c8:eb49:ac93/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
link/ether b8:27:eb:75:c4:af brd ff:ff:ff:ff:ff:ff
NetworkManagerの状態は、下記の通りです。
$ nmcli
eth0: connected to eth0
"Microchip 7800"
ethernet (lan78xx), B8:27:EB:20:91:FA, hw, mtu 1500
ip4 default
inet4 192.168.100.100/24
route4 192.168.100.0/24 metric 100
route4 default via 192.168.100.1 metric 100
inet6 fe80::908a:d1c8:eb49:ac93/64
route6 fe80::/64 metric 1024
lo: connected (externally) to lo
"lo"
loopback (unknown), 00:00:00:00:00:00, sw, mtu 65536
inet4 127.0.0.1/8
inet6 ::1/128
wlan0: disconnected
"Broadcom BCM43438 combo and Bluetooth Low Energy"
wifi (brcmfmac), B8:27:EB:75:C4:AF, hw, mtu 1500
p2p-dev-wlan0: disconnected
"p2p-dev-wlan0"
wifi-p2p, hw
DNS configuration:
servers: 192.168.100.1 8.8.8.8
interface: eth0
Use "nmcli device show" to get complete information about known devices and
"nmcli connection show" to get an overview on active connection profiles.
Consult nmcli(1) and nmcli-examples(7) manual pages for complete usage details.
NetworkManagerを使用するので簡単にオペレーションができる様コネクション名を変更します。下記記事を参考に変更してください。
wi-fiの無効化
サーバにwifiは不要なので、NetworkManagerからwifiを無効化します。
$ sudo nmcli radio
WIFI-HW WIFI WWAN-HW WWAN
enabled enabled missing enabled
現在wifiおよびwwanが有効化されているので、無効化します。
$ sudo nmcli radio wifi off
$ sudo nmcli radio wwan off
下記の通り無効化されました。
$ sudo nmcli radio
WIFI-HW WIFI WWAN-HW WWAN
enabled disabled missing disabled
wifiのサービスおよびハードを無効化
wifiのサービスを停止します。
$ sudo systemctl stop wpa_supplicant.service
$ sudo systemctl disable wpa_supplicant.service
Removed "/etc/systemd/system/multi-user.target.wants/wpa_supplicant.service".
Removed "/etc/systemd/system/dbus-fi.w1.wpa_supplicant1.service".
一行目はサービスの停止、二行目は再起動時に自動的に起動されないように設定します。
ハードウェア的にwifiは生きているので無効化します。
$ sudo vi /boot/firmware/config.txt
# For more options and information see
# http://rptl.io/configtxt
# Some settings may impact device functionality. See link above for details
# Uncomment some or all of these to enable the optional hardware interfaces
#dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on
# Enable audio (loads snd_bcm2835)
dtparam=audio=on
# Additional overlays and parameters are documented
# /boot/firmware/overlays/README
# Automatically load overlays for detected cameras
camera_auto_detect=1
# Automatically load overlays for detected DSI displays
display_auto_detect=1
# Automatically load initramfs files, if found
auto_initramfs=1
# Enable DRM VC4 V3D driver
dtoverlay=vc4-kms-v3d
max_framebuffers=2
# Don't have the firmware create an initial video= setting in cmdline.txt.
# Use the kernel's default instead.
disable_fw_kms_setup=1
# Run in 64-bit mode
arm_64bit=1
# Disable compensation for displays with overscan
disable_overscan=1
# Run as fast as firmware / board allows
arm_boost=1
dtoverlay=disable-wifi
[cm4]
# Enable host mode on the 2711 built-in XHCI USB controller.
# This line should be removed if the legacy DWC2 controller is required
# (e.g. for USB device mode) or if USB support is not required.
otg_mode=1
[all]
赤文字の行を追加して保存します。
この設定は再起動後に有効になります。
IPv6の無効化
自宅のサーバにIPv6は不要なので、NetworkManagerからIPv6を無効化します。
$ nmcli -f ipv6 connection show eth0
ipv6.method: auto
ipv6.dns: --
ipv6.dns-search: --
ipv6.dns-options: --
ipv6.dns-priority: 0
ipv6.addresses: --
ipv6.gateway: --
ipv6.routes: --
ipv6.route-metric: -1
ipv6.route-table: 0 (unspec)
ipv6.routing-rules: --
ipv6.replace-local-rule: -1 (default)
ipv6.ignore-auto-routes: no
ipv6.ignore-auto-dns: no
ipv6.never-default: no
ipv6.may-fail: yes
ipv6.required-timeout: -1 (default)
ipv6.ip6-privacy: -1 (unknown)
ipv6.addr-gen-mode: default
ipv6.ra-timeout: 0 (default)
ipv6.mtu: auto
ipv6.dhcp-duid: --
ipv6.dhcp-iaid: --
ipv6.dhcp-timeout: 0 (default)
ipv6.dhcp-send-hostname: yes
ipv6.dhcp-hostname: --
ipv6.dhcp-hostname-flags: 0x0 (none)
ipv6.auto-route-ext-gw: -1 (default)
ipv6.token: --
赤文字の通り、autoが設定されていて、DHCPでネットワークが動いています。
$ sudo nmcli connection modify eth0 ipv6.method disabled
$ nmcli -f ipv6 connection show eth0
ipv6.method: disabled
ipv6.dns: --
ipv6.dns-search: --
ipv6.dns-options: --
ipv6.dns-priority: 0
ipv6.addresses: --
ipv6.gateway: --
ipv6.routes: --
ipv6.route-metric: -1
ipv6.route-table: 0 (unspec)
ipv6.routing-rules: --
ipv6.replace-local-rule: -1 (default)
ipv6.ignore-auto-routes: no
ipv6.ignore-auto-dns: no
ipv6.never-default: no
ipv6.may-fail: yes
ipv6.required-timeout: -1 (default)
ipv6.ip6-privacy: -1 (unknown)
ipv6.addr-gen-mode: default
ipv6.ra-timeout: 0 (default)
ipv6.mtu: auto
ipv6.dhcp-duid: --
ipv6.dhcp-iaid: --
ipv6.dhcp-timeout: 0 (default)
ipv6.dhcp-send-hostname: yes
ipv6.dhcp-hostname: --
ipv6.dhcp-hostname-flags: 0x0 (none)
ipv6.auto-route-ext-gw: -1 (default)
ipv6.token: --
IPv6の無効化(カーネル編)
bookworm(Debian12)では、カーネルがIPv6のモジュールをロードしているので無効化します。
$ sudo vi /boot/firmware/cmdline.txt
下記の通りrootwaitの前にipv6.disable=1を追加します。絶対に下記一行をコピーしないようにしてください。
console=serial0,115200 console=tty1 root=PARTUUID=b94234f0-02 rootfstype=ext4 fsck.repair=yes ipv6.disable=1 rootwait
行は必ず一行に書ききってください。スクロールバーを操作して確認ください。
改行を入れてはいけません。
再起動して確認
ネットワークの設定が終わったので、ここで再起動をして確認します。
$ sudo reboot
再起動後、下記コマンドで、IPv6が無効化(赤文字が表示されない事)されている事を確認します。
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether b8:27:eb:20:91:fa brd ff:ff:ff:ff:ff:ff
inet 192.168.100.100/24 brd 192.168.100.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
NetworkManagerからDEVICEの状況を確認すると、IPv6もwifiも無くなっています。
$ nmcli
eth0: connected to eth0
"Microchip 7800"
ethernet (lan78xx), B8:27:EB:20:91:FA, hw, mtu 1500
ip4 default
inet4 192.168.100.100/24
route4 192.168.100.0/24 metric 100
route4 default via 192.168.100.1 metric 100
lo: disconnected
"lo"
loopback (unknown), 00:00:00:00:00:00, sw, mtu 65536
DNS configuration:
servers: 192.168.100.1 8.8.8.8
interface: eth0
Use "nmcli device show" to get complete information about known devices and
"nmcli connection show" to get an overview on active connection profiles.
Consult nmcli(1) and nmcli-examples(7) manual pages for complete usage details.
wifiの状態は下記の通りで問題ありません。
$ sudo nmcli radio
WIFI-HW WIFI WWAN-HW WWAN
missing disabled missing disabled