YAMAHA RTX1200 でAWS サイト間VPN接続の構築
にわかSEがAWSで遊んでると突然「VPN接続ぐらいできるよね?」みたいな感じで案件アサインされました(笑)。
Client VPN ならさくっと設定したことあります...(震え声)
とにかく検証しないと始まらないので、会社に転がっていたYAMAHA RTX1200 でサイト間VPN接続を検証してみます。
今回のゴール
VPN接続したルータ配下にPCを接続し、VPC内のTest-ServerにプライベートIPアドレスでRDP接続できるようにする。
前提条件
- 固定グローバルIPアドレス×1 の契約がある
- PPPoEが設定できるルータがある ※今回はYAMAHA RTX1200 を使います
- VPN接続しようしているAWS VPCに既存VPGは存在しない
- ISP接続情報(PPPoE接続するためのユーザIDやPW)が分かる
- RTX1200の設定はCLIで行います
1. ですがAWS サイト間VPN接続は動的IPでは設定できませんので固定IP必須です。
3. ですがAWS VPCの仕様上、1つのVPCにアタッチできるVPGは1つだけなので
複数のVPN接続を設定することはできないです。
サイト間VPNの接続構成図
※調べてみたところ、接続構成図的にはこんな感じになるようです。(間違ってたらコメント下さると幸いです)
設定手順
- VPCを作成する
- Test用インスタンスを作成する ※RDP可能にしておく
- カスタマーゲートウェイの設定
- 仮想プライベートゲートウェイの設定
- VPCのルーティング設定
- セキュリティグループの設定
- VPN接続を作成する
- ルータ設定コンフィグをAWSからDLする
- YAMAHA RTX1200 の基本設定(IFやPPPoE、フィルター設定など)
- YAMAHA RTX1200のBGP、IPsecの設定
- RDPでの接続テスト
実際にやってみた
1と2は本記事のメインではないので割愛します。それでは3から設定していきます。
VPCの設定画面から「カスタマーゲートウェイ」を選択します。
名前は任意のものを記入し、IPアドレスは固定グローバルIPを記入します。今回は動的ルーティングで設定しますのでルーティングは「動的」を選択します。
その他は特に設定不要です。
記入できたら「カスタマーゲートウェイの作成」を選択して、作成します。
次に仮想プライベートゲートウェイを作成します。
同じくVPCの設定画面から「仮想プライベートゲートウェイ」を選択します。
名前は任意のものを記入し、ASN番号はデフォルト(65000)のままでOKです。
記入ができれば、「作成」まで進めます。
各種ゲートウェイが作成できたところで、VPN接続を構築する前にローカル環境からアクセスできるようにセキュリティグループ設定とルーティング設定を行います。
まずルーティングの設定ですが、VPCの管理画面でVPGをアタッチ予定のVPCを選択し、「ルートの編集」で
ローカル側への通信(宛先が192.168.100.0/24)への通信をVPGへ向けるルーティングを追記します。
※0.0.0.0/0 をVPGへルーティングする設定は自動で登録されていました
続いてAWS側のルート情報がVPG経由でオンプレ側に広告されるように「ルート伝播」の項目を設定します。
「ルート伝播」のタグを選択し、「ルート伝播の編集」から伝播するに☑をいれます。
次にローカル側からAWS VPC内のインスタンスにアクセスできるようにセキュリティグループを編集していきます。
今回はインバウンドルールにローカル側のアドレスセグメント(192.168.100.0/24)の通過許可設定をします。
ではAWS側の通信設定とゲートウェイは出来たので、実際にVPN接続を構築していきます。
VPCの管理画面から「サイト間VPN」を選択し、以下のように必要事項を登録していきます。
登録が完了すると利用するルータに合わせて、ルータコンフィグをDLできるようになりますのでDLしておきます。
これでAWS側の設定は完了です。ここからはYAMAHA RTX1200 側に必要な設定を投入をしていきます。
まずRTX1200 の基本的な設定を投入していきます。
基本的にベンダー公式情報の通りにやれば設定できるようになってます。
ネット上の情報だと一部修正が必要と書かれている記事もありますが2020年10月時点で
上述の前提条件で設定する場合はアレンジなしで設定できました。
AWSからDLするコンフィグはipsec ike local address をルーターの LAN 側アドレスに変更する必要がありますがDLした生コンフィグはグローバルIPになってます。YAMAHA公式ページのサンプルコンフィグに一番最後で修正する内容を記載してくれています。
# RTX1200 Rev.10.01.78 (Wed Nov 13 16:29:42 2019)
ip route default gateway pp 1 filter 500000 gateway pp 1
ip lan1 address 192.168.100.1/24
pp select 1
pp always-on on
pppoe use lan2
pppoe auto disconnect off
pp auth accept pap chap
pp auth myname (ISPへ接続するID) (ISPへ接続するパスワード)
ppp lcp mru on 1454
ppp ipcp msext on
ppp ccp type none
ip pp address (ルーターのグローバルIPアドレス)
ip pp secure filter in 200003 200020 200021 200022 200023 200024 200025 200030 200032 200080 200081
ip pp secure filter out 200013 200020 200021 200022 200023 200024 200025 200026 200027 200099 dynamic 200080 200081 200082 200083 200084 200085 200098 200099
ip pp nat descriptor 1000
pp enable 1
ip filter 200000 reject 10.0.0.0/8 * * * *
ip filter 200001 reject 172.16.0.0/12 * * * *
ip filter 200002 reject 192.168.0.0/16 * * * *
ip filter 200003 reject 192.168.100.0/24 * * * *
ip filter 200010 reject * 10.0.0.0/8 * * *
ip filter 200011 reject * 172.16.0.0/12 * * *
ip filter 200012 reject * 192.168.0.0/16 * * *
ip filter 200013 reject * 192.168.100.0/24 * * *
ip filter 200020 reject * * udp,tcp 135 *
ip filter 200021 reject * * udp,tcp * 135
ip filter 200022 reject * * udp,tcp netbios_ns-netbios_ssn *
ip filter 200023 reject * * udp,tcp * netbios_ns-netbios_ssn
ip filter 200024 reject * * udp,tcp 445 *
ip filter 200025 reject * * udp,tcp * 445
ip filter 200026 restrict * * tcpfin * www,21,nntp
ip filter 200027 restrict * * tcprst * www,21,nntp
ip filter 200030 pass * 192.168.100.0/24 icmp * *
ip filter 200031 pass * 192.168.100.0/24 established * *
ip filter 200032 pass * 192.168.100.0/24 tcp * ident
ip filter 200033 pass * 192.168.100.0/24 tcp ftpdata *
ip filter 200034 pass * 192.168.100.0/24 tcp,udp * domain
ip filter 200035 pass * 192.168.100.0/24 udp domain *
ip filter 200036 pass * 192.168.100.0/24 udp * ntp
ip filter 200037 pass * 192.168.100.0/24 udp ntp *
ip filter 200080 pass * 192.168.100.1 udp * 500
ip filter 200081 pass * 192.168.100.1 esp * *
ip filter 200098 reject-nolog * * established
ip filter 200099 pass * * * * *
ip filter 500000 restrict * * * * *
ip filter dynamic 200080 * * ftp
ip filter dynamic 200081 * * domain
ip filter dynamic 200082 * * www
ip filter dynamic 200083 * * smtp
ip filter dynamic 200084 * * pop3
ip filter dynamic 200085 * * submission
ip filter dynamic 200098 * * tcp
ip filter dynamic 200099 * * udp
nat descriptor type 1000 masquerade
nat descriptor address outer 1000 (ルーターのグローバルIPアドレス)
nat descriptor masquerade static 1000 1 192.168.100.1 udp 500
nat descriptor masquerade static 1000 2 192.168.100.1 esp
dns server (ISPから指定されたDNSサーバーのIPアドレス)
dns private address spoof on
dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.100.2-192.168.100.191/24
続いてAWSからDLしたコンフィグ情報で#がついていない行をコピペで投入していきます。
tunnel select 1
ipsec ike encryption 1 aes-cbc
ipsec ike group 1 modp1024
ipsec ike hash 1 sha
ipsec ike pre-shared-key 1 text (事前共有キー)
ipsec tunnel 201
ipsec sa policy 201 1 esp aes-cbc sha-hmac
ipsec ike duration ipsec-sa 1 3600
ipsec ike pfs 1 on
ipsec tunnel outer df-bit clear
ipsec ike keepalive use 1 on dpd 10 3
ipsec ike local address 1 (固定グローバルIP)
ipsec ike remote address 1 (外部IP)
ip tunnel address (内部IP CIDR)
ip tunnel remote address (内部IP CIDR)
ipsec ike local id 1 0.0.0.0/0
ipsec ike remote id 1 0.0.0.0/0
ip tunnel tcp mss limit 1379
tunnel enable 1
tunnel select none
ipsec auto refresh on
bgp use on
bgp autonomous-system 65000
bgp neighbor 1 64512 (内部IP CIDR) hold-time=30 local-address=(内部IP CIDR)
bgp import filter 1 equal 0.0.0.0/0
bgp import 64512 static filter 1
bgp configure refresh
tunnel select 2
ipsec ike encryption 2 aes-cbc
ipsec ike group 2 modp1024
ipsec ike hash 2 sha
ipsec ike pre-shared-key 2 text (事前共有キー)
ipsec tunnel 202
ipsec sa policy 202 2 esp aes-cbc sha-hmac
ipsec ike duration ipsec-sa 2 3600
ipsec ike pfs 2 on
ipsec tunnel outer df-bit clear
ipsec ike keepalive use 2 on dpd 10 3
ipsec ike local address 2 (固定グローバルIP)
ipsec ike remote address 2 (外部IP)
ip tunnel address (内部IP CIDR)
ip tunnel remote address (内部IP CIDR)
ipsec ike local id 2 0.0.0.0/0
ipsec ike remote id 2 0.0.0.0/0
ip tunnel tcp mss limit 1379
tunnel enable 2
tunnel select none
ipsec auto refresh on
bgp use on
bgp autonomous-system 65000
bgp neighbor 2 64512 (内部IP CIDR) hold-time=30 local-address=(内部IP CIDR)
bgp import filter 1 equal 0.0.0.0/0
bgp import 64512 static filter 1
bgp configure refresh
ipsec ike local address 1 192.168.100.1
ipsec ike local address 2 192.168.100.1
これでルータ側のコンフィグ投入も完了です。
ルータ配下にPCを接続して、今のルータ設定状態をGUIで確認してみましょう!
YAMAHA RTX1200 のデフォルト設定では、ルータとPCをLANケーブルでつないで、Webブラウザーでhttp://192.168.100.1/ でルータ管理画面(GUI)にアクセスできます。
LAN1 に別IPアドレスを割り当てた場合は適宜変更してください。
PPPoEを設定したLan2と2つ設定したIPsecのTunnelのステータスがUpになっていればOKです。
AWSのサイト間VPNではデフォルトで2本IPsecを設定する形になります。
最後にPCからAWS VPC上のTest-ServerにプライベートIPでRDPできるか確認しましょう!
無事RDP接続できれば、VPN接続できていますd(`・ω・’)
終わりに
どういうわけか、みんなYAMAHAは設定簡単だよ~って言います(笑)
未経験者からするとよく分からんコマンドが並んでいて、この設定であっているか凄い不安になりますが、基本的にコピペと公式の指示通りにすれば接続できます。初心者に優しいというのは重要です!
おまけ(11/5追記)
WAN側に割り当てた固定グローバルIPに対して、基本的に外部からのPingに応答をさせたくないと思います。
簡単そうで、上手くできずにハマったので、参考までに設定コマンドを記載します。
# WAN側グローバルIPのPing応答拒否
ip stealth pp1
これだけなんですが、このコマンドにたどり着くまでが長かった...