あっきぃ日誌

鉄道ブログのような技術系ブログのようななにか

ラズピッピで雑L2スイッチ

Raspberry Pi Advent Calendar 2020の7日目です。仕事で作った雑L2スイッチのはなし。

adventar.org

お仕事の検証でVLANを切ったネットワーク環境を作る必要があったので手持ちのNetgearのスイッチで作業していたのですが、スイッチをお仕事で貸し出すことになりつつも、手元の検証環境はもうちょい使いたいという感じになりました。

ここで、PoEも使えるスイッチも買っちゃおうかな☆というオタク的なことも考えたのですが、利用頻度は高くないハズなので、散財は回避しました。

手元にUSB-LANアダプターがたくさん転がっていたので、ラズピッピで作ることにしました。性能は求めないので適当なPi 1B+を引っ張り出しました。そしてLANアダプターをUSBポートに全部挿して使います。見た目が……キモいかもね……?

f:id:Akkiesoft:20201205014829j:plain

導入

USB-LANアダプタは挿した順とか再起動でデバイス番号が変わってしまうので、udevで適当に固定します。70-persistent-net.rules、CentOSかな?**:**:**:**:**:**の部分はそれぞれのUSB-LANアダプタのMACアドレスを入力します。また、アダプタに付箋でethいくつかにしたかを貼ると良いです。

$ sudo vi /etc/udev/rules.d/70-persistent-net.rules

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="**:**:**:**:**:**", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="**:**:**:**:**:**", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="**:**:**:**:**:**", ATTR{type}=="1", KERNEL=="eth*", NAME="eth3"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="**:**:**:**:**:**", ATTR{type}=="1", KERNEL=="eth*", NAME="eth4"

次にネットワーク周りを整備します。dhcpcd5を葬り去って、ブリッジとvlan周りを導入します。

$ sudo apt remove dhcpcd5
$ sudo apt install bridge-utils vlan

スイッチ設定

dhcpcd5を葬り去ると/etc/network/interfacesが使えるようになるので、あとはここにブリッジ設定とかVLANをもりもり書いていきます。

まずはVLANなしのネットワークブリッジ。Untaggedですね。

# オンボード
auto eth0
iface eth0 inet manual
# USB-LAN
auto eth1
iface eth1 inet manual
auto eth2
iface eth2 inet manual
auto eth3
iface eth3 inet manual
auto eth4
iface eth4 inet manual

auto br1
iface br1 inet dhcp
  bridge_ports eth0 eth1 eth2 eth3 eth4

VLANの設定は適宜こんな感じで。必要なポートぶんだけifaceを設定して、ブリッジでつなぐだけ。

auto eth1.10
iface eth1.10 inet manual
auto eth2.10
iface eth2.10 inet manual

auto br10
iface br10 inet manual
  bridge_ports eth1.10 eth2.10

設定の反映は雑にOSを再起動で対応します。

結果

普通に5ポートのVLANが切れるL2スイッチになりました。見た目さえ気にしなければですが、ちょっとVLAN切りたいときにはこれで良さそうです。