【EIGRP】ネイバー認証(MD5)

EIGRP では、ネイバー認証を設定すると、パスワードを知っているルータからのパケットだけを受け入れるようにできます。不正なルータがネイバーになってルートを流し込むのを防ぐための設定です。この記事では、クラシックモードで MD5 認証を設定し、キーの文字列が違う場合やキーチェーンがない場合の動きも確かめます。

この記事でわかること
  1. キーチェーンの作り方
  2. インタフェースで MD5 認証を有効にし、キーチェーンを適用する方法
  3. キーの文字列が違うとき、キーチェーンがないときのログと debug

MD5 認証の設定の流れ

クラシックモードの MD5 認証は、次の2段階で設定します。

  • STEP 1:キーチェーンを作り、キー ID と文字列(パスワード)を登録する
  • STEP 2:インタフェースで MD5 認証を有効にし、キーチェーンを適用する
STEP 1 キーチェーン key chain EIGRP-KEY key 1key-string CISCO(キー ID と文字列の組) STEP 2 インタフェース interface FastEthernet0/0.23ip authentication mode eigrp 100 md5ip authentication key-chain eigrp 100 EIGRP-KEY 名前で参照 R2・R3 の両方で、同じキー ID と同じ文字列にそろえる
図1 キーチェーンとインタフェースの設定の関係

送信側は、パケットとキーの文字列から MD5 のダイジェストを計算してパケットに付け、受信側は同じ計算をして一致したパケットだけを受け入れます。ダイジェストにはキー ID も一緒に載せるので、受信側は同じ ID のキーで照合します。

検証構成

R2 と R3 は、すでに EIGRP AS 100 のネイバーになっています。基本設定は EIGRP の基本設定とネイバー・ルーティングテーブルの確認 を参照してください。

EIGRP AS 100 Lo02.2.2.2/32Lo03.3.3.3/32 R2R3 .2.3 192.168.23.0/24 Fa0/0.23 Fa0/0.23
図2 検証構成

キーチェーンを作る

認証で使うキーの ID と文字列を、キーチェーンに登録します。「チェーン」の名前のとおり、ID を変えて複数のキーを登録できます。ここでは、キーチェーン名を EIGRP-KEY、キー ID を 1、文字列を CISCO にします。

R2

R2(config)# key chain EIGRP-KEY 
R2(config-keychain)# key 1     
R2(config-keychain-key)# key-string CISCO 

R3

R3(config)# key chain EIGRP-KEY 
R3(config-keychain)# key 1 
R3(config-keychain-key)#  key-string CISCO 

キーチェーン名はルータの中だけで使う名前なので、R2 と R3 で同じにする必要はありません。そろえる必要があるのは、キー ID と文字列です。

インタフェースで MD5 認証を有効にする

R2 の R3 側インタフェースで、MD5 認証を有効にし、キーチェーンを適用します。どちらのコマンドにも EIGRP の AS 番号を入れます。

R2

R2(config)# interface fastEthernet 0/0.23 
R2(config-subif)# ip authentication mode eigrp 100 md5 
R2(config-subif)# ip authentication key-chain eigrp 100 EIGRP-KEY 
コマンド意味
ip authentication mode eigrp 100 md5このインタフェースの EIGRP(AS 100)で MD5 認証を使う
ip authentication key-chain eigrp 100 EIGRP-KEY認証に使うキーチェーンを指定する

設定した直後に、R3 とのネイバーがダウンします。R3 はまだ認証を設定していないので、R2 は R3 の Hello を受け入れられません。

R2

R2#
%DUAL-5-NBRCHANGE: EIGRP-IPv4 100: Neighbor 192.168.23.3 (FastEthernet0/0.23) is 
down: authentication mode changed

R3 にも同じ設定をします。

R3

R3(config)# interface fastEthernet 0/0.23 
R3(config-subif)# ip authentication mode eigrp 100 md5 
R3(config-subif)# ip authentication key-chain eigrp 100 EIGRP-KEY 

しばらくすると、ネイバーが確立します。

R2

R2#
%DUAL-5-NBRCHANGE: EIGRP-IPv4 100: Neighbor 192.168.23.3 (FastEthernet0/0.23) is up
: new adjacency

パケットキャプチャ:Hello に付いた認証情報

R2 が送る Hello をキャプチャすると、Authentication MD5 の TLV が付き、キーの文字列から計算したダイジェストが入っています。

画面イメージについて

この記事の画面は、実際の画面ではなく、検証時の画面から見るポイントを抜き出して描いたイメージです。バージョンによって、項目の並びや表記は変わります。

パケットキャプチャ(Wireshark):MD5 認証付きの Hello画面イメージ
▸ Internet Protocol Version 4, Src: 192.168.23.2, Dst: 224.0.0.10▾ Cisco EIGRP    Version: 2    Opcode: Hello (5)    Checksum: 0xa2f1 [correct]    [Checksum Status: Good]  ▸ Flags: 0x00000000    Sequence: 0    Acknowledge: 0    Virtual Router ID: 0 (Address-Family)    Autonomous System: 1001  ▾ Authentication MD5      Type: Authentication (0x0002)2      Length: 403      Type: MD5 (2)      Length: 164      Key ID: 1      Key Sequence: 0      Nullpad: 00000000000000005      Digest: f180500ce3f1cee30d49c425f59a90d3  ▾ Parameters      Type: Parameters (0x0001)      Length: 12      K1: 1      K2: 0      K3: 1      K4: 0      K5: 0      K6: 0      Hold Time: 15  ▸ Software Version: EIGRP=10.0, TLV=2.0
図3 MD5 認証付きの Hello(実際の画面ではなく、表示内容のポイントを示したイメージです)
No.表示意味
1Authentication MD5認証の TLV(Type 0x0002)
2Length: 40認証 TLV 全体の長さ。認証なしの Hello より 40 バイト長くなる
3Type: MD5 (2)認証の種類が MD5。続く Length: 16 はダイジェストの長さ(16 バイト=128 ビット)
4Key ID: 1使ったキーの ID。キーチェーンの key 1
5Digestキーの文字列とパケットから計算したダイジェスト。文字列そのものは入っていない

キーの文字列が違う場合

R3 のキーの文字列を CISCO から CISCO1 に変えてみます。

R3

R3(config)# key chain EIGRP-KEY 
R3(config-keychain)# key 1
R3(config-keychain-key)# key-string CISCO1

しばらくすると、ネイバーがダウンします。理由は Auth failure(認証の失敗)です。

R3

%DUAL-5-NBRCHANGE: EIGRP-IPv4 100: Neighbor 192.168.23.2 (FastEthernet0/0.23) is 
down: Auth failure

R2 の debug eigrp packets でも、キー ID 1 のダイジェストが合わず、R3 からの Hello(opcode 5)を捨てていることがわかります。

R2

R2# debug eigrp packets
    (UPDATE, REQUEST, QUERY, REPLY, HELLO, IPXSAP, PROBE, ACK, STUB, 
SIAQUERY, SIAREPLY)
EIGRP Packet debugging is on
R2#
EIGRP: pkt key id = 1, authentication mismatch
EIGRP: Fa0/0.23: ignored packet from 192.168.23.3, opcode = 5 (invalid authentication)
EIGRP: Sending HELLO on Fa0/0.23 - paklen 60
AS 100, Flags 0x0:(NULL), Seq 0/0 interfaceQ 0/0 iidbQ un/rely 0/0

同じ debug の Sending HELLO on Fa0/0.23 - paklen 60 は、R2 が認証付きの Hello を送っていることを示しています。認証なしでは 20(Parameters の 12 と Software Version の 8)だったので、認証 TLV の 40 バイトが増えています。

R3 のキーの文字列を CISCO に戻します。

R3

R3(config)# key chain EIGRP-KEY 
R3(config-keychain)# key 1
R3(config-keychain-key)# key-string CISCO

ネイバーが確立した後に R2 で debug を見ると、キー ID 1 の MD5 認証付きのパケットを受け取っています。

R2

R2# debug eigrp packets
    (UPDATE, REQUEST, QUERY, REPLY, HELLO, IPXSAP, PROBE, ACK, STUB, 
SIAQUERY, SIAREPLY)
EIGRP Packet debugging is on

EIGRP: received packet with MD5 authentication, key id = 1
EIGRP: Received HELLO on Fa0/0.23 - paklen 70 nbr 192.168.23.3
AS 100, Flags 0x0:(NULL), Seq 0/0 interfaceQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/0

キーチェーンを適用しない場合

R2 と R3 の両方でキーチェーンの適用を外し、MD5 認証の有効化だけを残します。

R2

R2(config)# interface FastEthernet0/0.23 
R2(config-subif)# no ip authentication key-chain eigrp 100 EIGRP-KEY

R3

R3(config)# interface FastEthernet0/0.23
R3(config-subif)# no ip authentication key-chain eigrp 100 EIGRP-KEY

しばらく待ってもネイバーは確立しません。debug を見ると、キーチェーンがないために、受け取ったパケットを捨てています。両側で「キーなし」にそろえても、認証は成り立ちません。

R2

R2# debug eigrp packets 
    (UPDATE, REQUEST, QUERY, REPLY, HELLO, IPXSAP, PROBE, ACK, STUB, 
SIAQUERY, SIAREPLY)
EIGRP Packet debugging is on

EIGRP: Fa0/0.23: ignored packet from 192.168.23.3, 
opcode = 5 (missing authentication or key-chain missing)
キーを入れ替えたいとき

キーチェーンに複数のキーを登録すると、送信には有効なキーのうち番号が最も小さいものが使われます。キーに send-lifetime(送信に使う期間)と accept-lifetime(受信を受け付ける期間)を設定すれば、ネイバーを切らずに期限でキーを切り替えられます。期間で切り替える場合は、ルータの時刻を NTP などで合わせておく必要があります。

うまくいかないときの確認

ログ・debugよくある原因確認すること
authentication mode changed片側だけ認証を有効にした(設定の途中)もう一方のルータにも同じ設定が入っているか
Auth failure / authentication mismatchキーの文字列が違う両側の key-string が同じか(大文字・小文字も区別される)
key-chain missingキーチェーンを適用していない、または名前の打ち間違いip authentication key-chain のキーチェーン名と、key chain の名前が同じか

まとめ

項目内容
キーチェーンkey chain <名前> → key <ID> → key-string <文字列>
認証の有効化ip authentication mode eigrp <AS> md5(インタフェース)
キーチェーンの適用ip authentication key-chain eigrp <AS> <名前>(インタフェース)
そろえるものキー ID と文字列(キーチェーン名はそろえなくてよい)
SHA-256 を使う場合名前付きモードで設定する(ネイバー認証(SHA-256))

コメント