VLAN についての記事ですが、もちろん、ポートベースVLAN やタグVLAN とかの説明は、ちょっと検索すれば鬼のように見つかるので、その辺の話ではなく、デフォルトVLAN を絡めて、実践的な運用について書いてみます。
LANケーブルを流れている IPパケットを直接見ても、そのパケットがどの VLAN に所属しているかはわからないって知ってました? え?そんな馬鹿な… と思うでしょうが、そもそもタグVLAN を使ってなければ(ポートベースVLAN)、パケットには VLAN 情報はありませんし、仮にIEEE802.1Q 規格に基づいてタグが設定されてたとしても、そのパケットがそのタグが所属する VLAN に流れる(論理的に接続されている)かどうかは、実はパケットだけ見てもわからないのです。
ポートベースVLAN やタグVLAN といった用語や内容については、ネットワーク屋さんであれば誰でも知っていると思いますが、実はデフォルトVLAN についての理解がないと、この二種類の VLAN は全く別物で、同じ物理ポートには、共存できないと思ってたりします。実を言えば、昔の私もそうでした。
つまり、接続されているスイッチの設定を詳細に読み込まないと、キャプチャーしたパケットだけを見ていても L2 のトラブルシューティングは難しいという事です。
例えば、VLAN10 VLAN11 VLAN12の三つの VLAN があったとします。
L3に接続されたL2へこのVLANをトランクで渡す場合、
!
interface GigabitEthernet1/0/48
switchport trunk allowed vlan 10-12
switchport mode trunk
!
こんな感じの設定になると思います。
ここで、L3 と L2 どちらも管理用IPアドレスは、デフォルトVLAN である VLAN1 に設定してあるとして、L3 から L2 の管理用IPアドレスへ ping を打つとどうなるでしょう? 実際にやってみると解るのですが、ちゃんと ping に応答があります。
あれ? VLAN1 は trunk で渡してないのに何故?
実は上記の設定をもっと正確に書くと、次の様になります。
!
interface GigabitEthernet1/0/48
switchport trunk native vlan 1
switchport trunk allowed vlan 10-12
switchport mode trunk
!
trunkポートは原則タグ付きのパケットを扱いますが、もしタグが付いていないパケットが到着したらどのように扱うのか(どの VLAN に所属させるのか)を設定するのを、native vlan で記述します。
別の見方(書き方)をすると、trunkポート(Ciscoとアライド用語)と呼んでいるポートは、タグVLAN の為のポートであると同時に native vlan で指定された VLAN ID によるポートベースVLAN のポートでもあるのです。
上記、設定例では用語として出てきませんが、別の機種や廉価版のL2スイッチ等の設定で見かける PVID(Port VLAN ID)とは、まさしく unTAG(タグが付いていない)パケットをどの VLAN に流すかを指定しているパラメータで、実はどのスイッチも、ポートベースVLAN が基本で、それに加えてタグVLAN をサポートしていると考えると、解りやすいと思います。
!
interface GigabitEthernet1/0/48
switchport trunk allowed vlan 10-12
switchport mode trunk
!
この設定では PVID は 1 となります。
!
interface GigabitEthernet1/0/1
switchport access vlan 11
switchport mode access
!
これは PVID が 11 となります。
まとめると、trunkポートに native vlan の設定がなければ、デフォルトVLAN が PVID としてセットされるので、接続先の L2スイッチ等が、Cisco系でなければ、trunkポートの設定で PVID を 1 にセットする必要があります。
最後になりますが、trunkポートに設定する VLAN ID にデフォルトVLAN を含めた場合、どのような挙動になるのか
!
interface GigabitEthernet1/0/48
switchport trunk allowed vlan 1,10-12
switchport mode trunk
!
これは、デフォルトVLAN に設定されているポートに、そのデフォルトVLAN と同じ VLAN ID を持ったタグ付きパケットの処理になります。ここはメーカーによって実装が異なりますが、タグを外してデフォルトVLAN へ流すのが一般的なようです。
別な例として
!
interface GigabitEthernet1/0/48
switchport trunk allowed vlan 10-12
switchport mode trunk
!
このような設定がすでにされているとして、ここに switchport trunk native vlan 10 を設定すると、
!
interface GigabitEthernet1/0/48
switchport trunk native vlan 10
switchport trunk allowed vlan 11-12
switchport mode trunk
!
このように trunkポートの設定から vlan 10 が外れるのがわかります。
言い換えると、VLAN 10 はポートベースVLAN に変化したという意味になります。