サーバを手軽に立てたいなー。
でもセキュリティ考えるの面倒だなー。
そんな思いから Amazon VPC を立てて VPN 接続してみた。

ネットワーク構成

だいぶ端折ってるけど、こんな構成で構築した。

Image: Overview

カスタマーゲートウェイには、 YAMAHA ルータ RTX1200 を導入した。

グローバル IP アドレスには、固定 IP アドレスを契約した。

構築方法

こちらを参考にさせて頂いた。

  1. VPC に YAMAHA RTX1100 で接続する - tama’s memo
  2. RTX1100 から VPC に接続した記録 - petach の日記
  3. YAMAHA RTX1100 で AWS VPC と VPN 接続できない。。なぜ?>一部で設定修正が必要だった - 茶国 Rev3
  4. Amazon Virtual Private Cloud (Amazon VPC) 設定例 - ヤマハネットワーク周辺機器技術情報
  5. IPsec 設定ガイド - ヤマハネットワーク周辺機器技術情報

特に3つ目のページでは、自分も同じ部分で詰まったのでとても助かった。
AWS から提供される設定コマンドそのままでは動かなくて、これにはとても悩まされた…

AWS が出力してくれる内容に対して修正が必要であることが分かった。
これは、マスカレードをどう設定しているか?にもよるのだけど、、
ipsec ike local address には VPN 装置のグローバル側 IP ではなくて、
VPN 装置の NAT されたプライベート側 IP を書くべきらしかった。
これを修正したら接続できるようになった。

設定内容

設定した内容はこんな感じ。

これでプライベートなセグメントに配置した EC2 インスタンスへ接続が出来た。
*セキュリティグループの解放とかは勿論やった上で :)

# デフォルトゲートウェイ
ip route default gateway pp 1

# LAN1
ip lan1 address 192.168.1.2/24

# PPPoE (LAN2)
pp select 1
 pp keepalive use lcp-echo
 pp keepalive interval 30 retry-interval=30 count=12
 pp always-on on
 pppoe use lan2
 pppoe auto connect on
 pppoe auto disconnect off
 pp auth accept pap chap
 pp auth myname <プロバイダ接続ID> <プロバイダ接続パスワード>
 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 1000
 pp enable 1
pp select none

# IPsec トンネル 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.1.2
  ipsec ike pfs 1 on
  ipsec ike pre-shared-key 1 text <事前共有鍵>
  ipsec ike remote address 1 <相手側IPアドレス>
 ipsec tunnel outer df-bit clear
 ip tunnel address 169.254.252.26/30
 ip tunnel remote address 169.254.252.25
 ip tunnel tcp mss limit 1387
 tunnel enable 1
tunnel select none

# IPsec トンネル 2
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.1.2
  ipsec ike pfs 2 on
  ipsec ike pre-shared-key 2 text <事前共有鍵>
  ipsec ike remote address 2 <相手側IPアドレス>
 ipsec tunnel outer df-bit clear
 ip tunnel address 169.254.252.30/30
 ip tunnel remote address 169.254.252.29
 ip tunnel tcp mss limit 1387
 tunnel enable 2
tunnel select none

# NAT
nat descriptor type 1000 masquerade
nat descriptor address outer 1000 ipcp
nat descriptor address inner 1000 auto
nat descriptor masquerade static 1000 1 192.168.1.2 udp 500
nat descriptor masquerade static 1000 2 192.168.1.2 esp

# BGP
bgp use on
bgp autonomous-system 65000
bgp neighbor 1 10124 169.254.252.25 hold-time=30 local-address=169.254.252.26
bgp neighbor 2 10124 169.254.252.29 hold-time=30 local-address=169.254.252.30
bgp import filter 1 equal 0.0.0.0/0
bgp import 10124 static filter 1

# IPsec
ipsec auto refresh on

# DNS
dns service recursive
dns server pp 1
dns server select 500001 pp 1 any . restrict pp 1
dns private address spoof on

みんな設定の管理どうしてるんだろう

フィルタとかも入れだしたらカオスになってきた…