前回は、VPNを構築する際に発生しがちなトラブルの解決方法を紹介しました。トラブルの原因の多くは「お互いのルータの設定がどこか間違っている」「インターネット接続に失敗している」かであり、設定を詳細に見直すことで解決できる場合がほとんどでしょう。

しかし、設定を見直しても、VPNの構築に失敗してしまうケースがあります。そんな時に原因を探るカギとなるのが「SA情報」です。そこで今回は、そのSA情報について詳しく見ていきます。

SA情報とは

IPsecでVPNを確立する際、ルータは通信相手との間にSAと呼ばれる論理的なコネクションを確立します。SAとは「Security Association(セキュリティアソシエーション)」のことで、IPsecで使用する鍵や鍵の寿命、暗号アルゴリズムや認証アルゴリズムなどのセキュリティ情報を管理しているものです。

SAは、VPNのトラフィックごとに確立され、それぞれ自動的にIDが振られます。したがって、SAが確立された後、ルータはSA情報に基づいてVPN通信を行います。

また、SA自身も鍵の寿命に合わせて、寿命を持ちます。SAが寿命を持つ理由は、同じ暗号鍵を使い続けると暗号鍵を漏洩してしまうリスクが高くなるからです。つまり、SAは定期的に更新されています。

SAの存在を確認する

まずは、VPNが確立している状態で、そのSAを見てみましょう。コマンドの実行は、ルータのWebGUIにログインし、「コマンドの実行」画面から行います。SAの存在を確認する時は、次のコマンドを実行します。

show ipsec sa

すると、以下のようなレスポンスが得られます。

この「sa」という項目がSAの存在を示しています。SAの存在を確認できれば、IPsecトンネルは確立しています。このケースでは6つのSAがあります。

実は、IPsecトンネルは3つのSAから確立されます。上記のケースでは、1~3のSAによってIPsecトンネルは構成されています。これら3つのSAは、以下の役割を果たします。

(1)鍵交換用SA(ISAKMP SA)

VPN設定の際、お互いのルータに「認証鍵」「認証アルゴリズム」「暗号アルゴリズム」の3つを設定しました。これらを用いて、お互いのルータで鍵作成情報がやり取りされます。やり取りした鍵作成情報が正しい場合に「ISAKMP SA」が確立されます。

(2)データ送信SA(IPsec SA send)

VPNで通信する対象のデータが発生すると、IPsec SAを確立させるためのネゴシエーションが行われます。(1)で作ったISAKMP SAを使って、IPsec SAを確立します。IPsec SAは、送信用と受信用とで別々になっており、一方通行です。なお、IPsec SAはある一定期間経過すると消滅します。

(3)データ受信SA(IPsec SA recv)

(2)と同様に作られたIPsec SAで受信用です。

SAの中身を確認する

さらに、SAの中身を見てみましょう。SAの中身を確認する際は、次のコマンドを実行します。

show ipsec sa gateway 1 detail

すると、以下のようなレスポンスが得られます。

各SAに、アルゴリズムや鍵が保持されていることがわかるでしょう。VPN接続が確立されている、つまり、IPsecトンネルが確立されている相互のルータでは、お互いに同じ値を含んだSAを持っています。

VPN接続が確立しない場合

VPN接続が確立されている状態とは、つまり、お互いのルータで同じ値を含んだSAを持ち合っている状態です。逆に、VPNが確立できていない状態は、少なくともどちらかのルータのSAが消失している状態です。

例えば、ルータの再起動を行うと、SAは消失します。それでも、相手方ルータは再接続を試みます。この時、SAを新規作成するような設定となっていない場合は、SAを再作成しないため、VPN接続は確立されません。以下のコマンドは、SAが見つからなかった場合、SAの自動更新を有効にするものです。

ipsec auto refresh on

さらに、鍵交換の失敗を検出する機能として、IKEキープアライブがあります。IPsecトンネルの障害を検出するために用いるもので、接続先のルータとの通信が可能な状態であるかを監視するものです。

ipsec ike keepalive use 1 on

いずれも「on」にしておくと、SAを消失した時にIPsecトンネルが再作成されるので、VPN接続が確立できないトラブルに対処できそうです。

そのほか、以下のようなコマンドがあります。先ほども述べましたが、VPNが確立できていない状態とは、どちらかのルータのSAが消失している場合を指します。そこで、SAの寿命を伸ばしたり、SAを再作成したりするようなコマンドを発行してみましょう。

SAを削除する

ipsec sa delete all

ISAKMP SAの寿命を設定する

ipsec ike duration isakmp-sa 1 691200

IPsec SAの寿命を設定する

ipsec ike duration ipsec-sa 1 691200

今回は、IPsecトンネルを構成するSAについて説明しました。IPsec VPNの仕組みを理解する上で、SAを知ることは非常に重要ですね。

次回は、VPNを構築した後に始まるネットワークの保守について話を進めたます。保守の中心になる作業は「見える化」です。ヤマハルータに搭載されているLANマップなどを使ったネットワークの見える化について紹介します。