みなさん、こんにちは。
今回は、ネットワークの構成テスト中に遭遇した、ちょっと変わったトラブルシューティングの事例をご紹介したいと思います。
その現象とは、「なぜか片側からのPingしか通らない。しかも、しばらくしたら双方向で通信できるようになっている」という、まるでネットワークが気分屋さんのように振る舞う不可解な事象でした。
最初は「いったい何が起きているんだ?」と頭を抱えましたが、原因を突き止めてみれば「なるほど!」と膝を打つような、ネットワークの基礎的な理解を深めてくれるものでした。
今回はそのトラブルの原因と、解決までの道のりを備忘録としても役立つように解説していきます。
発生した環境概要
今回のトラブルが発生した環境は、比較的シンプルな構成でした。
- L3スイッチ
- VLANインターフェース(SVI)が設定されており、VLAN間ルーティングを担当します。
- L2スイッチ
- 複数の端末が接続されており、L3スイッチと物理的に直結しています。
- 複数VLAN構成
- ネットワークは複数のVLANで構成されており、VLANごとに異なるセグメントが割り当てられています。
発生した不可解な事象とは?
問題の現象は次のようなものでした。
- L2配下の端末からL3スイッチ(SVI)へのPingは成功する。
- しかし、L3スイッチからその端末へのPingは失敗する。
- ところが、一度L2側からPingを通すと、その後はL3からL2への通信も通るようになる。
- さらに不思議なことに、何もしなくても、しばらく時間が経つと通信できなくなることもあったのです。
この現象に遭遇した当初は、ARPキャッシュの問題やケーブルの不良、あるいは単なる接触不良など、様々な可能性を疑いました。しかし、いくら調査をしても根本的な解決には至らず、頭の中は「なぜ?」でいっぱいでした。
真の原因 – L3スイッチのポート設定ミス(トランクポート未設定)
試行錯誤を重ね、様々な角度から調査を進めた結果、ようやく真の原因にたどり着きました。
それは、L3スイッチ側のL2スイッチと接続されているポートが、「アクセスモード」になっており、タグ付きVLANフレームを正しく処理できない状態だったことが判明したのです。
なぜ「アクセスモード」だと問題だったのか?
この設定ミスがなぜ上記のような不可解な現象を引き起こしたのか、少し詳しく解説させてください。
- L3スイッチのSVIとVLAN
- L3スイッチのSVI(Switched Virtual Interface)は、VLANごとにIPアドレスを持つ仮想インターフェースです。これにより、異なるVLAN間のルーティングが可能になります。
- しかし、SVIが正しく機能するためには、そのSVIが担当するVLANのタグが付いたフレームが、L3スイッチの該当ポートに到達する必要があります。
- タグ付きフレームの処理
- L2スイッチからL3スイッチへ、複数のVLANのトラフィックを流す場合、通常は「タグ付きフレーム」として送信されます。このタグは、どのVLANに属するデータなのかを示す識別子です。
- アクセスモードの問題点
- アクセスモードに設定されたポートは、特定の1つのVLANにのみ所属し、タグ付きフレームを処理するようには設計されていません。つまり、L2スイッチから送られてくるタグ付きのARP(Address Resolution Protocol)やICMP(Internet Control Message Protocol)パケットは、L3スイッチのアクセスポートでは適切に解釈されず、破棄されてしまうか、意図しないVLANに割り当てられてしまいます。
- ARP不成立による通信失敗
- 結果として、L3スイッチはL2配下の端末のMACアドレスを学習できず、ARPキャッシュを構築できません。L3スイッチからL2側端末へPingを送信しようとしても、宛先のMACアドレスが不明なためARPが不成立となり、Pingは失敗してしまうのです。
なぜ一度Pingを通すと双方向通信できるようになったのか?
この点が、今回のトラブルで最も「不思議」に感じられた部分でした。なぜ、L2側から一度Pingを通すと、L3側からの通信も可能になったのでしょうか?
これは、L3スイッチがARPキャッシュ(MACアドレス)を一時的に学習できたためです。
L2配下の端末がL3スイッチ(SVIのIPアドレス)にPingを送信すると、そのリクエストの中には送信元である端末自身のIPアドレスとMACアドレスの情報が含まれています。L3スイッチは、このPingリクエストを受け取った際に、送信元である端末のIPアドレスとMACアドレスの対応関係を一時的にARPキャッシュとして学習します。
一度MACアドレスを学習してしまえば、その後はL3スイッチはARPの問い合わせなしに、直接MACアドレス宛にPingを送信できます。そのため、L3スイッチからL2側端末への通信が「できるように見える」のです。
しかし、この解決策は一時的なものでしかありません。ARPキャッシュには有効期限があり、その期限が切れるとMACアドレス情報は破棄されてしまいます。結果として、再びARP不成立の状態に戻り、同じ問題が再発することになるため、本質的な解決にはなりません。これが、「何もしなくても、しばらく経つと通信できなくなることもあった」理由でもあります。
解決策 – L3スイッチのポートをトランクモードに設定
真の原因が判明すれば、解決策は明確です。L3スイッチ側のL2スイッチと接続されているポートを、複数のVLANのタグ付きフレームを通過させる「トランクモード」に設定することで、問題は解決しました。
Cisco機器の場合、以下のような設定を行いました。
interface GigabitEthernet1/1
switchport trunk encapsulation dot1q
switchport mode trunk
switchport trunk allowed vlan 10,20
この設定により、L3スイッチのポートはタグ付きVLANフレームを正しく処理できるようになり、SVIが正常に機能するようになりました。その結果、L3スイッチからL2側端末へのARPやICMP通信も正常に動作し、双方向でPingが通るようになったのです。
まとめ
今回のトラブルシューティングを簡潔にまとめると、以下のようになります。
症状 | 原因 | 解決策 |
---|---|---|
L2→L3はPing成功、L3→L2はPing失敗 | L3スイッチのポートがトランク設定されていない | ポートをトランクモードに設定する |
ネットワークトラブルの中でも、VLAN関連の設定ミスは、「一見通信できているように見える」ことが多く、原因の特定に時間がかかることがあります。特に、今回のように一時的に通信が可能になる現象が加わると、さらに複雑に感じられるかもしれません。
今回の経験は、VLAN設定の確認がいかに重要であるかを改めて痛感させられたケースでした。ネットワークの基本であるVLANとポートモードの理解が、トラブル解決の鍵を握ることを再認識させてくれました。
この記事が、みなさんのネットワークトラブルシューティングの一助となれば幸いです。
本日も最後までお読みいただきありがとうございました。
それでは、よいネットワーク管理ライフを!