LoginSignup
7
9

More than 5 years have passed since last update.

AWSのVyOSとRTX1200をIPsecでつなぐ

Last updated at Posted at 2017-07-26

きっかけ

趣味の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への移行
7
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
9