フレッツ光からYAMAHA RTX1200を使いAmazon VPCにハードウェアVPN接続する手順

最高に楽しかった8月上旬の二泊三日海キャンプを回想しながら、提案書をカキカキしているMMM代表の国本です。

AWSでEC2やRDS等のAWSリソースを利用する場合、AWSクラウド上に論理的に区分されたプライベートネットワーク空間であるAmazon Virtual Private Cloud(Amazon VPC)内に配備します。

Amazon VPC内に配備されている各種リソースへのアクセス(SSHなど)は

  1. 固定IPアドレスで接続制限を実施した踏み台サーバー(Bastionノード)経由
  2. Amazon VPCとのVPN(Virtual Private Network)接続経由
  3. AWS Direct Connectを利用した専用線接続

のいずれかの方法を選択する形となりますが、今回は2.のAmazon VPCとのVPN接続(ハードウェアVPN)について、宅内のインターネット回線を活用した簡易的な接続検証の手順を簡単にご紹介しようと思います。

1.前提とする検証環境

今回は『Amazon VPCへの簡易的なVPN接続検証を実施し手順化する』事を第一の目的とし、検証環境は下記を準備しました。

接続回線

宅内で契約済みの フレッツ光ファミリー・ハイスピードタイプ をそのまま利用する形とし、固定IPアドレスの取得は行いません。(検証完了後にVPN接続を即時削除するため)

VPN接続機器(ルーター)

Amazon VPC公式FAQの Q: Amazon VPC で機能することが知られているカスタマーゲートウェイデバイスにはどのようなものがありますか? で検証デバイスとして表記され、企業オフィスでも数多く採用されている YAMAHA RTX1200 を利用します。

よって、今回以降ご紹介するルーター側の設定ファイル(コンフィグレーションファイル)はYAMAHA RTX1200の利用を前提とした内容となります。

余談:RTX1200は中古であれば15,000円前後で購入可能なので、検証用途としておすすめ…

ルーティング方式

Amazon VPCでは、VPN接続時のルーティング方式について、静的、動的を選択することが可能ですが、今回の検証はRTX1200もサポートしているBorder Gateway Protocol(BGP)を使った動的ルーティングを選択します。

ネットワーク構成(イメージ)

検証で利用するネットワークの構成イメージはこのような前提です。

対象 CIDR(Classless Inter-Domain Routing)
Amazon VPC CIDRブロック 10.0.0.0/16
Amazon VPC サブネット 10.0.0.0/24
宅内サブネット 192.168.0.0/24
機器 IPアドレス
YAMAHA RTX1200プライベートIPアドレス 192.168.0.1
Amazon VPCに配備のEC2プライベートIPアドレス 10.0.0.100

VPNの接続検証方法

VPNでの接続確認の方法は簡易的な形で、宅内に設置したRTX1200とWi-Fi接続しているMacbook Proから、VPNを経由し、プライベートIPアドレスでPing疎通ができることを確認します。

2.RTX1200をPPPoE接続

今回は、宅内検証用に(中古で)RTX1200を購入した為、YAMAHA公式サイトに記載されている 高速回線(光ファイバー)を利用する を前提にRTX1200をPPPoE(Point-to-Point Protocol over Ethernet)経由でインターネット接続します。

宅内の接続構成はこのような形とします。

まず、宅内に設置されている光回線終端装置(ONU)とRTX1200を接続し、RTX1200にWi-FiのアクセスポイントとしてAirMac Expressを繋げることで、Wi-Fi経由で1台のMacbook ProをNAT配下のインターネット接続とします。

ONU側でPPPoE接続のルーター機能を有しているものが多いかと思いますが、今回はRTX1200からPPPoE接続を行うため、ONU側はPPPoEパススルーをセットします。

RTX1200の最小設定ファイルは以下の通りです。

1
ip route default gateway pp 1
ip lan1 address 192.168.0.1/24
pp select 1
pp always-on on
pppoe use lan2
pp auth accept pap chap
pp auth myname 契約プロバイダーから配布された接続用ID パスワード
ppp lcp mru on 1454
ppp ipcp ipaddress on
ppp ipcp msext on
ip pp mtu 1454
ip pp nat descriptor 1
pp enable 1
nat descriptor type 1 masquerade
dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.0.100-192.168.0.200/24
dns server 8.8.8.8
dns private address spoof on

LAN1ポートを宅内のプライベート用に、LAN2ポートをPPPoE接続の外部インターフェースにセットし、Wi-Fi接続向けのDHCPサーバー機能と、DNSは一旦Google社が公開しているサーバー(8.8.8.8)をセットしています。

※フィルター設定に関してはコンフィグ表示が冗長になるため、一旦除外

上記コンフィグを設定後、PPPoEの接続ステータスをRTX1200のコンソールから show status pp 1 コマンドを使ってチェックします。

1
# show status pp 1
PP[01]:
説明:
PPPoEセッションは接続されています
接続相手: xxxxxxxxx-xxxxxxxxxx
通信時間: 1時間58分52秒
受信: 380429 パケット [288756495 オクテット]  負荷: 0.0%
送信: 39109 パケット [39829260 オクテット]  負荷: 0.0%
PPPオプション
    LCP Local: Magic-Number MRU, Remote: CHAP Magic-Number MRU
    IPCP Local: IP-Address Primary-DNS(xxx.xxx.xxx.xxx) Secondary-DNS(xxx.xxx.xxx.xxx), Remote: IP-Address
    PP IP Address Local: xxx.xxx.xxx.xxx, Remote: xxx.xxx.xxx.xxx
    CCP: None

PPPoEセッションは接続されています というメッセージが表示されていれば、正常にインターネット接続されています。

もし、エラーメッセージが表示されている場合は、メッセージを確認の上、接続用のIDやパスワードに誤りはないか?LAN2ポートを一旦非アクティブ化 → アクティブ化してみるなどを実施し正常に接続できる状態にします。

3.Amazon VPCの準備

宅内側のインターネット接続が完了したら、AWS側にVPCを作成します。
今回はあくまでVPNの簡易的な接続検証ですので、新たに一つ専用のVPCを作成します。

先にネットワーク構成(イメージ)で記載の通り 10.0.0.0/16 のIPv4 CIDRブロックを定義して、VPCを作成します。

次に、接続用のEC2を配備するVPCサブネットを定義します。

こちらもネットワーク構成(イメージ)で記載の通り 10.0.0.0/24 のCIDRブロックを定義します。

サブネットの定義が終わったら、今度はVPC内のルートテーブルを新規作成し、作成済みのVPCサブネットをルートテーブルにアタッチします。

4.カスタマーゲートウェイ(CGW)と仮想プライベートゲートウェイ(VGW)の準備

次にVPN接続で必要となるVPNアンカーの設定を進めていきます。

ネットワーク構成(イメージ)を再掲しますが。

Amazon VPCのVPN設定においては上図に記載の、 仮想プライベートゲートウェイ(VGW)カスタマーゲートウェイ(CGW) の設定が必要となります。

カスタマーゲートウェイ(CGW) はAmazon VPCとVPN接続する装置を指しており、今回の検証構成においてはRTX1200となります。

もう一方の 仮想プライベートゲートウェイ(VGW) は Amazon VPC側のVPN受け口となるコンセントレータとなります。

それでは、まず カスタマーゲートウェイ(CGW) から作成していきましょう。

今回はBGPを使った動的ルーティングを行うため、ルーティングは 動的 を選択し、BGP用のASN(AS番号)はプライベートナンバーである 64512 を入力します。

なお、カスタマーゲートウェイ(CGW) のIPアドレスはRTX1200側のグローバルIPアドレスとなりますが、今回はあくまで暫定的な検証であり、固定IPアドレスを取得していない為、現在RTX1200に動的付与されたグローバルIPアドレスを確認して、セットします。

確認方法は RTX1200のコンソールで show status pp 1 を入力し
PP IP Address Local: xxx.xxx.xxx.xxx
と表示された箇所のグローバルIPアドレスとなります。

次にAmazon VPC側の受け口となる 仮想プライベートゲートウェイ(VGW) を定義し、Amazon VPCにアタッチします。

Amazon VPCに 仮想プライベートゲートウェイ(VGW) をアタッチした後、VPC側のルートテーブルのデフォルト・ゲートウェイとして 仮想プライベートゲートウェイ(VGW) をセットします。

また、ルーティング情報を伝搬させるために、アタッチした 仮想プライベートゲートウェイ(VGW) の伝搬をONにします。

5.Amazon VPC側のVPN接続の作成

これまでの手順でAmazon VPCの下準備が完了している為、Amazon VPC側にVPN接続設定を追加します。

仮想プライベートゲートウェイ(VGW)カスタマーゲートウェイ(CGW) は先の手順で作成済みのものを選択し、ルーティングオプションは動的(BGP)を選択し作成します。

VPN接続を作成した後、カスタマーゲートウェイ(CGW) の設定ファイルをダウンロードできるようになるので。

ベンダー Yamaha プラットフォーム RTX Routes ソフトウェア Rev.10.01.16+ を選択し、RTXルーター用のコンフィグレーションをダウンロードしておきます。

これでAmazon VPC側のVPN設定は完了です。

6.宅内側のVPN接続設定

Amazon VPC側の設定が完了しているため、今度は宅内側のRTX1200にVPN接続設定を追加していきます。

基本的には5.の手順でAmazon VPCからダウンロードしたRTXルーター用の設定ファイルをセットすれば問題ないのですが、設定ファイルを投入前に、2点修正を行います。

RTX1200のセキュリティゲートウェイIPアドレスをローカルIPに

ダウンロードしたRTXルーター設定ファイルを開くと

ipsec ike local address という設定にRTX1200側のグローバルIPアドレスがセットされている状態になっているかと思います。

今回の宅内ネットワーク構成の場合、この値はプライベートIPアドレスをセットする必要があるため。

ipsec ike local address 1 192.168.0.1
ipsec ike local address 2 192.168.0.1

ipsec ike local address 1 と ipsec ike local address 2 をRTX1200のプライベートIPアドレスである 192.168.0.1 に変更します。

NAT Traversal(NAT-T)有効化

今回の宅内ネットワーク構成の場合、NAT配下からの接続となるため、NAT Traversal(NAT-T)を有効化します。

ipsec ike nat-traversal 1 on
ipsec ike nat-traversal 2 on

上記変更を含めた、RTX1200のコンフィグレーションは下記のとおりとなります。

1
ip route default gateway pp 1
ip lan1 address 192.168.0.1/24
pp select 1
pp always-on on
pppoe use lan2
pp auth accept pap chap
pp auth myname 契約プロバイダーから配布された接続用ID パスワード
ppp lcp mru on 1454
ppp ipcp ipaddress on
ppp ipcp msext on
ip pp mtu 1454
ip pp nat descriptor 1
pp enable 1
tunnel select 1
ipsec tunnel 201
ipsec sa policy 201 1 esp aes-cbc sha-hmac
ipsec ike duration ipsec-sa 1 3600
ipsec ike encryption 1 aes-cbc
ipsec ike group 1 modp1024
ipsec ike hash 1 sha
ipsec ike keepalive use 1 on dpd 10 3
ipsec ike local address 1 192.168.0.1
ipsec ike nat-traversal 1 on
ipsec ike pfs 1 on
ipsec ike pre-shared-key 1 text xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ipsec ike remote address 1 xxx.xxx.xxx.xxx
ipsec tunnel outer df-bit clear
ip tunnel address xxx.xxx.xxx.xxx/30
ip tunnel remote address xxx.xxx.xxx.xxx
ip tunnel tcp mss limit 1379
tunnel enable 1
tunnel select 2
ipsec tunnel 202
ipsec sa policy 202 2 esp aes-cbc sha-hmac
ipsec ike duration ipsec-sa 2 3600
ipsec ike encryption 2 aes-cbc
ipsec ike group 2 modp1024
ipsec ike hash 2 sha
ipsec ike keepalive use 2 on dpd 10 3
ipsec ike local address 2 192.168.0.1
ipsec ike nat-traversal 2 on
ipsec ike pfs 2 on
ipsec ike pre-shared-key 2 text xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ipsec ike remote address 2 xxx.xxx.xxx.xxx
ipsec tunnel outer df-bit clear
ip tunnel address xxx.xxx.xxx.xxx/30
ip tunnel remote address xxx.xxx.xxx.xxx
ip tunnel tcp mss limit 1379
tunnel enable 2
nat descriptor type 1 masquerade
bgp use on
bgp autonomous-system 64512
bgp neighbor 1 10124 xxx.xxx.xxx.xxx hold-time=30 local-address=xxx.xxx.xxx.xxx
bgp neighbor 2 10124 xxx.xxx.xxx.xxx hold-time=30 local-address=xxx.xxx.xxx.xxx
bgp import filter 1 equal 0.0.0.0/0
bgp import 10124 static filter 1
ipsec auto refresh on
dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.0.100-192.168.0.200/24
dns server 8.8.8.8
dns private address spoof on

※IPアドレスや事前共有鍵などはマスキングしています

RTX1200側のVPN設定が完了したら、正常にAmazon VPCとVPN接続されているか show status tunnel コマンドを入力して確認してみます。

1
> show status tunnel 1
TUNNEL[1]:
説明:
  インタフェースの種類: IPsec
  トンネルインタフェースは接続されています
  開始: 2017/08/14 07:00:58
  通信時間: 1時間20分34秒
  受信: (IPv4) 1015 パケット [62860 オクテット]
        (IPv6) 0 パケット [0 オクテット]
  送信: (IPv4) 1028 パケット [63061 オクテット]
        (IPv6) 0 パケット [0 オクテット]
> show status tunnel 2
TUNNEL[2]:
説明:
  インタフェースの種類: IPsec
  トンネルインタフェースは接続されています
  開始: 2017/08/14 07:01:23
  通信時間: 1時間20分12秒
  受信: (IPv4) 6285 パケット [319129 オクテット]
        (IPv6) 0 パケット [0 オクテット]
  送信: (IPv4) 13979 パケット [9084808 オクテット]
        (IPv6) 0 パケット [0 オクテット]

次にBGPのステータスを show status bgp neighbor コマンドで確認してみます。

1
> show status bgp neighbor 1つ目のトンネルIPアドレス
BGP neighbor is xxx.xxx.xxx.xxx, remote AS 10124, local AS 64512, external link
  BGP version 4, remote router ID xxx.xxx.xxx.xxx
  BGP state = Established, up for 01:11:46
  Last read 00:00:03, hold time is 30, keepalive interval is 10 seconds
  Received 611 messages, 1 notifications, 0 in queue
  Sent 622 messages, 3 notifications, 0 in queue
  Connection established 3; dropped 2
  Last reset 01:13:47
Local host: xxx.xxx.xxx.xxx, Local port: 1037
Foreign host: xxx.xxx.xxx.xxx, Foreign port: 179


> show status bgp neighbor 2つ目のトンネルIPアドレス
BGP neighbor is xxx.xxx.xxx.xxx, remote AS 10124, local AS 64512, external link
  BGP version 4, remote router ID xxx.xxx.xxx.xxx
  BGP state = Established, up for 01:12:43
  Last read 00:00:10, hold time is 30, keepalive interval is 10 seconds
  Received 613 messages, 1 notifications, 0 in queue
  Sent 627 messages, 4 notifications, 0 in queue
  Connection established 3; dropped 2
  Last reset 01:14:20
Local host: xxx.xxx.xxx.xxx, Local port: 1036
Foreign host: xxx.xxx.xxx.xxx, Foreign port: 179

IPSecトンネルが接続され、BGPがEstablishedとなっていれば、正常にVPN接続が完了しています。

AWS Console側を確認してみると

このように2つのトンネルが UP の状況になっています。

7.宅内からVPN経由でPingを送信

これまでの手順で宅内とAmazon VPCはVPN接続が確立されているため、Amazon VPC内に配備したAmazon EC2インスタンスについてPingを送信してみます。
※EC2の構築手順は不要かと思いますので、省いています

3度目のイメージ掲載となりますが…。

まず 10.0.0.100 が付与されているEC2に対して、RTX1200からPingを送信します。

1
> ping 10.0.0.100
10.0.0.100から受信: シーケンス番号=0 ttl=253 時間=7.590ミリ秒
10.0.0.100から受信: シーケンス番号=1 ttl=253 時間=7.256ミリ秒
10.0.0.100から受信: シーケンス番号=2 ttl=253 時間=7.394ミリ秒
10.0.0.100から受信: シーケンス番号=3 ttl=253 時間=6.817ミリ秒

4個のパケットを送信し、4個のパケットを受信しました。0.0%パケットロス
往復遅延 最低/平均/最大 = 6.817/7.264/7.590 ミリ秒

次に、AirMacのWi-Fi経由で接続しているMacbook Proから同じくPingを送信します。

1
Macbook% ping 10.0.0.100
PING 10.0.0.100 (10.0.0.100): 56 data bytes
64 bytes from 10.0.0.100: icmp_seq=0 ttl=253 time=8.579 ms
64 bytes from 10.0.0.100: icmp_seq=1 ttl=253 time=8.282 ms
64 bytes from 10.0.0.100: icmp_seq=2 ttl=253 time=9.030 ms
64 bytes from 10.0.0.100: icmp_seq=3 ttl=253 time=7.986 ms
^C
--- 10.0.0.100 ping statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 7.986/8.469/9.030/0.386 ms

レイテンシーはさておき、きちんと応答があります。
以上でVPNの接続検証まで完了となります。

まとめ

今回、VPN接続検証で利用したRTX1200ルーターを初め、AWS側で検証済みルーターは、中古であれば一万円前後で入手することも可能ですので、皆さんもお気軽に宅内のインターネット環境を使ってAmazon VPCとのVPN接続をお試し下さい。

ではでは。

このエントリーをはてなブックマークに追加