Cisco ISR 2911で自宅からAmazon VPCにSite-to-Site VPNを構築
Cisco ISR 2911 ルータを使って、自宅ネットワークと Amazon VPC の Site-to-Site VPN を構築してみました。本記事では、ISR ルータの securityk9 ライセンス確認から、VPC の Customer Gateway / Virtual Private Gateway 作成、NAT 環境での設定調整まで、実際の構築手順を紹介します。
最近、自宅に大量(15台程度)のCisco ISR 2911ルータが溜まっています。ヤフオクで出品しても3000円程度しか値段が付かないので、処分に困っています。昔、CiscoのASAを利用して自宅のネットワークからAmazon VPCにSite-to-Site VPNを構築したことはあるが、ISRルータでもできるのでは?と思い、やってみました。
まず準備作業として、ISRルータのIOSバージョンとライセンスを確認しておきます。バージョンは、よほど古くなければ問題ありません。
1 2 3 4 5 6 | |
IPSec VPNを設定するには、「securityk9」というライセンスフィーチャーが必要です。securityk9がインストールされていない・有効化されていないISRルータではVPN関連のコマンドが利用できません。試しにsecurityk9が存在しない・有効化されていない場合のcryptoコマンドのヘルプを見てみると:
1 2 3 4 5 | |
一方、securityk9が有効な場合だと、以下の結果になります:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
ちなみにsecurityk9ライセンスは、permanentもしくはRTU(RightToUse)のどちらの形態になります。RTUの場合は、以下のコマンドで有効化しておく必要があります:
1 2 | |
設定を保存してから再起動するとライセンスが有効になります:
1 2 3 4 5 6 7 8 | |
これで準備作業は完了です。
システム構成
今回は検証のため最もシンプルな構成でシステムを作っていきます。AWS側はPrivate SubnetのみのVPCを作成します。自宅の環境では、ISR 2911ルータのg0/0ポートをLANケーブルでブロードバンドルータにつなげるだけです。VPNアクセスの際に、パケットは自分のPCからいったん2911に流れ、トンネリングされブロードバンドルータ、インターネット経由でAWSのVGWに到着し、VPC内のEC2インスタンスに転送されます。
1. ISRルータのルーティング設定
ISRルータでは、まずインターフェースのIPアドレスと、インターネットにアクセスするためのスタティックルートを設定します。VPN接続においてBGPのルーティング設定も必要ですが、これは後ほどAWSから提供されるコマンドに含まれているのでこの段階では設定しません。
1 2 3 4 5 6 7 8 | |
2. VPCでCGWとVGWを作成
CGW(Cutomer Gateway)とは、Amazon VPCにおいてユーザ側デバイス(今回の場合は私の自宅にあるCisco ISR 2911)を表しているエンティティです。一方、VGW(Virtual Private Gateway)は、IGW(Internet Gateway)と同様にVPCにアタッチするエンティティです。VGWとCGWを作成してから、VGWとCGWとの間に、「Site-to-Site VPN」という接続を設定するという流れになります。
では、まずCGWを作成していきます。CGWの作成に必要な情報は1つだけです。自宅のブロードバンドルーターのインターネット側のIPアドレス、つまりグローバルIPです。ちなみに自宅のグローバルIPを確認するには、AWSから提供されているURL「http://checkip.amazonaws.com/」が便利です。
ここで注意してほしいのは、1個のIPアドレスにつき1つのCGWしか作成できません。同じIPアドレスで新しいCGWを作成しようとすると、同じIPアドレスの古いCGWが上書きされます。
続けてVGWを作成します。VGWとVPCとの関係は、1対1です。つまり1つのVGWは複数のVPCにアタッチできません。1つのVPCに複数のVGWをアタッチすることもできません。VGW作成には特にIPアドレスなどを情報を必要としません。Amazon側のASNはデフォルトで64512になりますが、既存環境のAS番号と重複していない限り変更する必要はありません。
3. Site-to-Site VPN接続を作成
CGWとVGWを作成したら、Site-to-Site VPN接続を作成します。先ほど作成していたCGWとVGWを指定する以外のオプションは、デフォルトのままで構いません(セキュリティ向上のために通せるIPアドレス範囲を絞ることができますが、今回はいったん制限なしでいきます)。
また、ルーティングオプションについては、ISR 2911がBGPをサポートしているため、「動的」を選択しています。BGPをサポートしない機種の場合、「静的」を選択したうえ手動でルーティングを設定する必要があります。
4. NAT Traversalを考慮したConfig修正
VPNを作成した直後、下記のようにトンネルのステータスが「Down」になっており接続できていない状態です。これを解消するには、ISR 2911側でVPNの設定を投入する必要があります。
作成したVPN接続の画面で、「設定をダウンロードする」ボタンをクリックするとサンプルの設定ファイル(Config)をダウンロードできます。CiscoのISRシリーズを選択してダウンロードします。
ここでダウンロードしたConfigは、そのまま2911に投入してはいけません。なぜかというと、2911のインターフェースに設定されているIPアドレスが、AWSから認識しているIPアドレスが異なっています。つまり、2911とAWSとの間にNATが存在します。そのため、このConfigにある自宅のグローバルIPを、すべて2911の外部向けIP(この例では192.168.1.241)に置換する必要があります。CiscoのISRルータは、自動的にNAT Traversalに対応しているので、特に追加の設定は不要です。
実際に置換を行った個所は、それぞれのトンネル設定に3カ所で合計6カ所になります。
1 2 3 4 5 6 7 8 | |
また、IOSのバージョンによるものかもしれませんが、下記コマンドが受け付けられなかったので、少し変更しました。
1 2 3 4 5 | |
上記の変更をしたら、そのまま2911に投入します。投入後、数十秒待つと両方のトンネルが「Up」ステータスに変わります。
5. VPC側のルーティング設定
最後にVPC側で、自宅へのルートを追加します。
6. 動作確認
Amazon VPCへのVPNアクセスと、インターネットアクセスを同時に行いたいので、PCに手動でルートを追加します(インターネットアクセスが不要なら、デフォルトゲートウェイを2911のIPアドレスに向けるとば良い)。
1 | |
PCにルートを追加したら、pingもしくはtracertで、VPC内とインターネットそれぞれに到達することを確認します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | |







