Edited at

AWSのVyOSとRTX1200をIPsecでつなぐ

More than 1 year has passed since last update.


きっかけ

趣味のAWSで、VPGと家をIPsecでつないだことがあるが、趣味としては結構高くつくと感じ、廃止していた。ハードだし仕方ないな。

しかし、本家マニュアル


VPN アプライアンスを実行する VPC の Amazon EC2 インスタンスを使用して、リモートネットワークへの VPN 接続を作成できます。


という記載を発見。なるほど、これは試す価値があるのでは…。


構成要素


VPNアプライアンス

言葉の意味はよくわからないが、EC2インスタンスなので、仮想ルータということだろう。

家で使っているSEIL/x86を使おうとも思ったが、AWSマーケットプレイスにあるVyOSならお手軽かも。

Vyatta時代に少し使っただけなので、進化も感じておきたい。


AWSマーケットプレイスのVyOS

VyOSで検索しても、出てこない。

ググると、ここへのリンクがあるが、よく見ると


This product is currently unavailable.


とのこと。さらにググると、コミュニティのAMIはある模様。

EC2->インスタンス->コミュニティAMI->検索でVyOS 1.1.7と入れると…


  1. ami-5812e939

  2. ami-69b26e08

の2つが出てくる。何が違うんだ…。勘で1.を選んでみる。


拠点ルータ

スマホとの間でL2TP/IPsecを使っている、RTX1200とつなぐことにする。

RTX1200のバージョンは、最新の10.01.71。


調査

ググると当然色々と情報があるが、2014年〜2015年ごろのものが多い。

また、AWS側をVyOSにする設定例が少ない気もする。

不安が残る。


IKE

RTX1200側のAgressive Modeの関係で、IPIP上にIPsecを張る必要ありという情報もある。

確かにRTproにも


一方のルーターしか固定のグローバルアドレスを持たないときにはアグレッシブモードを使用します。


とある。EC2インスタンスはDHCPでアドレスを取得し、Elastic IPが直接内部インターフェースに割り当たるわけではないので、NATになり、この条件に合いそう。

VyOSがメインモードのみだと、厳しそうだ。

しかし、VyOS 1.1.0のリリースノートを見ると、IKEv2に対応とある。

IKEv2ではアグレッシブモードは無くなったはずなので、上記情報はIKEv1の時の話か。

それでは、IKEv2にしてみたら、IPIPは不要にできるのでは。


参考にした設定

など。


試行錯誤

いろいろ試したが、とにかくつながらなかった。

接続に必要と思われる条件で自分がはまったのは、


  1. RTX1200のNAMEのtypeをipv4-addrにする (おそらくVyOS側のidをIPアドレス表記にした場合)

  2. VyOSのike-groupdh-groupを指定する

といった条件。正確に切り分けていないので、他の要素が問題だったかもしれないが…。


設定例

設定例は抜粋です。


サブネット

192.168.100.0/24がRTX1200側のサブネット、

192.168.200.0/24がVyOS側のサブネット。


IPアドレス

aaa.aaa.aaa.aaaはRTX1200側のグローバルIPアドレス、

bbb.bbb.bbb.bbbはVyOSインスタンスにマッピングされたAWSのElastic IPアドレス。

192.168.200.cccはDHCPで割り当てられるVyOSインスタンスのプライベートIPアドレス。

こちらの情報によると、サブネットの範囲の一部アドレスを予約することはできないのはVPCの仕様の模様。

tunnelはunnumberedにできた。


その他条件

VyOS側がイニシエータ。

EC2インスタンスのVyOSはグローバルIPを持たないので、NAT Traversal。

スタティックルート。


RTX1200側

RTproによると、IKEv2では、local nameremote nameの設定は必須の模様。

tuunelのMTUはデフォルトで1280? (詳細未確認)


RTX1200

ip route 192.168.200.0/24 gateway tunnel 1

:
tunnel select 1
ipsec tunnel 101
ipsec sa policy 101 1 esp aes-cbc sha-hmac
ipsec ike version 1 2
ipsec ike local name 1 aaa.aaa.aaa.aaa ipv4-addr
ipsec ike nat-traversal 1 on
ipsec ike pre-shared-key 1 SecretStrings
ipsec ike remote address 1 any
ipsec ike remote name 1 bbb.bbb.bbb.bbb ipv4-addr
ip tunnel tcp mss limit auto
tunnel enable 1


VyOS側

手動で設定していない項目がshow configで現れるようになった(何で?)が、それもそのまま記載。

pfsは気づいたらenableになっていた気がするので、手動でdisableに。

key-exchangeVyOS 1.1.0のリリースノートではデフォルトがIKEv2とあるが、念のためikev2を明示。


VyOS

set vpn ipsec esp-group ESP-AWS compression 'disable'

set vpn ipsec esp-group ESP-AWS lifetime '3600'
set vpn ipsec esp-group ESP-AWS mode 'tunnel'
set vpn ipsec esp-group ESP-AWS pfs 'disable'
set vpn ipsec esp-group ESP-AWS proposal 1 encryption 'aes128'
set vpn ipsec esp-group ESP-AWS proposal 1 hash 'sha1'
set vpn ipsec ike-group IKE-AWS ikev2-reauth 'no'
set vpn ipsec ike-group IKE-AWS key-exchange 'ikev2'
set vpn ipsec ike-group IKE-AWS lifetime '28800'
set vpn ipsec ike-group IKE-AWS proposal 1 dh-group '2'
set vpn ipsec ike-group IKE-AWS proposal 1 encryption 'aes128'
set vpn ipsec ike-group IKE-AWS proposal 1 hash 'sha1'
set vpn ipsec ipsec-interfaces interface 'eth0'
set vpn ipsec nat-networks allowed-network '192.168.0.0/16'
set vpn ipsec nat-traversal 'enable'
set vpn ipsec site-to-site peer aaa.aaa.aaa.aaa authentication id 'bbb.bbb.bbb.bbb'
set vpn ipsec site-to-site peer aaa.aaa.aaa.aaa authentication mode 'pre-shared-secret'
set vpn ipsec site-to-site peer aaa.aaa.aaa.aaa authentication pre-shared-secret 'SecretStrings'
set vpn ipsec site-to-site peer aaa.aaa.aaa.aaa authentication remote-id 'aaa.aaa.aaa.aaa'
set vpn ipsec site-to-site peer aaa.aaa.aaa.aaa connection-type 'initiate'
set vpn ipsec site-to-site peer aaa.aaa.aaa.aaa default-esp-group 'ESP-AWS'
set vpn ipsec site-to-site peer aaa.aaa.aaa.aaa ike-group 'IKE-AWS'
set vpn ipsec site-to-site peer aaa.aaa.aaa.aaa ikev2-reauth 'inherit'
set vpn ipsec site-to-site peer aaa.aaa.aaa.aaa local-address '192.168.200.ccc'
set vpn ipsec site-to-site peer aaa.aaa.aaa.aaa tunnel 1 allow-nat-networks 'disable'
set vpn ipsec site-to-site peer aaa.aaa.aaa.aaa tunnel 1 allow-public-networks 'disable'
set vpn ipsec site-to-site peer aaa.aaa.aaa.aaa tunnel 1 local prefix '192.168.200.0/24'
set vpn ipsec site-to-site peer aaa.aaa.aaa.aaa tunnel 1 remote prefix '192.168.100.0/24'


VPCの設定

IKEv2とNAT Traversalが通るように、インバウンドのルールにUDPの500番と4500番を通す必要があるが、どうせ固定IPとの間なので、UDPを全部通すようにしてしまった。


宿題


  • VyOS同士…最初これがうまくいかずRTX1200に移行…IKEバージョンが合ってなかった?

  • OSPFを通す


  • show vpn ipsec saなどでNAT-Tがnoになる謎の解明…ESP(50)通るようにしてたっけ?

  • vtiへの移行