気の向くままに辿るIT/ICT/IoT
システム開発

Debian bullseye/bookwormでネットワーク設定

ホーム前へ次へ
*BSD/PC-UNIX/Linuxって?

Debian bullseye/bookwormでネットワーク設定

Debian bullseye/bookwormでネットワーク設定

2023/06/25 => 2023/09/21 更新

 dynabook B45/DebianやRaspberry Pi 400/Raspberry Pi OS bullseyeで有線LANでは問題ないながら、いつからか無線LANのみだとpingも通らず、ssh接続もネット接続もできなくなっていることに気づき対処した話。

 尚、有線も無線も同一ネットワークアドレス内のIPアドレスも配布されているのにです。

 そんな折り、タイムリーにもDebianメジャーバージョンがリリースされていたので比較のためにもと昨日、dynabook B45のDebian 11.7 bullseyeを12.0 bookwormにアップグレードした直後も同様でしたが、これも解決。

 結果、対処する前の状態としてNetworkManagerからイーサネットのON/OFFができないのは同様ながら、Raspberry Pi OS bullseyeでは、GUIのNetworkManagerのイーサネット部に[有線 管理対象外]という表示がある、他方、Debian bookwormには、この表示がないという違いだけでした。

前提

 自身の環境においては、bullseyeやbookworm何れのOS上にもKVM、LXD/LXC、Waydroid、VirtualBox等々をインストールしてあるからかifconfigやip aするとブリッジと思われるインタフェースがたくさんあります。

 この内、e*とeで始まる有線イーサネット、w*とwで始まる無線・Wi-Fiにおいて前者の代わりにブリッジ用インタフェースbr0を使う前提の話です。

 また、Wi-FiはDHCPによるIPアドレス自動配布ですが、有線LAN側のブリッジであるbr0については、固定IPで確認したこともあってDHCPでのIP自動配布は未確認です。

 IP固定については、ルーターで個別設定できるか、DHCP配布のアドレス範囲指定、DHCP配布の開始アドレスと総数を設定するなど環境に応じて予め設定しておく必要があります。

常々おかしいなと思っていた件

 eで始まるイーサネット、ブリッジbr0、何れのインタフェースにもIPアドレスが振られており、あれ?これって前者には振られちゃいけないんじゃ?とは思っていました。

 気づけば、/etc/network/interfaces.d以下にWi-Fi以外の設定ファイルが、また、/etc/dhcpcd.confの有効な設定が1つもない...、これが原因だよね...。

 そう言えば、既に、この事象に遭遇していて、ごにょごにょやってみてできず終いなまま、放置していた気がしなくもない...。

 が、修正後、正常にもどってみればブリッジ設定については、bullseyeとbookwormで次のように設定ファイルが異なる結果となりました。

  • bullseye: /etc/network/interfaces.d以下の有線・ブリッジファイル + /etc/dhcpcd.conf
  • bookworm: /etc/network/interfaces.d以下の有線・ブリッジファイル

 でも、bookwormでは、/etc/dhcpcd.confのみに集約されたという話もあったような...、もしかしてブリッジの場合は、/etc/network/interfaces(.d)になる!?

 Buster以来自身の中で混乱が混乱を呼び、Debianのネットワーク設定、何が正解かわからなくなってきました...。

途中

 対処している間に逆に無線がつながり、有線がつながらなくなったり、何れにせよ、外に対しては、google.co.jp等のIPv6のサイトは接続できるもyahoo.co.jp等のIPv4のサイトには接続できないという事象もあり、遠回りした感もあります。

 が、サイトを失念も「ブリッジと対象のインタフェース双方にIPアドレスが振られていることに起因してとある不具合が起き、まさかその解消で解決するとは意外だった」といった旨の情報を見かけ、おかげで、やはり、そこかと焦点が絞れた気がしました。

 ただ、修正後、bullseyeについては、確かにブリッジのネットワークインタフェースのみIPアドレスが振られ、ブリッジ対象のネットワークインタフェースにIPがは振られなくなりました。

 が、他方、修正後もbookwormについては、ブリッジもブリッジ対象のネットワークインタフェースにもIPアドレスが振られた状態で正常に機能していることもあり、気になりつつも後者にIPアドレスを振られないようにする設定については未確認です。

bullseyeにおけるネットワークファイル設定

 bullseyeについては、まず、/etc/network/interfaces.d以下にブリッジ設定ファイルを追加、/etc/dhcpcd.confを編集。

 尚、/etc/dhcpcd.confファイルがない場合、dhcpcd5パッケージが未インストールと思われるのでapt install。

 これらファイルでは有線LANの設定のみに留めますが、無線LANも使う場合、少なくとも妥当な/etc/wpa_supplicant/wpa_supplicant.confファイルがあるものとします。

debian:~$ sudo vi /etc/network/interfaces.d/eth0_br0
auto br0
iface br0 inet manual
bridge_ports eth0
bridge_stp off
bridge_maxwait 10
debian:~$

 /etc/network/interfaces.d/eth0_br0は、こんな感じ。

debian:~$ sudo vi /etc/dhcpcd.conf
# A sample configuration for dhcpcd.
# See dhcpcd.conf(5) for details.
 
# Allow users of this group to interact with dhcpcd via the control socket.
#controlgroup wheel
 
# Inform the DHCP server of our hostname for DDNS.
hostname
 
# Use the hardware address of the interface for the Client ID.
clientid
# or
# Use the same DUID + IAID as set in DHCPv6 for DHCPv4 ClientID as per RFC4361.
# Some non-RFC compliant DHCP servers do not reply with this set.
# In this case, comment out duid and enable clientid above.
#duid
 
# Persist interface configuration when dhcpcd exits.
persistent
 
# Rapid commit support.
# Safe to enable by default because it requires the equivalent option set
# on the server to actually work.
option rapid_commit
 
# A list of options to request from the DHCP server.
option domain_name_servers, domain_name, domain_search, host_name
option classless_static_routes
# Respect the network MTU. This is applied to DHCP routes.
option interface_mtu
 
# Most distributions have NTP support.
#option ntp_servers
 
# A ServerID is required by RFC2131.
require dhcp_server_identifier
 
# Generate SLAAC address using the Hardware Address of the interface
#slaac hwaddr
# OR generate Stable Private IPv6 Addresses based from the DUID
slaac private
 
# Example static IP configuration:
#interface eth0
#static ip_address=192.168.0.10/24
#static ip6_address=fd51:42f8:caae:d92e::ff/64
#static routers=192.168.0.1
#static domain_name_servers=192.168.0.1 8.8.8.8 fd51:42f8:caae:d92e::1
 
# It is possible to fall back to a static IP if DHCP fails:
# define static profile
#profile static_eth0
#static ip_address=192.168.1.23/24
#static routers=192.168.1.1
#static domain_name_servers=192.168.1.1
 
# fallback to static profile on eth0
#interface eth0
#fallback static_eth0
 
denyinterfaces eth0
 
interface br0
static ip_address=192.168.1.203/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1
debian:~$

 /etc/dhcpcd.confは、こんな感じ。

 当該ファイルの説明と共にある有効値は、極めて重要(bookwormには初めからあったかな?bullseyeからもってきたんだったかな?失念)。

bookwormにおけるネットワークファイル設定

 bookwormでのブリッジ設定については、/etc/network/interfaces.d以下のファイルのみ。

 これらファイルでは有線LANの設定のみに留めますが、無線LANも使う場合、少なくとも妥当な/etc/wpa_supplicant/wpa_supplicant.confファイルがあるものとします。

debian:~$ sudo vi /etc/network/interfaces.d/eth0_br0
auto br0
iface br0 inet static
address=192.168.1.203/24
network=192.168.1.0
netmask=255.255.255.0
broadcast=192.168.1.255
gateway=192.168.1.1
dns_name_servers=192.168.1.1
bridge_ports eth0
bridge_stp off
bridge_maxwait 10
debian:~$

 /etc/network/interfaces.d/eth0_br0は、こんな感じ。

NetworkManager.confの設定変更 bullseye/bookworm共通

 が、bullseyeもbookwormも、ここでマシンを再起動...してもダメでした...。

 これだけだとGUIのNetworkManager上においてイーサネットのON/OFFができなくなると同時にラズパイOS bullseyeの方はDebian bookwormにはない[有線 管理対象外]という表示もされます。

 また、何れもeth0など元のインタフェースにDHCPから配布されるIPアドレスを割り当てようとしながらできない状態に...。

 ただ、この時、sudo dhcpcd br0とすれば、dhcpcd.confで指定したIPアドレスがbr0に割り当てられ、初めてイーサネット接続が有効になる。

という状況になりました。

debian:~$ sudo vi /etc/NetworkManager/NetworkManager.conf
[main]
plugins=ifupdown,keyfile
 
[ifupdown]
#managed=false
managed=true
debian:~$ sudo systemctl restart NetworkManager
debian:~$

 そこで、とりあえず、GUIで有線LANのON/OFF切り替えをさせるべく、Debianの公式ドキュメントを求めて[networkmanager]と[not managed]や[unmanaged]で検索。

 結果たどり着いたNetworkManager - Debian WikiのWired Networks are Unmanaged/Enabling Interface Managementに答えがありました。

 そこには「Debian Squeeze以来、/etc/network/interfaces(や/etc/network/interfaces.d以下)に任意のインタフェースが定義された場合、NetworkMangerは管理しない」とあります。

 が、かろうじてSqueezeの次のコードネームwheezyあたりから使っている自身は知りませんでした。

 尤も歴代のデスクトップPCやノートPC、今や3B+に載せ替えたRaspberry Pi 2 Model BサーバRaspberry Pi 3 Model B+パソコンも移行したRaspberry Pi 400パソコンも基本、有線前提、Raspberry Pi/Julius/Open JTalkスマートスピーカー専用機は無線前提だったので有線/無線を切り替えることもなく、気づかなかっただけでしょうが。

 とは言え、後には、「それに加えて/etc/NetworkManager/NetworkManager.confの[ifupdown]でmanaged=falseになっている場合にNetworkManagerでは管理しない」に変わったようですが。

 ここに来て何か朧気な記憶が蘇りそうな雰囲気...と思ったら、自身のページDebian Buster 10.2で無線LANに苦戦・解決の備考でNetworkManagerと/etc/interfaces設定が排他であることについて書いていました...。

 さておき、これをmanaged=trueとした後、systemdのサービスファイルNetworkManager(bullseyeより以前はnetwork-managerだったっぽい)を再起動することで[有線 管理対象外]という表記もなくなり、GUIのNetworkManager上でもイーサネットのON/OFFや設定ができるようになりました。

dhcpcdコマンドの自動実行 bullseye/bookworm共通

debian:~$ sudo vi /etc/systemd/system/br0_ip_set.service
# /etc/systemd/system/br0_ip_set.service
[Unit]
Description=Set IP address for br0
Wants=network-online.target
After=network-online.target
 
[Service]
Type=oneshot
ExecStart=/sbin/dhcpcd br0
 
[Install]
WantedBy=multi-user.target
debian:~$ sudo pkill -f dhcpcd
debian:~$ sudo systemctl start br0_ip_set.service
debian:~$ sudo systemctl enable br0_ip_set.service
debian:~$

 続いて/etc/dhcpcd.confでの静的IP設定において、なぜか、sudo dhcpcd br0を実行しないと同ファイルの固定IP設定がなされない問題への対処。

 システム起動時、sudo dhcpcd br0を自動実行するために/etc/systemd/systemにサービスファイルを作成、登録することにしました。

 これにより、ようやく、eth0にはIPが振られることなく、br0に/etc/dhcpcd.confで設定したIPアドレスが割り当てられるようになりました。

 また、これらを正しく設定したことにより、有線LANだけでも、無線LANだけでもping、sshできるだけでなく、ネットにも接続できるようになりました。

 無線LANについては、これらファイルに何を指定するまでもなく、起動時に自動でONになり、NetworkManagerのオプションで自動起動をOFFにすることもできました。

 それにしても、このIP割当の追加作業が必要になるのは、なぜ...。

 ん?DHCPサーバによるIP割当のためのコマンドと思い込んでいましたが、もしかしてdhcpサーバの有無(動的IPや静的IP)に関わらず、IPを振る手段は、[dhcpcd ネットワークインタフェース]ってこと?

 Wheezy、Jessie辺りから使ってるのにBuster辺りから混乱中...、なかなか、理解できない...Debianのネットワーク...。

備考

 ちなみに[有線 管理対象外]への対処や対処の一部として[/etc/NetworkManager/conf.d/10-globally-managed-devices.conf]という空ファイルを作成...という情報もあったものの、bullseye以前の話だったのか、少なくとも今日時点では不要なようです。

 Debian bookwormでもRaspberry Pi OS bullseyeでも先の設定のみでできた後、ものは試しと空ファイルも作って再起動してみましたが、状況は何ら変わらなかったので削除しました。

LINK

ホーム前へ次へ