chakokuのブログ(rev4)

日々のごった煮ブログです

YAMAHA RTX1100でAWS VPCとVPN接続できない。。なぜ?>一部で設定修正が必要だった

いろいろ資料を見ながら、YAMAHA RTX1100とAWS間をVPN接続させようとしているのだけど、なぜか接続できない。RTX1100側のログを見ると以下のようになっており、どうもAWS側と鍵交換すらできていないようなんだけど。。一体何が問題なのかわからず。。
機種名:YAMAHA RTX1100
ファーム等:


> show environment
RTX1100 BootROM Rev.6.02
RTX1100 Rev.8.03.92 (Thu Feb 16 20:50:25 2012)

ログの内容


2013/09/14 23:17:58: [IKE] initiate ISAKMP phase to 27.0.1.16 (local address xxx.yyy.zzz.86)
2013/09/14 23:17:58: [IKE] add ISAKMP context [269] 0dce095b404f633c 00000000
2013/09/14 23:18:01: [IKE] [268] retransmit to 27.0.1.144 (count = 1)
2013/09/14 23:18:04: [IKE] [269] retransmit to 27.0.1.16 (count = 9)
2013/09/14 23:18:11: [IKE] [269] retransmit to 27.0.1.16 (count = 8)
2013/09/14 23:18:20: [IKE] [269] retransmit to 27.0.1.16 (count = 7)
2013/09/14 23:18:24: [IKE] [268] retransmit to 27.0.1.144 (count = 0)
2013/09/14 23:18:31: [IKE] [269] retransmit to 27.0.1.16 (count = 6)
2013/09/14 23:18:44: [IKE] [269] retransmit to 27.0.1.16 (count = 5)
2013/09/14 23:18:49: [IKE] [268] retransmission timeout
2013/09/14 23:18:49: [IKE] inactivate context [268] dea8186e412bb769 00000000
2013/09/14 23:18:49: [IKE] inactivate ISAKMP socket[2]
2013/09/14 23:18:49: [IKE] delete ISAKMP context [268] dea8186e412bb769 0000000
無反応だから根本的な所で間違っているようにも思えるが、、それが一体何なのかわからず。

■追記(130915)

さらに調べた結果、AWSが出力してくれる内容に対して修正が必要であることが分かった。これは、マスカレードをどう設定しているか?にもよるのだけど、、ipsec ike local addressにはVPN装置のグローバル側IPではなくて、VPN装置のNATされたプライベート側IPを書くべきらしかった。これを修正したら接続できるようになった。手がかりとなった記事を最後にリンクつけておきます。
変更点(変更後の表記)


tunnel select 1
# NAT内側(private address空間)のGWに変更↓
ipsec ike local address 1 10.0.128.1
tunnel select 2
# NAT内側(private address空間)のGWに変更↓
ipsec ike local address 2 10.0.128.1

補足(動作したconfig全文、環境依存のIPは<名前>としています。)


login password *
administrator password *
ip route default gateway pp 1
ip route 10.1.0.0/16 gateway tunnel 1
ip lan1 address 10.0.128.1/24

pp select 1
pppoe use lan2
pp auth accept pap chap
pp auth myname
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

# tunnel #1の設定はAWS生成をベースに
# ipsec ike local addressの指定について
# プライベートアドレスのGW(10.0.128.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 10.0.128.1
ipsec ike pfs 1 on
ipsec ike pre-shared-key 1 text
ipsec ike remote address 1 27.0.1.144
ipsec tunnel outer df-bit clear
ip tunnel address 169.254.252.6/30
ip tunnel remote address 169.254.252.5
ip tunnel tcp mss limit 1387
tunnel enable 1

# tunnel #2の設定はAWS生成をベースに
# ipsec ike local addressの指定について
# プライベートアドレスのGW(10.0.128.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 10.0.128.1
ipsec ike pfs 2 on
ipsec ike pre-shared-key 2 text
ipsec ike remote address 2 27.0.1.16
ipsec tunnel outer df-bit clear
ip tunnel address 169.254.252.2/30
ip tunnel remote address 169.254.252.1
ip tunnel tcp mss limit 1387
tunnel enable 2

nat descriptor type 1 masquerade
nat descriptor masquerade static 1 1 10.0.128.1 udp 500
nat descriptor masquerade static 1 2 10.0.128.1 esp

bgp use on
bgp autonomous-system 65000
bgp neighbor 1 10124 169.254.252.5 hold-time=30 local-address=169.254.252.6
bgp neighbor 2 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 auto refresh on
syslog notice on
syslog debug on
dhcp service server
dhcp scope 1 10.0.128.240-10.0.128.250/24
dns server pp 1
dns private address spoof on

ステータス表示


# show status tunnel 1
TUNNEL[1]:
説明:
インタフェースの種類: IPsec
トンネルインタフェースは接続されています
開始: 2013/09/15 14:11:23
通信時間: 9分31秒
受信: (IPv4) 226 パケット [14189 オクテット]
(IPv6) 0 パケット [0 オクテット]
送信: (IPv4) 245 パケット [15203 オクテット]
(IPv6) 0 パケット [0 オクテット]
# show status tunnel 2
TUNNEL[2]:
説明:
インタフェースの種類: IPsec
トンネルインタフェースは接続されています
開始: 2013/09/15 14:12:54
通信時間: 8分3秒
受信: (IPv4) 292 パケット [18627 オクテット]
(IPv6) 0 パケット [0 オクテット]
送信: (IPv4) 321 パケット [20043 オクテット]
(IPv6) 0 パケット [0 オクテット]

VPC内にインスタンスを起動して、ローカル環境からPING打ってみた。疎通が確認できたので、sshでも入ってみた。。OK


$ ping 10.1.1.253

10.1.1.253 に ping を送信しています 32 バイトのデータ:
10.1.1.253 からの応答: バイト数 =32 時間 =18ms TTL=61
10.1.1.253 からの応答: バイト数 =32 時間 =19ms TTL=61
10.1.1.253 からの応答: バイト数 =32 時間 =19ms TTL=61
10.1.1.253 からの応答: バイト数 =32 時間 =17ms TTL=61

10.1.1.253 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 17ms、最大 = 19ms、平均 = 18ms

$ ssh -i ~/.ssh/vpnTest0.pem ec2-user@10.1.1.253
Last login: Sun Sep 15 06:10:06 2013 from ip-10-0-128-125.ap-northeast-1.compute.internal

__| __|_ )
_| ( / Amazon Linux AMI
___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2013.03-release-notes/

[ec2-user@ip-10-1-1-253 ~]$ /sbin/ifconfig eth0
eth0 Link encap:Ethernet HWaddr 0A:F1:5A:60:B6:88
inet addr:10.1.1.253 Bcast:10.1.1.255 Mask:255.255.255.0
inet6 addr: fe80::8f1:5aff:fe60:b688/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1666 errors:0 dropped:0 overruns:0 frame:0
TX packets:1717 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:190714 (186.2 KiB) TX bytes:169950 (165.9 KiB)
Interrupt:25

というわけで、、当初確認したい項目はすべて確認できた。

最低の動作確認ができたので、短い間だったけど、VPCの設定はいったんすべて削除して、また使う日までさよなら。
インスタンス自体は止めておけば利用料が発生しないけど、インスタンスはストレージ領域としてEBSを使っているので1円ぐらいかかる(請求金額以下)。また、AWSのプレゼンで、「VPCは無料!」とよく聞かされますが、VPN Connectionは接続していなくても請求されるので、使わない時は設定自体を削除するのが望ましい。特に個人でテストしている場合、残したままにすると後で請求額を確認してびっくりすることになる。)

■参考URL
Amazon Virtual Private Cloud (Amazon VPC) 設定例」
http://www.rtpro.yamaha.co.jp/RT/docs/amazon-vpc/

上記Webページから辿れるConfigサンプル全文も、


ipsec ike local address 1 XXX.XXX.XXX.XXX
といかにも接続元のルータのグローバルIPを記載するように書かれていますが、グローバルIPを書くと自分の環境では上記の通り動作しませんでした。(NATの内側のプライベートIPを記載して対応した)

AWSが提示するファイルに対する修正点
YAMAHA IPsec 設定ガイド」
http://www.rtpro.yamaha.co.jp/RT/docs/ipsec/guide.html

(説明文中、「NATの設定で注意すべきポイントは、 以下のように、4つのコマンドで同じIPアドレスを設定することです。」をご参照ください。これでもわかるように、上記Config全文の説明と設定ガイドの間で矛盾があります。動作結果から考えると多分後者が正しいのだと思われますが。。YAMAHA RTXにおける、NATなり、IP masqueradeの正しい書き方が分かっていないので最終的にどの表記が正しいのかまでは分からず。。)