OpenWrt on Edgerouter-X の VLAN 設定備忘録です.
前回の記事で OpenWrt の Ubiquiti の Edgerouter-X への導入と VLAN の設定については注意が必要なことを記しました.
と言うことで,今回は VLAN の設定方法について備忘録を残しておきたいと思います.
VLAN 利用時の注意
OpenWrt の場合,WebGUI 画面で VLAN の設定を行うことができますが,
OpenWrt on ER-X の場合は WebGUI で VLAN の設定を「はじめては」ダメです.設定を適用した瞬間に全てのポートに接続できなくなります!
運が良ければ再起動すれば設定が巻き戻って再び接続できるようになりますが,そうでない場合は初期化するしかなくなります.なお,初期化の方法は,ピンで reset ボタンを10秒間押し続けるです.
設定方法1(bridge コマンドの導入)
まず,VLAN を設定するコマンドラインのツールである bridge コマンドを導入しなければなりません.導入方法は,
- System → Software とメニューをたどる
- Update lists ボタンをクリックし,ソフトのアップデート情報を更新する
- Filter に ip-bridge と入力する.
- ip-bridge パッケージをインストールする
の順です.その後 SSH で OpenWrt に接続すれば,
BusyBox v1.35.0 (2022-10-14 22:44:41 UTC) built-in shell (ash) _______ ________ __ | |.-----.-----.-----.| | | |.----.| |_ | - || _ | -__| || | | || _|| _| |_______|| __|_____|__|__||________||__| |____| |__| W I R E L E S S F R E E D O M ----------------------------------------------------- OpenWrt 22.03.2, r19803-9a599fee93 ----------------------------------------------------- root@erx1:~# briege -ash: briege: not found root@erx1:~# bridge Usage: bridge [ OPTIONS ] OBJECT { COMMAND | help } bridge [ -force ] -batch filename where OBJECT := { link | fdb | mdb | vlan | monitor } OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -o[neline] | -t[imestamp] | -n[etns] name | -c[ompressvlans] -color -p[retty] -j[son] } root@erx1:~#
のように bridge コマンドが使えるようになっているはずです.
VLAN の設定スクリプトの作成
VLAN の設定が起動時に行われるよう簡単なスクリプトを用意します.具体的には /etc/hotplug.d/iface 以下に 21-lan として以下のような内容のファイルを作成します.
root@erx1:~# vi /etc/hotplug.d/iface/21-lan #!/bin/sh [ $INTERFACE = lan -a $ACTION = ifup ] || exit 0 # enable VLAN filtering ip link set dev br-lan type bridge vlan_filtering 1 # clear out vlan 1 bridge v del dev eth1 vid 1 bridge v del dev eth2 vid 1 bridge v del dev eth3 vid 1 bridge v del dev eth4 vid 1 bridge v del dev br-lan self vid 1 # set vlans eth1 bridge v add dev eth1 vid 1 pvid untagged # set vlans eth2 bridge v add dev eth2 vid 100 pvid untagged # set vlans eth3 bridge v add dev eth3 vid 100 pvid untagged # set vlans eth4 bridge v add dev eth4 vid 1 bridge v add dev eth4 vid 100 # set vlans cpu port bridge v add dev br-lan self vid 1 bridge v add dev br-lan self vid 100 pvid untagged
OpenWrt on ER-X の場合,初期状態だと ポート 0 が WANで,ポート1から4がブリッジされてLANポートとなっています.上の設定は,その状態をたもったまま,
- まず全ての VLAN 設定を(念のため)削除する
- 各ポートごとの VLAN 設定を行う
- 最後に CPU ポート(OpenWrt とやり取りをするためのポート)の設定をする
です.コマンドの意味合いはまぁ見ての通りです.例えば eth4 だと,VLAN1 と VLAN100 の2つについてタグ付きで通信するって意味ですね.あと最後の CPU の部分は,OpenWrt に VLAN の通信をルーティングさせるための設定です.
なお,このままだと,ファームウェアのアップデート時にこのファイルが削除されてしまうようで,これを避けるには,/etc/sysupgrade.conf にこのファイルを指定しておけば良いようです.
root@erx1:~# cat /etc/sysupgrade.conf ## This file contains files and directories that should ## be preserved during an upgrade. # /etc/example.conf # /etc/openvpn/ /etc/hotplug.d/iface/21-lan
あとは再起動すれば VLAN のとりあえずの設定ができているはずです.実際 bridge コマンドを用いて以下のように現在の状態を確認することができます.
root@erx1:~# bridge vlan port vlan-id eth1 1 PVID Egress Untagged eth2 100 PVID Egress Untagged eth3 100 PVID Egress Untagged eth4 1 100 br-lan 1 100 PVID Egress Untagged
WebGUI を用いた VLAN の設定
次に WebGUI を用いて VLAN の設定を行います.上のスクリプトで VLAN の設定は起動時に行われるのですが,これだけだと /etc/config/network が伴わず,結果,その後のいろいろな設定を GUI で行えないからです.
WebGUI を用いた VLAN の設定は,
- メニューから Network → Interfaces を選択
- タブから Devices を選択
- br-lan の Configure を選択
- タブから Bridge VLAN filtering
を選択します.Enable VLAN Filtering にチェックを付け,上の起動時スクリプトで行った通りの設定をここでも行います.以下私の場合の例です(私は eth0 も bridge していますので少し上の設定とは違うものになっていることにご注意ください).
保存すれば System → Interfaces の Devices タブの Devices メニューに br-lan.1 や br-lan.100 などのインターフェースが出てきますし,/etc/config/network ファイルにも対応していろいろな設定が行われるはずです.
あとはこれらのインターフェースを使えば普通にいろいろできるはずです.
と言うことで,以上ですが,できればこんな面倒なことしなくても WebGUI で普通に VLAN 設定できると良いんですけどね.この方法だと VLAN を設定するたびに再起動しないとダメですし…….将来に期待したいと思います.
以上!