こんにちは。日々是発見が楽しみな西山です。
今日は「カッコつけて自宅ネットワークをタグVLANで組もうとしたけどあきらめた話」です。
ポートVLANとタグVLAN
VLANって知ってる人には当たり前、知らない人には混沌の世界なので、超ざっくりな説明をしておきます。
- 物理的にはつながっているネットワークをルーターやスイッチの機能で論理分割するのがVLAN
- ルーター・スイッチのポート単位で分割するのがポートVLAN
- パケットに「タグ」を付与し、同一ポートに複数のVLANを同居させられるのがタグVLAN
ポートVLANは物理ポートとVLANが一対一対応するので直感的に分かりやすいですが、VLAN構成が複雑なネットワークではスイッチのポートをむやみに消費してしまいます。スイッチとスイッチが離れている場合、VLANの数だけケーブルを這わせるのは現実的ではありません。
タグVLANでは「トランクポート」を設定すれば複数のVLANを他のスイッチにまとめて流すことができ、スイッチ間のカスケード接続が段違いにやりやすくなります。「スイッチの管理ポートは全てネイティブVLAN」みたいに組んで、配置場所にかかわらず管理を一元化することも可能です。
柔軟性の点でメリットが大きい一方、タグVLANの論理設計や設定の難易度は高く、設定を一つ間違えるだけでループ事故に至る危険もあります。
何でタグVLANやろうと思ったの
我が家ではインターネットとの接続に、YAMAHAの「RTX1300」を使っています。以前はRTX810や830も使ったことがあり、RTXシリーズのヘビーユーザーでもあります。
最新型のRTX1300ですが、本体スイッチポート(8個の1GBポート)の仕様に制約ができました。
https://www.rtpro.yamaha.co.jp/RT/docs/flexible-lan/
ざっくり言うと、旧モデルでポートVLANを作りたかったら、
# lan1...
# vlan port mapping lan1.1 vlan1
# vlan port mapping lan1.2 vlan1
# vlan port mapping lan1.3 vlan2
# vlan port mapping lan1.4 vlan2
# vlan port mapping lan1.5 vlan3
という風に書けていたのがダメになり、
# lan flexible-port lan1=1 lan2=2 lan3=3-5 lan4=6 lan5=7-8
# lan1...
# lan2...
# lan3...
# lan4...
# lan5...
というように、VLANではなく各ポートを別々のLANインターフェースとして定義しないとならなくなっのです。
コンフィグがごちゃごちゃする上、「lan flexible-port(LANインターフェースとポートの割り付け)」を変更するとルーターを再起動しないといけません。
動くものはちゃんと作れたものの、「これダサいコンフィグだなぁ……」と気に入らなかったので、この機会に今まで逃げていたタグVLANと向き合ってみるか! と思い、勉強を兼ねてタグVLAN化に取り組んでみました。
タイトルの通り結局は断念することになったのですが……。
タグVLANで大事故!(知らないって怖い)
先に結論を書いておきます。
タグVLANは1ポートに複数のVLANを同居させられるが、意味もなく同居させてはならない。
我が家では、以下のようなVLANを構成しています。
VLAN | RTXのインターフェース | 役割 |
1(タグなし・デフォルト) | LAN1 | ルーター、DNS、DHCP |
10 | LAN3 | 自分用のプライベートネットワーク |
20 | LAN4 | 会社PCをつなぐための、インターネットにしか抜けられないネットワーク |
これをタグ化しようとしました。
「お、会社PC(LAN4)のping通った。でもDHCP降ってこないしDNSも引けないな」
「DHCPとDNSがVLAN1だからか。じゃあこのポートにタグなしとタグ20が両方通るようにしてと」
この瞬間に何が起こったか。
- RTX1300のCPU使用率が高騰し100%に張り付きました。恐らく、端末とVLANインターフェース間でループを作ってしまいました。
- VLAN20の端末からのDHCP要求パケットがVLAN1と20の両方から飛んできて、DHCPサーバーが両方の応答パケットを出そうとし、宛先MACアドレスが同じなのでそれ以上動けなくなりました。
我が家ではちょっとしたこだわりで、DNSもDHCPも別に立てた仮想サーバーやラズパイが担っています。その場合はサーバー側にVLANインターフェースを追加し、VLAN1・10・20の各々に対し独立してパケットが行き来するようにしなければなりませんでした。
(DNSとDHCPをRTXルーターが担う、サンプル設定でよくある構成なら、多分こんなトラブルは出ないと思います)
適材適所
原因は分かったものの、これに沿った構成変更を実際にやるかどうか、です。
RTX1300のコンフィグはタグVLAN化でシンプルになりますが、一方でスイッチやサーバー側の構成がとても複雑になってしまいます(特にDHCPがエグくなる)。
また今回、スイッチのGUIをポチポチしていただけでパケットループを起こしてしまいました。もちろん誤設定する方が悪いのですが、視覚的に誤りや異常が分かりづらい状況で簡単にパケットループを作れてしまうのは怖いです。
「スイッチのWeb GUIでタグVLANを作るやり方」がメーカーごとにばらばらで、「トランクポート」の用語すら統一されてないのもしんどいポイントです。
冒頭にも書きましたが、タグVLANのメリットは構成の柔軟性、デメリットは設計の難しさとそれに付随する事故の危険性です。
手間とリスクをトータルで考えた結果、今回は我が家でタグVLANを導入するのは断念し、引き続き見通しのいいポートVLANで運用することに決めました。
今回の経験でタグVLANとはどういうものか理解が深まったので、またチャンスがあれば再挑戦したいところです。