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 でプロミスキャストやカーネルパラメタなどを設定しています。 また netplansystemd-networkd, NetworkManager を簡単に扱えるトランスレータみたいなものなので採用しませんでした。

変な設定

ほとんどは適切なツールで適切な設定をすれば問題がなかった。 isc-dhcp-serverの起動タイミングだけうまい設定が作れなかった。 ネットワークインタフェースが DOWN だと起動に失敗してしまうので systemdoverride.conf[Unit] ディレクティブを追加して実行順序を制御しようと試みたのですが、前ステップの実行開始ですぐに動き始めてしまい上手く起動できませんでした。

結局、ExecStartPresleep 10 を挟むという荒業を使っています。

comments powered by Disqus