AWS(Amazon Web Service)のVPC(Virtual Private Cloud)は、AWS上に仮想ネットワークを構築することができます。VPCを使うことで以下のようなことが可能となります。
- 一つまたは複数の仮想ネットワークを構成し、インターネットと接続する。
インターネットおよびネットワーク間のネットワークレベルでアクセス制限を行う事が可能となる。 - VPCを既存ネットワークをVPN接続し、社内のネットワーク拡張として利用する事が可能となる。
- 上記の組み合わせで、インターネットに接続した一つまたは複数の仮想ネットワークと、既存ネットワーク間をVPN接続し、そのネットワーク間でアクセス制限を行う事が可能となる。
今回は、YAMAHA RTX1100を使用してAWS VPCをプライベートのデータセンタとして使用する構成をイメージして構築しました。使用したYAMAHA RTX1100は1世代前の機種で実勢価格は3万円台後半ですが、中古では7000円前後で取引されていますので、試すには使いやすいと思います。
内容
【ネットワーク構成図】
【事前準備】
準備した機材、サービスは次のとおりです。
- YAMAHA RTX1100
- 固定IP接続サービス(今回はインターリンクのZOOT Next for ADSL IP1を使用)
- AWSアカウント
ネットワーク構成は次のとおりです。
- LAN側ネットワーク 192.168.2.0/24
- RTX1100のLAN側IP 192.168.2.254/24
- PPPoEで接続するPP PP 1
- WAN側IP w.x.y.z
- VPCネットワーク 10.0.0.0/16
- VPCサブネット 10.0.1.0/24
【AWSの設定手順】
AWS側は以下の手順で構築します。
- AWSマネージメントコンソールよりVPCをクリックすると以下の画面に遷移します。
- 「Get started creating a VPC」をクリックすると以下の画面が表示されます
- ネットワーク構成が表示されますので、一番下にある「VPC with a Private Subnet Only and Hardware VPN Access」をクリックします。
- Continueをクリックすると以下の画面が表示されます。IP Assress: にインターネット接続時のIPアドレスを入力します。Specify the routing for the VPN Connectionは「Use Dynamic routing(require BGP)」を選択し、「Continue」をクリックします。
- VPCとして構築される構成が表示されます。 One VPC(VPC全体のネットワークアドレス) 「10.0.0.0/16」
One Subnet(VPCサブネット。実際に使用するネットワークアドレス) 「10.0.1.0/24」
One VPN Connection(VPN接続の設定)
Customer Gatewayに先ほど入力したこちらがインターネット接続する時のIP
RoutingがDynamic (require BGP)
上記であることを確認して「Create VPC」をクリックします。
- 以下の画面が表示されればVPCが構築中です。少し待つと構築が完了します。
- 「Your VPC has been created.」と表示されればVPCが構築完了です。このあと「Download Configuration」をクリックし、ルータ(ゲートウェイ)の構成をダウンロードします。
- 対応しているルータ(ゲートウェイ)から、Vender: YAMAHAを選択し、「Yes, Download」をクリックし、設定ファイルをダウンロードします。
- VPCの管理画面に戻ります
【RTX1100の設定手順】
- 固定IPの接続設定を行います。今回はフレッツを使用したIP1のメニューを使用しましたのでIPはIPCPで付与されます。通常のフレッツへの接続と同様の設定を行います(以下のconfigではフィルタは省略しています)。
ip route default gateway pp 1 ip lan1 address 192.168.2.254/24 pp select 1 pp always-on on pppoe use lan1 pppoe auto connect on pppoe auto disconnect on pp auth accept pap chap pp auth myname ID PW (インターリンクのID/PW) ppp lcp mru on 1454 ppp ipcp ipaddress on ppp ipcp msext on ppp ccp type none ip pp mtu 1454 ip pp nat descriptor 1 pp enable 1 nat descriptor type 1 masquerade nat descriptor address outer 1 ipcp nat descriptor address inner 1 192.168.2.1-192.168.2.254
- VPCとVPNで接続する際に使用するIPSecで使用するプロトコル(upd 500およびesp)を、RTX1100のLAN側IPにNATするよう、nat descriptor masquerade staticコマンドで以下の通り設定します。
nat descriptor masquerade static 1 1 192.168.2.254 udp 500 nat descriptor masquerade static 1 2 192.168.2.254 esp
- AWS設定の8でダウンロードしたファイルを開いて、コメント以外の部分をコピーアンドペーストします
IPSec Tunnel #1の設定tunnel select 1 ipsec ike encryption 1 aes-cbc ipsec ike group 1 modp1024 ipsec ike hash 1 sha ipsec ike pre-shared-key 1 text 共有鍵パスフレーズ ipsec tunnel 201 ipsec sa policy 201 1 esp aes-cbc sha-hmac ipsec ike duration ipsec-sa 1 3600 ipsec ike pfs 1 on ipsec tunnel outer df-bit clear ipsec ike keepalive use 1 on dpd 10 3 ipsec ike local address 1 w.x.y.z ipsec ike remote address 1 27.0.1.16 ip tunnel address 169.254.252.2/30 ip tunnel remote address 169.254.252.1 ip tunnel tcp mss limit 1387 tunnel enable 1 tunnel select none
IPSec Tunnel #2の設定
tunnel select 2 ipsec ike encryption 2 aes-cbc ipsec ike group 2 modp1024 ipsec ike hash 2 sha ipsec ike pre-shared-key 2 text 共有鍵パスフレーズ ipsec tunnel 202 ipsec sa policy 202 2 esp aes-cbc sha-hmac ipsec ike duration ipsec-sa 2 3600 ipsec ike pfs 2 on ipsec tunnel outer df-bit clear ipsec ike keepalive use 2 on dpd 10 3 ipsec ike local address 2 w.x.y.z ipsec ike remote address 2 27.0.1.144 ip tunnel address 169.254.252.6/30 ip tunnel remote address 169.254.252.5 ip tunnel tcp mss limit 1387 tunnel enable 2 tunnel select none
BGPの設定
bgp use on bgp autonomous-system 65000 bgp neighbor 1 10124 169.254.252.1 hold-time=30 local-address=169.254.252.2 bgp import filter 1 equal 0.0.0.0/0 bgp import 10124 static filter 1
IPSec設定の有効化
ipsec auto refresh on
BGPの設定の有効化
bgp configure refresh
以上でRTX1100の設定は完了です
【RTX1100の接続確認】
- インターネットに接続できていることを、show status pp 1を使用して確認します。
# show status pp 1 PP[01]: 説明: PPPoEセッションは接続されています 接続相手: brasa06xxxxx012 通信時間: 3日2時間4分34秒 受信: 1885578 パケット [2324895489 オクテット] 負荷: 0.0% 送信: 1001911 パケット [96222388 オクテット] 負荷: 0.0% PPPオプション LCP Local: Magic-Number MRU, Remote: CHAP Magic-Number MRU IPCP Local: IP-Address Primary-DNS(210.150.255.66) Secondary-DNS(203.138.71.154), Remote: IP-Address PP IP Address Local: w.x.y.z, Remote: 210.153.255.165 CCP: None #
- IPSecの状態を、show ipsec saコマンドで確認します。正常動作している場合、以下のように鍵交換が行われることが確認できます。
# show ipsec sa sa sgw connection dir life[s] remote-id -------------------------------------------------------------------------- 1 1 isakmp - 28795 27.0.1.16 2 2 isakmp - 28796 27.0.1.144 3 1 tun[001]esp send 3597 27.0.1.16 4 1 tun[001]esp recv 3597 27.0.1.16 5 2 tun[002]esp send 3598 27.0.1.144 6 2 tun[002]esp recv 3598 27.0.1.144 SA[1] 寿命: 28795秒 自分側の識別子: w.x.y.z 相手側の識別子: 27.0.1.16 プロトコル: IKE SPI: 8c fb b3 56 c8 a8 ae cb 6a 6f 79 f0 67 56 3c ab 鍵 : ** ** ** ** ** (confidential) ** ** ** ** ** ---------------------------------------------------- SA[2] 寿命: 28796秒 自分側の識別子: w.x.y.z 相手側の識別子: 27.0.1.144 プロトコル: IKE SPI: c0 d7 83 62 4f cb 79 af 46 5d 83 cc e8 63 2a bd 鍵 : ** ** ** ** ** (confidential) ** ** ** ** ** ---------------------------------------------------- SA[3] 寿命: 3597秒 自分側の識別子: w.x.y.z 相手側の識別子: 27.0.1.16 送受信方向: 送信 プロトコル: ESP (モード: tunnel) アルゴリズム: AES-CBC (認証: HMAC-SHA) SPI: 7f 2c 68 b6 鍵 : ** ** ** ** ** (confidential) ** ** ** ** ** ---------------------------------------------------- SA[4] 寿命: 3597秒 自分側の識別子: w.x.y.z 相手側の識別子: 27.0.1.16 送受信方向: 受信 プロトコル: ESP (モード: tunnel) アルゴリズム: AES-CBC (認証: HMAC-SHA) SPI: cb e4 e7 3f 鍵 : ** ** ** ** ** (confidential) ** ** ** ** ** ---------------------------------------------------- SA[5] 寿命: 3598秒 自分側の識別子: w.x.y.z 相手側の識別子: 27.0.1.144 送受信方向: 送信 プロトコル: ESP (モード: tunnel) アルゴリズム: AES-CBC (認証: HMAC-SHA) SPI: db 44 7e 99 鍵 : ** ** ** ** ** (confidential) ** ** ** ** ** ---------------------------------------------------- SA[6] 寿命: 3598秒 自分側の識別子: w.x.y.z 相手側の識別子: 27.0.1.144 送受信方向: 受信 プロトコル: ESP (モード: tunnel) アルゴリズム: AES-CBC (認証: HMAC-SHA) SPI: f9 f6 30 a6 鍵 : ** ** ** ** ** (confidential) ** ** ** ** ** ---------------------------------------------------- #
- Tunnelインターフェースの状態を、show status tunnel 1、show status tunnel 2コマンドで確認します。正常に動作していると以下のように表示されます。
# show status tunnel 1 TUNNEL[1]: 説明: インタフェースの種類: IPsec トンネルインタフェースは接続されています 開始: 2013/03/07 00:18:18 通信時間: 1分19秒 受信: (IPv4) 663 パケット [42280 オクテット] (IPv6) 0 パケット [0 オクテット] 送信: (IPv4) 779 パケット [38730 オクテット] (IPv6) 0 パケット [0 オクテット] # show status tunnel 2 TUNNEL[2]: 説明: インタフェースの種類: IPsec トンネルインタフェースは接続されています 開始: 2013/03/07 00:19:28 通信時間: 11秒 受信: (IPv4) 660 パケット [42704 オクテット] (IPv6) 0 パケット [0 オクテット] 送信: (IPv4) 794 パケット [40324 オクテット] (IPv6) 0 パケット [0 オクテット] #
- Tunnnelインターフェースの終端にpingが通ることを確認します。
Tunnel 1 ping 169.254.252.1
Tunnel 2 ping 169.254.252.5 - BGPの状態を、show status bgp neighbor コマンドで確認します。正常に動作していると以下のように表示されます。
# show status bgp neighbor BGP neighbor is 169.254.252.1, remote AS 10124, local AS 65000, external link BGP version 4, remote router ID 169.254.252.1 BGP state = Established, up for 00:02:04 Last read 00:00:08, hold time is 30, keepalive interval is 10 seconds Received 76 messages, 1 notifications, 0 in queue Sent 77 messages, 0 notifications, 0 in queue Connection established 2; dropped 1 Last reset 40:09:18 Local host: 169.254.252.2, Local port: 1050 Foreign host: 169.254.252.1, Foreign port: 179BGP neighbor is 169.254.252.5, remote AS 10124, local AS 65000, external link BGP version 4, remote router ID 169.254.252.5 BGP state = Established, up for 00:00:54 Last read 00:00:06, hold time is 30, keepalive interval is 10 seconds Received 19 messages, 0 notifications, 0 in queue Sent 20 messages, 1 notifications, 0 in queue Connection established 3; dropped 2 Last reset 00:01:07 Local host: 169.254.252.6, Local port: 1051 Foreign host: 169.254.252.5, Foreign port: 179 #
- ルーティングテーブルの状態を、show ip routeで確認します。正常に動作しているとVPC側ネットワークがルーティングテーブルにのります
# show ip route 宛先ネットワーク ゲートウェイ インタフェース 種別 付加情報 default - PP[01] static 10.0.0.0/16 169.254.252.1 TUNNEL[1] BGP path=10124 169.254.252.0/30 - TUNNEL[1] implicit 169.254.252.4/30 - TUNNEL[2] implicit 192.168.2.0/24 192.168.2.254 LAN2 implicit 203.138.71.154/32 - PP[01] temporary 210.150.255.66/32 - PP[01] temporary 210.153.255.165/32 - PP[01] temporary #
【AWSの接続確認】
- IPSecが接続できていない状態では、VPN ConnectionのStatusに「DOWN」が、Detailに「IPSEC IS DOWN」が表示されます
- IPSecが接続できたもののBGPでの経路情報の交換ができていない場合には、VPN ConnectionのStatusに「DOWN」が、Detailに「IPSEC IS UP」が表示されます
- BGPでの経路情報の交換が完了すると、VPN ConnectionのStatusに「UP」が、Detailに「1 BGP ROUTES」が表示されます
- VPCの管理画面上のYour VPN Connectionsに状態が表示されます。
【まとめ】
RTX1100とVPC間で以下のような構成でVPN接続されます。
【追記】
YAMAHA RT1100で構築する以前に、RTX1000(Rev 8.01.29)で試してみましたが、こちらでも構築は可能でした。しかし一部コマンドのオプションが未対応でしたので追記として残しておきます。
- RTX1000ではipsec ike keepalive useコマンドのdpdのオプションが未対応です。以下のようにheartbeatで代用が可能です。
RTX1100以降の設定内容ipsec ike keepalive use 1 on dpd 10 3 ipsec ike keepalive use 1 on dpd 10 3
RTX1000での設定内容
ipsec ike keepalive use 1 on heartbeat 10 3 ipsec ike keepalive use 2 on heartbeat 10 3
- RTX1000ではbgp neighborコマンドのlocal-addressオプションが未対応です。以下のようにlocal-addressを削除して設定を行います。
RTX1100以降の設定内容bgp neighbor 1 10124 169.254.252.1 hold-time=30 local-address=169.254.252.2 bgp neighbor 2 10124 169.254.252.5 hold-time=30 local-address=169.254.252.6
RTX1000での設定内容
bgp neighbor 1 10124 169.254.252.1 hold-time=30 bgp neighbor 2 10124 169.254.252.5 hold-time=30