2022年1月26日から28日まで鹿児島で開催された「JANOG49 Meeting」で、実行委員をやってきました。今回はネットワークのトラブルシューティングコンテスト「NETCON」のスタッフです。問題作成担当として2問担当しましたので、それぞれここで解説していきたいと思います。
この記事では、Switchingカテゴリの問題名 Switching-3 (20点) について解説します。
問題
HOST1とHOST2間でping疎通がとれない。以下の結果が得られるようにせよ。
HOST1>ping 192.168.12.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.12.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 17/25/35 ms
HOST2>ping 192.168.12.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.12.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 16/21/28 ms
条件:
- 既存の設定を削除してはならない。
- VLANやトンネルの追加は許可しない。
状況確認
まず設問の状況を確認してみます。
HOST1>ping 192.168.12.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.12.2, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
HOST2>ping 192.168.12.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.12.1, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
確かにping疎通が取れません。
HOSTの状態確認
基本的なアドレス割り当てやインターフェース状態を確認してみます。
HOST1>show ip interface brief
Interface IP-Address OK? Method Status Protocol
GigabitEthernet0/0 192.168.12.1 YES NVRAM up up
GigabitEthernet0/1 unassigned YES NVRAM administratively down down
GigabitEthernet0/2 unassigned YES NVRAM administratively down down
GigabitEthernet0/3 unassigned YES NVRAM administratively down down
HOST2>show ip interface brief
Interface IP-Address OK? Method Status Protocol
GigabitEthernet0/0 192.168.12.2 YES NVRAM up up
GigabitEthernet0/1 unassigned YES NVRAM administratively down down
GigabitEthernet0/2 unassigned YES NVRAM administratively down down
GigabitEthernet0/3 unassigned YES NVRAM administratively down down
どちらのホストにも期待通りのIPアドレスが割り当てられており、リンク状態も「up/up」となっているので問題なさそうです。サブネットが違うとか言う話でしょうか?
HOST1>show ip route | begin Gateway
Gateway of last resort is not set
192.168.12.0/24 is variably subnetted, 2 subnets, 2 masks
C 192.168.12.0/24 is directly connected, GigabitEthernet0/0
L 192.168.12.1/32 is directly connected, GigabitEthernet0/0
HOST2>show ip route | begin Gateway
Gateway of last resort is not set
192.168.12.0/24 is variably subnetted, 2 subnets, 2 masks
C 192.168.12.0/24 is directly connected, GigabitEthernet0/0
L 192.168.12.2/32 is directly connected, GigabitEthernet0/0
どちらもちゃんと 192.168.12.0/24
に所属しているので、同一セグメントにいる=レイヤ3レベルでは疎通可能な設定になっているようです。では途中に挟まれているスイッチの問題かもしれません。
L2状況確認
インターフェースやVLANの設定はどうでしょう?
vEOS1>show interfaces status
Port Name Status Vlan Duplex Speed Type Flags Encapsulation
Et1 connected 1 full unconf EbraTestPhyPort
Et2 connected 1 full unconf EbraTestPhyPort
Et3 connected 1 full unconf EbraTestPhyPort
Et4 connected 1 full unconf EbraTestPhyPort
Et5 connected 1 full unconf EbraTestPhyPort
Et6 connected 1 full unconf EbraTestPhyPort
Et7 connected 1 full unconf EbraTestPhyPort
Et8 connected 1 full unconf EbraTestPhyPort
Ma1 connected routed a-full a-1G 10/100/1000
vEOS2>show interfaces status
Port Name Status Vlan Duplex Speed Type Flags Encapsulation
Et1 connected 1 full unconf EbraTestPhyPort
Et2 connected 1 full unconf EbraTestPhyPort
Et3 connected 1 full unconf EbraTestPhyPort
Et4 connected 1 full unconf EbraTestPhyPort
Et5 connected 1 full unconf EbraTestPhyPort
Et6 connected 1 full unconf EbraTestPhyPort
Et7 connected 1 full unconf EbraTestPhyPort
Et8 connected 1 full unconf EbraTestPhyPort
Ma1 connected routed a-full a-1G 10/100/1000
vEOS間の接続に使用しているEthernet2、Hostとの接続に使用しているEthernet3共にVLAN1に所属しており、Statusもconnectedとなっているのでレイヤ2レベルでも接続はできているようです。こうなるとフィルタがかかっているとかの可能性が考えられます。
フィルタ設定確認
Hostと名前はついていますがvIOSなので、ACLが設定されていないか念のため見てみます。
HOST1>show access-list
HOST1>
HOST2>show access-list
HOST2>
何もないですね。ではvEOSで何らかのフィルタリングがあるのでしょうか?
vEOS1>enable
vEOS1#show ip access-list summary
IPV4 ACL default-control-plane-acl [readonly]
Total rules configured: 25
Configured on Ingress: control-plane(default VRF)
Active on Ingress: control-plane(default VRF)
vEOS1#show mac access-lists summary
vEOS1#
vEOS2>enable
vEOS2#show ip access-list summary
IPV4 ACL default-control-plane-acl [readonly]
Total rules configured: 25
Configured on Ingress: control-plane(default VRF)
Active on Ingress: control-plane(default VRF)
vEOS2#show mac access-list summary
vEOS2#
何も特別なものは設定されていないようです。うーん困りました…
視点を変えてみる
ここまでみてみて、フィルタリングやアドレス設定、VLAN設定には問題がありませんでした。ですのでping(IP)の通信についてもう一度考えてみましょう。
今回の環境でping疎通が成功するまでの流れは以下のようになります。
- 宛先IPアドレスをもとに、ルーティングテーブルやFIBテーブルから出力インターフェース(必要に応じてネクストホップも)を決定する
- 同一セグメントなので、宛先MACアドレスを解決してそのMACアドレス宛にEthernetフレームを送信する
- Ethernetフレームを受信したホストは自身のMACアドレス宛である場合にレイヤ3にデータを渡す
- 受けったデータのIPヘッダから自分のIPアドレス宛であれば適切に処理する
ここまでで1は確認できているので、2の「宛先MACアドレスが解決できているか」をみていくことにします。
MACアドレス
ではMACアドレスが解決できているか確認してみます。
HOST1>ping 192.168.12.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.12.2, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
HOST1>show ip arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 192.168.12.1 - 5000.0003.0000 ARPA GigabitEthernet0/0
Internet 192.168.12.2 0 Incomplete ARPA
HOST2>ping 192.168.12.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.12.1, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
HOST2>show ip arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 192.168.12.1 0 5000.0003.0000 ARPA GigabitEthernet0/0
Internet 192.168.12.2 - 5000.0004.0000 ARPA GigabitEthernet0/0
おや?HOST1がHOST2のMACアドレスを解決できていません。これが問題点のようです。逆にHOST2がMACアドレスを解決できていると言うことは、レイヤ2の通信そのものはできていると考えられます。この観点で見ていくのが良さそうです。
MACアドレステーブル
間のスイッチ、vEOSのMACアドレステーブルを見てみましょう。ちゃんとそれぞれのHOSTのMACアドレスを学習できているでしょうか?
vEOS1#show mac address-table
Mac Address Table
------------------------------------------------------------------
Vlan Mac Address Type Ports Moves Last Move
---- ----------- ---- ----- ----- ---------
1 5000.0003.0000 DYNAMIC Et3 1 0:39:14 ago
Total Mac Addresses for this criterion: 1
Multicast Mac Address Table
------------------------------------------------------------------
Vlan Mac Address Type Ports
---- ----------- ---- -----
Total Mac Addresses for this criterion: 0
vEOS2#show mac address-table
Mac Address Table
------------------------------------------------------------------
Vlan Mac Address Type Ports Moves Last Move
---- ----------- ---- ----- ----- ---------
1 5000.0003.0000 DYNAMIC Et2 1 0:07:47 ago
1 5000.0004.0000 STATIC
Total Mac Addresses for this criterion: 2
Multicast Mac Address Table
------------------------------------------------------------------
Vlan Mac Address Type Ports
---- ----------- ---- -----
Total Mac Addresses for this criterion: 0
あれ?vEOS2に「STATIC」と言うエントリがありますね。しかもそのMACアドレスはHOST2のものですが学習したポートの情報がありません。これではvEOS2は5000.0004.0000宛のフレームをどのポートからも送信できません。vEOS2でMACアドレス関連の何かがあるのかもしれません。
おもむろにコンフィグ確認
すぐにrunning-configを見た人はもう気づいているかもしれません。
vEOS2#show running-config | include mac
mac address-table static 5000.0004.0000 vlan 1 drop
なんと、VLAN1においてMACアドレス 5000.0004.0000
は「drop: フレームを破棄する」と言う設定がされています。何かセキュリティ的な対処でもしようとしていたのでしょうか…
解決策
トラブルの原因は分かりましたが、どう対処するかを考える必要があります。設問には以下の条件がありました。
既存の設定を削除してはならない
設定を削除せずに対処するにはどうすれば良いでしょうか?
現在の設定は、特定のMACアドレス宛のフレームを「drop:破棄」する設定になっていますが、単純に考えれば破棄せず正しく中継させてやれば通信は成立します。つまり、通常は受信したフレームから動的に学習して作成するMACアドレステーブルエントリを、それと同じ結果になるように静的MACアドレステーブルエントリを登録してやれば良いと言うことになります。
コンフィグ修正
上記のトポロジからすると、vEOS2のEth3の先にHost2、つまり 5000.0400.0000
のMACアドレスをもつ装置がいますので、現在の静的MACアドレステーブルエントリを修正してEthernet3から送信できるようにします。
vEOS2#configure
vEOS2(config)#mac address-table static 5000.0004.0000 vlan 1 interface Ethernet3
vEOS2(config)#end
vEOS2#show mac address-table
Mac Address Table
------------------------------------------------------------------
Vlan Mac Address Type Ports Moves Last Move
---- ----------- ---- ----- ----- ---------
1 5000.0004.0000 STATIC Et3
Total Mac Addresses for this criterion: 1
Multicast Mac Address Table
------------------------------------------------------------------
Vlan Mac Address Type Ports
---- ----------- ---- -----
Total Mac Addresses for this criterion: 0
5000.0004.0000
はEthernet3の先にいるように定義できました。では疎通確認してみましょう。
HOST1>ping 192.168.12.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.12.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 6/8/12 ms
HOST2>ping 192.168.12.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.12.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 5/7/11 ms
期待通りの結果が得られました!
回答例
それでは、NETCONの回答に合うよう報告書形式にしてみます。
トラブル事象について調査、対応しましたので、以下の通り報告いたします。
原因)vEOS2のMACアドレステーブルを確認したところ、HOST2のMACアドレスに関する静的エントリが設定されており、かつそのMACアドレス宛のフレームは破棄されるようになっていました。
vEOS2#show mac address-table
Mac Address Table
------------------------------------------------------------------
Vlan Mac Address Type Ports Moves Last Move
---- ----------- ---- ----- ----- ---------
1 5000.0003.0000 DYNAMIC Et2 1 0:07:47 ago
1 5000.0004.0000 STATIC
Total Mac Addresses for this criterion: 2
Multicast Mac Address Table
------------------------------------------------------------------
Vlan Mac Address Type Ports
---- ----------- ---- -----
Total Mac Addresses for this criterion: 0
vEOS2#show running-config | include mac
mac address-table static 5000.0004.0000 vlan 1 drop
対処)本設定の意図が不明なため、フレームの破棄ではなく正しい出力インターフェースを指定しました。
vEOS2#configure
vEOS2(config)#mac address-table static 5000.0004.0000 vlan 1 interface Ethernet3
vEOS2(config)#end
vEOS2#show mac address-table
Mac Address Table
------------------------------------------------------------------
Vlan Mac Address Type Ports Moves Last Move
---- ----------- ---- ----- ----- ---------
1 5000.0004.0000 STATIC Et3
Total Mac Addresses for this criterion: 1
Multicast Mac Address Table
------------------------------------------------------------------
Vlan Mac Address Type Ports
---- ----------- ---- -----
Total Mac Addresses for this criterion: 0
以上
まとめ
pingと言うレイヤ3レベルの通信はレイヤ2の通信が正常であって初めて成立するのだ、と言うことを再確認してみようという意図で作成した問題です。先に show running-config
されちゃうとすぐバレてしまうので面白くないなーとは思ったのですが、それがどういう影響をもたらす設定なのかを理解してもらえると、何かの時に使えるんじゃないかなと思います。
コンフィグ
vEOS1
! Command: show running-config
! device: vEOS1 (vEOS, EOS-4.25.2F)
!
! boot system flash:/vEOS-lab.swi
!
transceiver qsfp default-mode 4x10G
!
service routing protocols model ribd
!
hostname vEOS1
!
spanning-tree mode mstp
!
no aaa root
!
interface Ethernet1
!
interface Ethernet2
!
interface Ethernet3
!
interface Ethernet4
!
interface Ethernet5
!
interface Ethernet6
!
interface Ethernet7
!
interface Ethernet8
!
interface Management1
!
no ip routing
!
end
vEOS2
! Command: show running-config
! device: vEOS2 (vEOS, EOS-4.25.2F)
!
! boot system flash:/vEOS-lab.swi
!
transceiver qsfp default-mode 4x10G
!
service routing protocols model ribd
!
hostname vEOS2
!
spanning-tree mode mstp
!
no aaa root
!
interface Ethernet1
!
interface Ethernet2
!
interface Ethernet3
!
interface Ethernet4
!
interface Ethernet5
!
interface Ethernet6
!
interface Ethernet7
!
interface Ethernet8
!
interface Management1
!
interface Vlan1
!
mac address-table static 5001.0004.0000 vlan 1 drop
!
no ip routing
!
end
HOST1
hostname HOST1
!
interface GigabitEthernet0/0
ip address 192.168.12.1 255.255.255.0
duplex auto
speed auto
no shutdown
HOST2
hostname HOST2
!
interface GigabitEthernet0/0
ip address 192.168.12.2 255.255.255.0
duplex auto
speed auto
no shutdown
コメント