タグ VLAN を使う場合はポートにトランクポート (trunk port) という設定を入れる必要があります。トランクポートではないポートはアクセスポート (access port) と呼びます。今回はこの 2 種類のポートを説明します。
アクセスポートとトランクポート
アクセスポートとは、VLAN 対応のスイッチで、1 つの VLAN のみ所属しているポートです。下記の図で言うと、端末が差さっている色付きのポートのことです。アクセスポートは常にタグが無い (untag と言います) 状態です。アクセスポートの接続をアクセスリンクと言います。
例えば gigabitEthernet 0/1 ポートに VLAN 10 を設定する場合、Cisco Catalyst であれば以下のようになります。
(config)# interface gigabitEthernet 0/1 (config-if)# switchport mode access (config-if)# switchport access vlan 10
一方、トランクポートとは、タグ VLAN を使う、複数 VLAN が所属しているポートです。
先程の図で言うと、L3 スイッチと L2 スイッチの間の黒色の接続ポートです。L3 スイッチ、L2 スイッチともにトランクポートで、トランクポート同士を接続します。この接続をトランクリンクと言います。
例えば gigabitEthernet 0/24 ポートにトランクポートを設定する場合、Cisco Catalyst であれば以下のようになります。
(config)# interface gigabitEthernet 0/24 (config-if)# switchport mode trunk
これだけだと全ての VLAN がこのポートから流れていきます。例えば VLAN10, 20 だけを流したい場合は以下コマンドを打ちます。
(config-if)# switchport trunk allowed vlan 10, 20
また、あとから追加で VLAN 999 も加えたいとなった場合は以下コマンドを打ちます。
(config-if)# switchport trunk allowed vlan add 999
この add をうっかり忘れてしまうと大変なことになります。VLAN 10 と 20 が繋がらなくなり、999 だけが繋がるようになりますので注意が必要です。add をつければ既存のトランク設定 VLAN の通信断を発生させずに追加が可能です。
Native VLAN
トランクポートには Native VLANという概念があります。たいていのスイッチではデフォルトで VLAN 1 が Native VLAN になっています。
トランクポートでタグ無し (untag) の通信を受信した場合、Native VLAN として処理されます。
Native VLAN を 1 から 10 に変更したい場合、Cisco Catalyst の場合は以下コマンドを打ちます。
(config-if)# switchport trunk native vlan 10
また、Native VLAN をタグ付きで送受信させたい場合は以下コマンドを打ちます。つまり全ての VLAN でタグを付ける設定です。
(config)# vlan dot1q tag native
Native VLAN に設定した VLAN ID について、(本来 untag であるべきだが)タグ VLAN でフレームを受信したとき、受け入れるか破棄するか、というのは、NW 機器の仕様によってまちまちです。
トランクポートに PC (もしくはアクセスポート)を接続する
トランクポートは基本的にはトランクポート同士を接続します。つまり、大抵は VLAN 対応スイッチ同士を接続するのですが、実は VLAN 非対応の PC やスイッチを接続すると、Native VLAN だけには接続できます。
なので、『トランクポートに VLAN 対応スイッチが接続してあるけど、万が一 VLAN 対応スイッチが壊れたときでも VLAN 100 だけは使いたい!』という時はVLAN 100 を Native VLAN にすればいいのです。トランクポートに PC 直結でも、HUB を介しても Native VLAN だけは通信できます。
下図は、L2 スイッチ#1と#2で VLAN 100, 200, 300 を trunk ポートで接続する際、L2 スイッチ#2が壊れたときでも、VLAN 100 だけは通信を継続させたい場合の例を示しています。例では VLAN 対応のスイッチを HUB に置き換えていますが、L2 スイッチ#1に PC を直結しても問題ありません。
タグ VLAN と MTU 値
L3 スイッチの VLAN インタフェースでは MTU 値はデフォルトで 1500 Byte となっています。タグが付いた Ethernet フレームは 4 Byte 増えていますが、この場合は問題ありません。L3 スイッチの内部的な動きとしては、タグ VLAN は受信したタイミングでタグを外してルーティング等の処理がされるので、気にしなくてよいのです。
ただし、Q-in-Q といった技術でタグを 2 つ付ける構成となると、MTU 値はスイッチ側で 4 Byte 分増やさないと(もしくは PC 側で 4 Byte 分減らさないと) フラグメンテーション(DF bit がある場合はドロップ)が発生してしまいます。
これを回避するために、Catalyst L3 スイッチで以下コマンドを打ちます。
(config)# system mtu 1504
これによりフラグメンテーションやドロップは回避できます。ただし、OSPF を使っている場合は MTU 値が対向ルータと同一じゃないと EXSTART 状態で止まり、DBD 情報の交換が出来ません。なので、同じく MTU を変更するか、以下の MTU 値の違いを無視するコマンドで対処します。
(config-if)# ip ospf mtu-ignore
コメント
綺麗なサイトを作っていただき、ありがとうございます。
いつもこのサイトを見て、勉強させていただいています。
untag vlan 10 , tag vlan 20 で、設定されている
hybrid ポートの場合、
ここに、普通のパソコンを接続すると
vlan 10 として、通信可能 になる
という認識で良いでしょうか?
いつもご覧いただきありがとうございます!
はい、その認識で大丈夫ですよ!
またなにか分からないこととかありましたら気軽にコメント下さい~
いつもこのサイトを見て、勉強させていただいています。
untag vlan 10 , tag vlan 20 で、設定されているHybrid ポートに、
NICカード 1つだけで、複数セグメントのIPアドレスが設定(VLAN設定)
されているサーバが接続された場合、
サーバ NICカード —- Hybrid ポート の
LANケーブル上には、VLANタグ が付いたパケットが
流れているのでしょうか?
サーバのVLAN設定はどのようになっている想定ですか?
vlan10(untag)に複数IPを付けているのであれば、vlan20との通信ができません。
vlan10(untag)に1つのIP、vlan20に1つのIPを付けているのであれば通信に問題はないはずです。
分かりやすい解説ありがとうございます。
「下図は、L2 スイッチ#1と#2で ・・」の下図が表示されていないので不明な部分がありますが、Nativeに設定したVLANをTrunkに設定する事は可能なのでしょうか?
その場合、スイッチから送信される該当VLAN宛てフレームにタグは付与されないのでしょうか?
yosshiさん
コメントありがとうございます。すみません、図が表示されないのは、サイトの設定の問題でした。今は表示されているかと思いますのでご確認下さい。
考え方としては、トランクポートのなかで、1つのvlanだけがnativeに設定可能で、nativeにしたvlanには、ご認識の通り、タグが付きません。つまり、スイッチから送信される該当VLAN宛てフレームにタグは付与されません。
ご回答ありがとうございます。
まだ図は表示されていないようですが、、
今回の例ではvlan100は「allowed vlan」の中には設定されていないという認識でよろしいでしょうか?
vlan100がnativeにも「allowed vlan」にも設定されているかと思い、?でした。
allowed vlanにも設定は必要ですよ。これは通信を許可するvlanを指定します。
native vlanはタグをつけないvlanを指定しますので軸が異なります。
vlanの設定に躓いて、こちらのサイトで勉強させていただいています。
VLAN対応のルーターにて
ポート1(untag) VLAN1,PVID1
ポート2(untag) VLAN3,PVID3
ポート3(tag) VLAN1,VLAN3,PVID1
で設定し、それぞれにVLANを設定していないPCを接続した場合
ポート3のPC(192.168.0.200)はポート1のPC(192.168.0.100)と通信可能と思っているのですが、正しいでしょうか。
こんばんは。コメントありがとうございます。
はい、それで合ってますよ。細かい話で、サブネットは /24 ですよね?
あと、接続PCはWindowsですかね?一時的に Windows ファイアウォールやウィルス対策ソフトを切って試してみてください。
ご回答ありがとうございます。
サブネットはすべて/24です、アンチウィルスやファイアウォール切っても駄目でした…
もともとは、ルーターから有線で無線APをつないでwifi使おうとしていたのですが、wifiにつないでもネットが使えず…
ルーターに直接PCつないでいろいろ調べると、どうもタグ無しを弾いてる感じで…
私のPVIDについての認識が間違っていたのかと不安でした。
メーカーに強気で問い合わせしてみます、ありがとうございます。
ちなみにルーターはasusのBRT-AC828です。
Native VLAN設定時の動作についての理解のため、ご教示よろしくお願いいたします。
「Native VLAN に設定した VLAN ID について、(本来 untag であるべきだが)タグ VLAN でフレームを受信したとき、受け入れるか破棄するか、というのは、NW 機器の仕様によってまちまちです」とあります。破棄するのは納得出来るのですが、受け入れる機器仕様があるというのが理解出来ません。
というのも、受信フレームにタグが付与されているということは対向機器はtrunkポートで、且つ受信側装置(A機器とします)で設定されているNativeVLANとは異なるIDがNativeとして設定されているかと思います。
逆方向でA機器から対向機器に送信する際はNative設定されたVLANはタグが付与されないと思いますので(対向装置はタグありで受信する必要があるため)、結局通信は成り立たないのではと思うのですが、認識間違っておりますでしょうか?
これはかなり特殊なケースなのであまり真剣に捉えなくてよいです。
例えばjuniperでは、スイッチングされるパケットと機器の自発パケットとでタグとアンタグが分かれるケースがあります。
https://kb.juniper.net/InfoCenter/index?page=content&id=KB17419&actp=METADATA
他にも似たようなケースが稀にありますが、私も人生で2回しか遭遇してないですね。
ネットワーク設計が難航しており、このサイトを拝見させて頂きました。
ご教授の程よろしくお願い致します。
L2スイッチ左とL2スイッチ中をL3スイッチを介さず直接接続するとします。
L2スイッチ左には、
「gigabitEthernet0/1:VLAN10、gigabitEthernet0/2:VLAN20、gigabitEthernet0/3:VLAN999、
gigabitEthernet0/24:トランクポート(許可VLAN:10,20,999、NativeVLAN:100)」
の設定を行います。
L2スイッチ中には、
「gigabitEthernet0/24:トランクポート(許可VLAN10,20,100,999、Native VLAN100)」の設定を行い、
L2スイッチ中に接続しているPCへL2スイッチ左のVLAN10,20,999からのすべての通信を可能とさせたい。
L2スイッチ中へ
「gigabitEthernet0/1~0/3をHybridポートとして、NativeVLAN:100、UntaggedVLAN:10,20,999,100」
の設定を行えば上記通信が可能と思っていたのですが、通信できませんでした。
L2スイッチ中のgigabitEthernet0/1~0/3のNativeVLANをVLAN10に設定するとL2スイッチ左のVLAN10からの通信は可能、
NativeVLANをVLAN20に設定するとL2スイッチ左のVLAN20からの通信は可能となります。
「L2スイッチ中に接続しているPCへL2スイッチ左のVLAN10,20,999からのすべての通信を可能とさせたい」
を実現するにはL2スイッチ中へどのような設定を行えばよいか心あたりはございますか?
長文で申し訳ございませんが、よろしくお願い致します。
こんにちは。
文字だけだとどうしても全容が把握できませんが、ご所望の設定はできないと思います。
VLANを設定しない、というのが1つの解決策ですが、もしかしてやりたいことは『プライベートVLAN』に近い気がしますがいかがですか?
https://milestone-of-se.nesuke.com/nw-advanced/nw-security/private-vlan/
ご回答ありがとうございます。
説明が分かりにくくなってしまい申し訳ございません。
おっしゃる通り『プライベートVLAN』に近い気がします。
リンク
の「プライベートVLANのtrunkの種類」の図でいうと、
PC#3・PC#4のVLAN102とPC#5・PC#6のVLAN103からの複数のVLANから
対向側スイッチのNAS・Printerへアクセス可能とさせたい
ということでした。
いつも拝見させていただいております。
以下のケースについて、ご教示ください。
L2 スイッチ間で、vlan 10 と vlan 20 (vlan 20 はnative vlan)をtrunk ボートで通信したい場合、trunk allowed vlan 10,20 と設定する必要がありますでしょうか?
それとも、native vlan については、許可 vlan として設定する必要はなく、trunk allowed vlan 10 のみの設定で良いでしょうか?
takaさん、コメントありがとうございます。
Cisco の設定で言えば10 と 20 の両方を設定する必要があります。
特にRFCの仕様で決まっている話ではないので、メーカーの仕様次第ですね。