【Cisco】突然ポートがブロックされた!「RECV_1Q_NON_TRUNK」の原因と対処法

  • URLをコピーしました!
目次

はじめに

「何も設定変更していないのに、急に特定のポートが通信できなくなった……」

慌てて Cisco スイッチのログを確認すると、見たことのないこんなエラーメッセージが出ていませんか?

%SPANTREE-7-RECV_1Q_NON_TRUNK: Received 802.1Q BPDU on non trunk GigabitEthernet0/1 VLAN100.
%SPANTREE-7-BLOCK_PORT_TYPE: Blocking GigabitEthernet0/1 on VLAN100. Inconsistent port type.

RECV_1Q_NON_TRUNK……? トランクじゃないのに受け取った?」

このエラーは、STP(スパニングツリープロトコル)の整合性チェック機能が働き、安全のためにポートを自動的に遮断(ブロック)したことを示しています。

本記事では、アクセスポートでこの「謎のブロック」が発生する原因と、「設定を正す恒久対処」から「どうしても通信させたい時の回避策」まで、2つのアプローチで解説します。

この記事でわかること
  • エラー RECV_1Q_NON_TRUNK の正体と発生メカニズム
  • なぜアクセスポートで「タグ付きフレーム」が検知されるのか?
  • 推奨される解決策と、最終手段(BPDUフィルタ)の使い方

エラーの正体:「アクセスポートなのにタグが来たぞ?」

このエラーが発生したとき、Cisco スイッチ内部では「設定の矛盾」に対する安全装置が働いています。 まずは、難解なエラーメッセージを翻訳してみましょう。

エラーログの読み解き方

表示された2行のログは、それぞれ「原因」と「結果」を表しています。

  1. 原因のログ
%SPANTREE-7-RECV_1Q_NON_TRUNK: Received 802.1Q BPDU on non trunk ...
  • Received 802.1Q BPDU: 「タグ付き(802.1Q)」の STP 制御フレーム(BPDU)を受け取ったよ。
  • on non trunk: でも、このポートの設定は「トランクじゃない(=アクセスポート)」だよね?
  1. 結果のログ
%SPANTREE-7-BLOCK_PORT_TYPE: Blocking ... Inconsistent port type.
  • Inconsistent port type: ポートの種類(Access か Trunk か)が対向と食い違っている(不整合)
  • Blocking: 危ないから、念のためブロック(閉鎖)するね。

つまり、スイッチは「自分はアクセスポートとして待機していたのに、相手からトランクポート用の挨拶(タグ付きBPDU)が来た! 話が違うぞ!」と言っているのです。

なぜブロックされるのか?

「ちょっとくらい設定が違っても、通信させてくれればいいのに」と思うかもしれません。 しかし、STP(スパニングツリープロトコル)において、この不整合は致命的です。

STP は、ネットワーク全体の地図を作ってループ(円環)を防ぐプロトコルです。 もし、片方が「Access(特定のVLAN)」、もう片方が「Trunk(全 VLAN)」という状態で繋がってしまうと、本来混ざってはいけない VLAN 同士が繋がってしまったり、STP の計算が狂って大規模なループ障害を引き起こすリスクがあります。

そのため、Cisco の STP(PVST+)には、こうした危険な接続を検知すると即座にポートをブロックして被害を防ぐ機能(Type Inconsistency Guard)が備わっています。 このエラーは、スイッチがネットワークを守ってくれた証拠なのです。

不整合という理由だけで止めているわけじゃなくて、「このままだとループしてネットワーク全体が死ぬから、食い止めたぞ」というファインプレーになります。

考えられる2つの原因

「アクセスポートなのにタグ付き BPDU が来た」という現象は、主に以下の2つのパターンのどちらかで発生します。

原因① 単純な設定ミス(Access vs Trunk)

最も多いのが、対向スイッチとの設定不一致です。

  • 自拠点(エラーが出ている側): switchport mode access (アクセスポート)
  • 対向拠点(相手側): switchport mode trunk (トランクポート)

Cisco 独自の STP(PVST+)では、トランクポートは VLAN ごとにタグが付いた BPDU を送信します。 一方、アクセスポートは「タグなし」のフレームしか期待していません。 そのため、対向スイッチが「トランクだと思って」送ってきたタグ付きの挨拶状(BPDU)を受け取った瞬間、「えっ、タグが付いてる!? 設定と違う!」と判断してポートを閉じてしまうのです。

原因② 間にいるハブやスイッチの仕様

「対向は間違いなく PC(またはルータ)のエッジポートだよ?」という場合に疑われるのがこのケースです。 間に 「アンマネージドスイッチ(安価なハブ)」「IP 電話機(VoIP Phone)」 が挟まっていませんか?

透過してしまうハブ

一部のスイッチングハブは、受信したタグ付きフレーム(BPDU含む)を理解せず、そのまま素通り(透過)させてしまうものがあります。その奥にトランク設定の機器がいると、ハブ越しにタグ付き BPDU が届いてしまいます。

IP 電話機

PC 用ポートと電話用ポートを持つ IP 電話機などが、Voice VLAN の設定ミスなどでタグ付き BPDU を漏らしているケースもあります。

いずれにせよ、「ここにはタグなししか来ないはず」という場所に「タグ付き」が紛れ込んできたことが原因です。

対処法① 設定を正しく合わせる(推奨)

エラーを解消するための最も確実で安全な方法は、対向機器との設定の不整合を解消することです。 「アクセスポート」と「トランクポート」が繋がっている状態は、設計として正しくありません。どちらかに合わせましょう。

対向スイッチの設定を確認・修正する

多くの場合、原因は「対向スイッチの設定漏れ」です。 例えば、対向スイッチのポート設定を他のポートからコピーした際に、switchport mode trunk のまま残ってしまっているケースなどが考えられます。

対向スイッチにログインできる場合は、設定を確認し、アクセスポートに修正してください。

(対向スイッチでの設定変更例)

Switch_B(config)# interface GigabitEthernet0/1
Switch_B(config-if)# switchport mode access  <-- TrunkをやめてAccessにする
Switch_B(config-if)# switchport access vlan 100

対向側をアクセスポートに変更すれば、タグ付き BPDU は送信されなくなり、こちら側のポートのブロックも自動的に解除されます。

逆に、こちら側を Trunk にする場合

もし、その接続が本当にトランク(複数の VLAN を通す必要がある接続)であるならば、エラーが出ている自拠点のポート設定を Trunk に変更してください。

(自拠点での設定変更例)

Switch_A(config)# interface GigabitEthernet0/1
Switch_A(config-if)# switchport trunk encapsulation dot1q
Switch_A(config-if)# switchport mode trunk  <-- こちらもTrunkに合わせる

要は、「Access なのか Trunk なのか、両端で設定をしっかり合わせる」。これがネットワークの鉄則です。

対処法② BPDUフィルタで無視する(最終手段)

「対向スイッチの設定ミスなのは分かった。でも、相手は通信キャリアの機器や、他社管理のスイッチで、設定変更を頼めない!

そんな八方塞がりな状況でのみ許される「回避策」が、BPDU フィルタの使用です。

どうしても対向の設定を変えられない場合

このエラーは「タグ付き BPDU を受信してしまうこと」がトリガーです。 ならば、「受信した BPDU を見なかったことにする(フィルタリングする)」ことで、強制的にポートのブロックを回避できます。

これはあくまで「臭いものに蓋をする」対処療法であり、根本解決ではありませんが、サービス継続のためにやむを得ない場合の最終手段となります。

インターフェース単位での設定コマンド

BPDU フィルタはスイッチ全体で設定することも可能ですが、影響範囲が広すぎるため非推奨です。 必ず「対象のインターフェースのみ」で有効化してください。

Switch(config)# interface GigabitEthernet0/1
Switch(config-if)# spanning-tree bpdufilter enable

このコマンドを入れると、そのポートは以下の挙動になります。

  1. BPDU を送信しなくなる(相手に STP の情報を送らない)。
  2. 受信した BPDU を無視する(相手からの STP 情報を捨てる)。

結果として、スイッチは「対向から何も来ていない」と判断し、ポートをアップ状態(Forwarding)に維持します。

【重要】BPDU フィルタのリスク

このコマンドを使用する際は、以下のリスクを絶対に理解しておく必要があります。

警告

実質的な「STP 無効化」です BPDU フィルタを有効にしたポートは、STP の計算に参加しなくなります。 つまり、そのポートで物理的なループ配線(ケーブルの挿し間違いなど)が発生しても、スイッチはそれを検知できず、ポートをブロックしません。

結果として、ブロードキャストストームが発生し、ネットワーク全体がダウンする可能性があります。 「ループ構成になっていないこと」を物理的に担保できる場合のみ、細心の注意を払って使用してください。

まとめ

本記事では、Cisco スイッチで発生する RECV_1Q_NON_TRUNK エラーについて解説しました。

原因

自拠点は「Access」、対向は「Trunk」という設定の食い違い(不整合)

推奨対策

「設定を合わせる」。対向を Access にするか、自拠点を Trunk にする。

最終手段

どうしても変更できない場合のみ、「BPDU フィルタ」で回避する。ただし、ループ検知が無効になるリスクを理解すること。

以上、最後までお読みいただきありがとうございました。


よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

インフラ(クラウド/NW/仮想化)から Web 開発まで、技術領域を横断して活動するエンジニア💻 コンシューマー向けエンタメ事業での新規開発・運営経験を活かし、実戦的な技術ノウハウを発信中

[ Certs ] CCIE Lifetime Emeritus / VCAP-DCA ✒️ [ Life ] 技術書・ビジネス書愛好家📖 / 小・中学校で卓球コーチ👟

目次