JANOG49 NETCON問題解説(Switching-3)

技術ネタ

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疎通が成功するまでの流れは以下のようになります。

  1. 宛先IPアドレスをもとに、ルーティングテーブルやFIBテーブルから出力インターフェース(必要に応じてネクストホップも)を決定する
  2. 同一セグメントなので、宛先MACアドレスを解決してそのMACアドレス宛にEthernetフレームを送信する
  3. Ethernetフレームを受信したホストは自身のMACアドレス宛である場合にレイヤ3にデータを渡す
  4. 受けったデータの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

コメント

タイトルとURLをコピーしました