OpenWrtのVLANに関する備忘録

# 注意
この記事に書いている内容は合っているかもしれませんし、間違っているかもしれません。
間違ってたらご指摘ください。
`23.05.5`でやってますのでバージョン違いによる挙動差はご容赦ください。
当たり前ですが、設定が確定するまで絶対に適用してはいけません。

# 1. ブリッジを作ろう

まず初めに、VLANを構築したいポートをブリッジにします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3314743/3b8ab6a1-e896-4482-e0e8-c208d1441420.png)

このとき、イーサネットスイッチの下にスイッチポートがあるデバイスの場合は、イーサネットスイッチをブリッジに含めないで下さい。

:::note warn
ちゃんと動いてるので合ってるはずですがぶっちゃけわかりません。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3314743/bb7318f5-1ee5-0d95-2e1e-8b9fa0b61b35.png)

このようにイーサネットアダプタが直接存在する場合は、それらを選択するだけでOKです。

:::note info
めちゃくちゃ簡単にまとめると
"使いたいポートだけチェックすればOK!"
:::

:::note alert
まだ絶対に適用を押さないでください。
:::

# 2. ブリッジにVLANを割り当てよう

`ブリッジLANフィルタリング`タブを開き、`VLANフィルタリングを有効化`にチェックを入れます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3314743/9c06ad1b-8b02-a945-07a9-18cfbe3e2d15.png)

`追加`ボタンを押すと`VLAN ID`が1つずつインクリメントしたものが追加されていきます。

## VLAN ID

`VLAN ID`は1から4094までのお好みのIDを利用できます。
他の機器に伝播するIDとなるので、事前に利用するIDと目的を定めることを推奨します。

:::note info
ちょっと大きめの数字で決めておくと後から構成変更するときに楽かも!(10とか100とか)
:::


## ローカル

`ローカル`にチェックをいれると、OpenWrt内のデバイスとしてVLANが自動的に作成されます。
チェックを入れない場合、OpenWrt上のデバイスとしては利用できません。(VLAN処理のみ)

:::note info
基本的にはチェックを入れてOK!
:::

## VLAN設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3314743/9c52feb6-c7d5-38f1-753e-960cd6a023a2.png)

### Not Member
VLAN IDに対し、このポートはメンバーではない(パケットを転送しない)ことを意味します。
通常、デフォルト設定はこの`Not Member`が指定されています。

### Untagged
VLAN IDに対し、このポートをアクセスポート(ポート自体をVLANに紐づける)として定義します。
クライアントがUntaggedなポートへ通信すると、そのポートに紐づいたVLANへ通信が転送されます。
また、OpenWrtがUntaggedなポートへ送出するとき、パケットにVLAN IDは付与されません。
タグVLANに対応しない機器(例えば一般的なゲーム機やIoT機器など)を接続したり、ユーザーにVLANを意識させずに使用させるときに使われます。

:::note info
一般的な機器を繋ぐ場合はこれでOK!
:::

### Tagged
VLAN IDに対し、このポートをトランクポート(VLAN IDを判定できるポート)として定義します。
Taggedなポートに対して通信すると、パケットに設定されたVLAN IDとタグ設定に紐づいたVLANへ通信が転送されます。
OpenWrtがTaggedなポートへ送出するとき、パケットにVLAN IDが付与されます。
タグVLANに対応する機器同士で複数のネットワークを1つのポートでやりとりする際に使われます。

### Is Primary VLAN
VLAN IDに対し、このポートにTaggedのみ設定されており、VLAN IDがパケットに付与されていない場合、これが定義されたVLANへ通信が転送されます。
CatalystでいうネイティブVLANに当たります。



### (おまけ)TaggedとUntaggedを共存させるには？

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3314743/9c06ad1b-8b02-a945-07a9-18cfbe3e2d15.png)

この画像では、eth0~2までをLAN(VLAN10)とゲスト回線(VLAN20)、eth3をWAN(VLAN1)としています。
eth0~2では`Untagged`と`Tagged`を同時に設定することで、

- `Untagged` = VLANタグなしパケットをLAN(VLAN10)として処理
- `Tagged` = VLANタグありパケットのうち、ゲスト回線(VLAN20)を処理

といった形で定義しています。
つけなくても大丈夫だと思いますが、念の為`Is Primary VLAN`も設定しています。

また、eth3では`Untagged`と`Is Primary VLAN`のみを設定し、VLAN 1へWANを流すようにしています。

:::note alert
まだ絶対に適用を押さないでください。
:::

# 3. VLANをインターフェイスに設定しよう

~~適切に設定できていれば、画像の通りVLANが作成されます。~~
まだデバイス一覧には出てきませんが、インターフェースなどで指定ができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3314743/5ca46782-dab3-67a6-6af3-9849ddb56cee.png)

インターフェースにVLANデバイスを設定しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3314743/a0d0b118-7c29-8d2f-4af0-7fcadbacd2f4.png)



一通り設定が終わったら、ここで`保存&適用`を実施します。
万が一設定に誤りがあり、通信できなくなった場合は90秒の待機時間の後にロールバックが自動的に実施されます。
失敗した場合は構成を見直してみてください。

# 最後に

今までVLANをまともに使ったことがなかったのですが、以外とシンプルですね。
~~一般家庭で必要かと言われたら微妙ですが…~~
固定IP+MAP-E回線で家庭内は固定IP、ゲストやIoT機器はファイアウォールガチガチにしてMAP-Eを通すみたいな感じの運用がいいかもしれませんね