【AWS】vRXの構築（L2TP/IPsecを用いたリモートアクセス）について

ドラッグストア様向けのインフラ構築において、店舗からAWSサーバーへの通信にvRXを導入しました。この際の構築ポイントと使用方法について、以下にナレッジをまとめています。

###### ■構成図
![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2600067/d7bb092b-f1de-8732-2f22-68eff4cd386c.png)

###### ■解説
vRXの構築パターンは、基本的に二つあります。
①L2TP/IPsecを用いたリモートアクセス
②拠点⇔AWS間のIPSec接続

拠点とAWS間のIPsec接続は、拠点からAWS内のリソースにアクセスできるように構築できますが、Direct Connectを使用している場合、外部のリソースへのルーティングができない仕様となっています。これは、VGW（Virtual Private Gateway）が関連付けられたVPCのCIDRと自身がBGPで学習しているルート以外のトラフィックをルーティングできないためです。ただし、VGWに関連付けられているSite-to-Site VPN接続の静的なルートエントリについては、VGWがルーティング可能になります。

この仕様により、AWS内のEC2などへのアクセスが通信要件であれば、vRXを使用して拠点から通信することで問題ありません。vRXはネットワーク仮想化ソフトウェアであり、柔軟なネットワーク構築を可能にします。そのため、Direct Connectを経由せずにvRXを介してAWS内のリソースにアクセスすることで、必要な通信要件を満たすことができます。

###### ■設定方法（L2TP/IPsecを用いたリモートアクセス）
vpnuser01からvpnuser15用のIPアドレスを172.25.10.0/26から払い出しました。

:::note warn
注意！
払い出したセグメントは、AWSの既に使っているセグメントと重複してはいけません。
:::

```ruby:qiita.rb
#　vrx Configファイル
vrx user vrx-user *
ip route default gateway dhcp lan2
ip route 172.25.10.128/26 gateway tunnel 100
ip filter source-route on
ip filter directed-broadcast on
description lan1 IP_172.16.30.254
ip lan1 address dhcp
ip lan1 proxyarp on
description lan2 IP_172.16.3.254_EIP_35.78.31.89
ip lan2 address dhcp
ip lan2 nat descriptor 1
pp select anonymous
 pp bind tunnel81-tunnel95
 pp auth request mschap-v2
ip lan2 nat descriptor 1
pp select anonymous
 pp bind tunnel81-tunnel95
 pp auth request mschap-v2
 pp auth username vpnuser01 *
 pp auth username vpnuser02 *
 pp auth username vpnuser03 *
 pp auth username vpnuser04 *
 pp auth username vpnuser05 *
 pp auth username vpnuser06 *
 pp auth username vpnuser07 *
 pp auth username vpnuser08 *
 pp auth username vpnuser09 *
 pp auth username vpnuser10 *
 pp auth username vpnuser11 *
 pp auth username vpnuser12 *
 pp auth username vpnuser13 *
 pp auth username vpnuser14 *
 pp auth username vpnuser15 *
 ppp ipcp ipaddress on
 ppp ipcp msext on
 ip pp remote address pool 172.25.10.1-172.25.10.15
 ip pp mtu 1258
 pp enable anonymous

tunnel select 81
 tunnel template 82-95
 tunnel encapsulation l2tp
 ipsec tunnel 81
  ipsec sa policy 81 81 esp aes-cbc sha-hmac
  ipsec ike keepalive use 81 off
  ipsec ike local address 81 172.16.30.254
  ipsec ike nat-traversal 81 on
  ipsec ike pre-shared-key 81 *
  ipsec ike remote address 81 any
 l2tp tunnel disconnect time off
 l2tp keepalive use on 10 3
 l2tp keepalive log on
 l2tp syslog on
 ip tunnel tcp mss limit auto
    tunnel enable 81

tunnel select 100
 description tunnel TEST-MAKNWSupport
 ipsec tunnel 200
  ipsec sa policy 200 100 esp aes256-cbc sha256-hmac
  ipsec ike encryption 100 aes256-cbc
  ipsec ike group 100 modp1536
  ipsec ike hash 100 sha256
  ipsec ike keepalive log 100 off
 ipsec ike encryption 100 aes256-cbc
  ipsec ike group 100 modp1536
  ipsec ike hash 100 sha256
  ipsec ike keepalive log 100 off
  ipsec ike keepalive use 100 on icmp-echo 172.25.10.190 30 5
  ipsec ike local address 100 172.16.30.254
  ipsec ike nat-traversal 100 on
  ipsec ike pre-shared-key 100 *
  ipsec ike remote address 100 any
  ipsec ike remote name 100 TESTMAKNW-Support key-id
 ip tunnel tcp mss limit auto
 tunnel enable 100

ip filter 3100 pass-log * *
nat descriptor type 1 masquerade
nat descriptor address outer 1 primary
nat descriptor masquerade static 1 1 172.16.30.254 udp 500
nat descriptor masquerade static 1 2 172.16.30.254 udp 4500
nat descriptor masquerade static 1 3 172.16.30.254 tcp 22
ipsec auto refresh on
ipsec transport 81 81 udp 1701
ipsec transport 82 82 udp 1701
ipsec transport 83 83 udp 1701
ipsec transport 84 84 udp 1701
ipsec transport 85 85 udp 1701
ipsec transport 86 86 udp 1701
ipsec transport 87 87 udp 1701
ipsec transport 88 88 udp 1701
ipsec transport 89 89 udp 1701
ipsec transport 90 90 udp 1701
ipsec transport 91 91 udp 1701
ipsec transport 92 92 udp 1701
ipsec transport 93 93 udp 1701
ipsec transport 94 94 udp 1701
ipsec transport 95 95 udp 1701
tftp host any
telnetd service on
telnetd host any
dns server dhcp lan2
l2tp service on
sshd service on
sshd host key generate *
```
###### ■ip route
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2600067/98d741a3-9ffc-1354-9f45-7fec288d641b.png)

###### ■AWS側の設定およびポイント
vRX自体の構築は、[VRXのAWS構築手順](http://www.rtpro.yamaha.co.jp/RT/manual/vrx/userguide/ja/ec2_ja/03_setup_ec2_ja.html#setup "Qiita Home") の通り、設定いただければ問題ありませんが、公式サイトに記載していない細かいところを記載しておきます。

・vRXは二つのENI（LAN、WAN）を持っており、vRXのWAN側（EIP側）のセグメントからのIPSecパケット、sshを受け付けるNAT構成となっておりますので、基本的にはそのままのルーティングはできません。
ここで、172.16.3.254はWAN、172.16.30.254はLANとなります。

・WAN側で、トラフィックを受け入れ、LAN側に渡して、LAN側でルーティングテーブルの設定内容によってリソースにルーティングする仕様となりますので、WAN側のENIのセキュリティグループは通信必要なグローバルIPアドレスを許可し、LAN側のENIのセキュリティグループは、AWS内部のリソース、vRXから配ってくれるIPアドレスを許可する必要になります。

・VPC側のルートテーブルも対応必要です。
送信先172.25.10.0/26の場合、vRX LANのENIをターゲットにして入れる必要になります。（戻りのルートの設定）

###### ■まとめ
上記の通り設定いただければ、通信可能と思いますが、L2TP/IPsecを用いたリモートアクセスの場合です。拠点⇔AWS間のIPSec接続の設定方法については追って記載するようにします。