OSPF では、不正なルータとネイバーにならないよう、認証を設定できます。認証の方式には、平文のパスワードを使う認証(タイプ1)と、MD5 を使う認証(タイプ2)があります。MD5 認証では、パスワードそのものはパケットに載らず、パスワードから計算したダイジェスト(ハッシュ値)だけが送られます。この記事では、MD5 認証の有効化とキーの設定、設定が合わないときの動きを確かめます。
- MD5 認証の有効化(インターフェース単位とエリア単位)
ip ospf message-digest-keyでのキーの設定- 認証の種類やキーが合わないときの debug の表示
検証構成
R2 と R3 を 192.168.23.0/24 でつなぎ、エリア0で OSPF のネイバーにします。このネイバーに MD5 認証を設定し、キーには CISCO を使います。
OSPF の基本設定
R2(config)# router ospf 1 R2(config-router)# network 192.168.23.0 0.0.0.255 area 0 R2(config-router)# network 2.2.2.2 0.0.0.0 area 0 R3(config)# router ospf 1 R3(config-router)# network 192.168.23.0 0.0.0.255 area 0 R3(config-router)# network 3.3.3.3 0.0.0.0 area 0
MD5 認証の有効化
MD5 認証は、インターフェース単位で有効にする方法と、エリア全体で有効にする方法の2つがあります。両方を設定した場合は、インターフェースの設定が優先されます。
インターフェース単位で有効にする
R2 のインターフェースで MD5 認証を有効にします。
R2
R2(config)# int fastEthernet 0/0.23
R2(config-subif)# ip ospf authentication message-digest
show ip ospf interface を見ると、MD5 認証(Message digest authentication)が有効になっています。まだキーを設定していないので、キー ID 0 の既定のキーを使っています。
R2# show ip ospf interface
Loopback0 is up, line protocol is up
Internet Address 2.2.2.2/32, Area 0, Attached via Network Statement
Process ID 1, Router ID 2.2.2.2, Network Type LOOPBACK, Cost: 1
Topology-MTID Cost Disabled Shutdown Topology Name
0 1 no no Base
Loopback interface is treated as a stub Host
FastEthernet0/0.23 is up, line protocol is up
Internet Address 192.168.23.2/24, Area 0, Attached via Network Statement
Process ID 1, Router ID 2.2.2.2, Network Type BROADCAST, Cost: 1
Topology-MTID Cost Disabled Shutdown Topology Name
0 1 no no Base
Transmit Delay is 1 sec, State DR, Priority 1
Designated Router (ID) 2.2.2.2, Interface address 192.168.23.2
No backup designated router on this network
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
oob-resync timeout 40
Hello due in 00:00:06
Supports Link-local Signaling (LLS)
Cisco NSF helper support enabled
IETF NSF helper support enabled
Index 1/1, flood queue length 0
Next 0x0(0)/0x0(0)
Last flood scan length is 1, maximum is 1
Last flood scan time is 0 msec, maximum is 0 msec
Neighbor Count is 0, Adjacent neighbor count is 0
Suppress hello for 0 neighbor(s)
Message digest authentication enabled
No key configured, using default key id 0
R2 の Hello をキャプチャすると、Auth Type が Cryptographic(2)になっています。
この記事の画面は、実際の画面ではなく、検証時の画面から見るポイントを抜き出して描いたイメージです。バージョンによって、項目の並びや表記は変わります。
▸ Internet Protocol Version 4, Src: 192.168.23.2, Dst: 224.0.0.5▾ Open Shortest Path First ▾ OSPF Header Version: 2 Message Type: Hello Packet (1) Packet Length: 44 Source OSPF Router: 2.2.2.2 Area ID: 0.0.0.0 (Backbone) Checksum: 0x0000 (None)1 Auth Type: Cryptographic (2)2 Auth Crypt Key id: 0 Auth Crypt Data Length: 16 Auth Crypt Sequence Number: 1592483692 Auth Crypt Data: 8e1175ae691afb55e1a5e65cd1de0ff5 ▸ OSPF Hello Packet ▸ OSPF LLS Data Block
| No. | 表示 | 意味 |
|---|---|---|
| 1 | Auth Type: Cryptographic (2) | 認証の種類がタイプ2(MD5)。タイプ0は認証なし、タイプ1は平文 |
| 2 | Auth Crypt Key id: 0 | 使っているキー ID。キーを設定していないので 0。その下の Auth Crypt Data が、キーから計算した 16 バイトのダイジェスト |
R3 はまだ MD5 認証を設定していないので、しばらくすると Dead タイマーが切れてネイバーがダウンします。
*Jun 18 12:33:50.543: %OSPF-5-ADJCHG: Process 1, Nbr 3.3.3.3 on FastEthernet0/0.23
from FULL to DOWN, Neighbor Down: Dead timer expired
R2 で debug ip ospf adj を有効にすると、認証の種類が合っていないことがわかります。受け取ったパケットはタイプ1で、R2 はタイプ2を使っています。
R2#debug ip ospf adj
OSPF adjacency debugging is on
*Jun 18 12:40:25.367: OSPF-1 ADJ Fa0/0.23: Rcv pkt from 192.168.23.3 :
Mismatched Authentication type. Input packet specified type 1, we use type 2
R3 でも MD5 認証を有効にすると、ネイバーが FULL に戻ります。
R3
R3(config)# interface FastEthernet0/0.23
R3(config-subif)# ip ospf authentication message-digest
*Jun 18 12:41:40.495: %OSPF-5-ADJCHG: Process 1, Nbr 2.2.2.2 on FastEthernet0/0.23
from LOADING to FULL, Loading Done
エリア単位で有効にする
OSPF のインターフェースが多いときは、エリア単位でまとめて MD5 認証を有効にできます。R2 のエリア0で MD5 認証を有効にします。
R2
R2(config)# router ospf 1
R2(config-router)# area 0 authentication message-digest
エリア0のインターフェースで、MD5 認証が有効になっています。
R2# show ip ospf interface
Loopback0 is up, line protocol is up
Internet Address 2.2.2.2/32, Area 0, Attached via Network Statement
Process ID 1, Router ID 2.2.2.2, Network Type LOOPBACK, Cost: 1
Topology-MTID Cost Disabled Shutdown Topology Name
0 1 no no Base
Loopback interface is treated as a stub Host
FastEthernet0/0.23 is up, line protocol is up
Internet Address 192.168.23.2/24, Area 0, Attached via Network Statement
Process ID 1, Router ID 2.2.2.2, Network Type BROADCAST, Cost: 1
Topology-MTID Cost Disabled Shutdown Topology Name
0 1 no no Base
Transmit Delay is 1 sec, State DR, Priority 1
Designated Router (ID) 2.2.2.2, Interface address 192.168.23.2
No backup designated router on this network
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
oob-resync timeout 40
Hello due in 00:00:04
Supports Link-local Signaling (LLS)
Cisco NSF helper support enabled
IETF NSF helper support enabled
Index 1/1, flood queue length 0
Next 0x0(0)/0x0(0)
Last flood scan length is 1, maximum is 1
Last flood scan time is 0 msec, maximum is 0 msec
Neighbor Count is 0, Adjacent neighbor count is 0
Suppress hello for 0 neighbor(s)
Message digest authentication enabled
No key configured, using default key id 0
しばらくすると、ネイバーがダウンします。
*Jun 18 12:44:52.615: %OSPF-5-ADJCHG: Process 1, Nbr 3.3.3.3 on FastEthernet0/0.23
from FULL to DOWN, Neighbor Down: Dead timer expired
R3 でもエリア0で MD5 認証を有効にすると、ネイバーが FULL に戻ります。
R3
R3(config)# router ospf 1
R3(config-router)# area 0 authentication message-digest
*Jun 18 12:48:19.027: %OSPF-5-ADJCHG: Process 1, Nbr 3.3.3.3 on FastEthernet0/0.23
from LOADING to FULL, Loading Done
MD5 認証キーの設定
R2 にキーを設定する
R2 で debug ip ospf adj を有効にし、インターフェースに MD5 認証キー(キー ID 1、文字列 CISCO)を設定します。
R2
R2# debug ip ospf adj
OSPF adjacency debugging is on
R2(config)# int fastEthernet 0/0.23
R2(config-subif)# ip ospf message-digest-key 1 md5 CISCO
R3 はまだキー ID 0 のまま送ってくるので、R2 には「インターフェースにキー ID 0 のキーがない」というログが出ます。
*Jun 18 12:50:05.039: OSPF-1 ADJ Fa0/0.23: Rcv pkt from 192.168.23.3 :
Mismatched Authentication Key - No message digest key 0 on interface
R3 にも同じキーを設定する
R3
R3(config)# int fastEthernet 0/0.23
R3(config-subif)# ip ospf message-digest-key 1 md5 CISCO
R2 の Hello をキャプチャすると、キー ID 1 で MD5 の認証情報が送られています。
▸ Internet Protocol Version 4, Src: 192.168.23.2, Dst: 224.0.0.5▾ Open Shortest Path First ▾ OSPF Header Version: 2 Message Type: Hello Packet (1) Packet Length: 48 Source OSPF Router: 2.2.2.2 Area ID: 0.0.0.0 (Backbone) Checksum: 0x0000 (None) Auth Type: Cryptographic (2)1 Auth Crypt Key id: 1 Auth Crypt Data Length: 16 Auth Crypt Sequence Number: 1592484732 Auth Crypt Data: b2fc1d5c87b05f4ad596dca09c93b78e
| No. | 表示 | 意味 |
|---|---|---|
| 1 | Auth Crypt Key id: 1 | 設定したキー ID 1 で計算したダイジェストを送っている。キーの文字列(CISCO)はパケットに載らない |
MD5 認証キーが合わない場合
キーの文字列を変える
R2 で debug ip ospf adj を有効にしておき、R3 のキーを CISCO1 に変えて、R2 とキーの文字列を合わなくします。
R2
R2# debug ip ospf adj OSPF adjacency debugging is on
R3
R3(config)# interface FastEthernet0/0.23
R3(config-subif)# no ip ospf message-digest-key 1 md5 CISCO
R3(config-subif)# ip ospf message-digest-key 1 md5 CISCO1
R2 に、キー(ダイジェスト)が合わないというログが出ます。
*Jun 18 12:59:36.579: OSPF-1 ADJ Fa0/0.23: Rcv pkt from 192.168.23.3 :
Mismatched Authentication Key - Message Digest
しばらくすると、ネイバーがダウンします。
*Jun 18 12:59:39.063: %OSPF-5-ADJCHG: Process 1, Nbr 3.3.3.3 on FastEthernet0/0.23
from FULL to DOWN, Neighbor Down: Dead timer expired
まとめ
| debug のメッセージ | 原因 |
|---|---|
Mismatched Authentication type | 認証の種類(なし/平文/MD5)が合っていない |
No message digest key N on interface | 相手が使っているキー ID N のキーが、自分のインターフェースにない |
Mismatched Authentication Key - Message Digest | キー ID は同じだが、キーの文字列が違う |
MD5 認証では、認証の種類、キー ID、キーの文字列の3つを、ネイバーの両側でそろえます。
MD5 はハッシュ関数としては古く、より強い方式として、OSPFv2 で SHA 系のハッシュ(HMAC-SHA)を使う認証が RFC 5709 で決められています。Cisco の新しい OS では、キーチェーンを使ってこの方式を設定できる機種があります。使える方式は、機種と OS のバージョンで確認してください。
コメント