RaspberryPiでスイッチ配下をブロードバンドルーターに繋げた
スイッチ配下のホストを擬似的にWi-Fiルーターのセグメントとして見えるようにしました。 使ったのは Raspberry Pi 4 モデル B です。はじめは Raspberry Pi 3 モデルB+ や VirtualBox上のVyOSで検証してました。
作った構成はこちら。
一通りの設定をmasu-mi/ansible_playbook.raspi_bridge-segment-overlappingにまとめてます。
設定項目
- ネットワークインタフェースのプロミスキャストモード有効化: インタフェース設定
- IPフォワーディングの有効化: カーネルパラメタ
- Proxy ARP利用: カーネルパラメタ
- mDNSのリフレクターを有効化: avahi
- dhcpd起動とIP割り振り詳細: isc-dhcp-server
- 有線LANでstatic IPを割り当てる: isc-dhcp-client
ネットワーク設定ツールの選択
ネットワークの設定に選択したのはifupdownです。とても古典的。 NetworkManager はデスクトップ環境が中心ということで外しました。
そしてsystemd-networkdの設定ファイルでdhcpdの挙動を細かく設定できませんでした。 特定MACアドレスに割り当てるIPを固定したかった。
そこでisc-dhcp-serverを使うことにしました。 他の設定で使うことも考えましたが、衝突させたくなくsystemd-networkdのインストールを避けることにしました。結局 ifupdown でプロミスキャストやカーネルパラメタなどを設定しています。 また netplan は systemd-networkd, NetworkManager を簡単に扱えるトランスレータみたいなものなので採用しませんでした。
変な設定
ほとんどは適切なツールで適切な設定をすれば問題がなかった。
isc-dhcp-serverの起動タイミングだけうまい設定が作れなかった。
ネットワークインタフェースが DOWN だと起動に失敗してしまうので systemd の override.conf に[Unit]
ディレクティブを追加して実行順序を制御しようと試みたのですが、前ステップの実行開始ですぐに動き始めてしまい上手く起動できませんでした。
結局、ExecStartPre
に sleep 10
を挟むという荒業を使っています。