AWSと自宅NW(RTX1100)のVPN接続をしよう
目次
皆さんこんにちは。
システムソリューション部運用管理課所属の平田です。
今回はAWSと自宅NW(RTX1100)をVPNで接続する方法を紹介致します。
経緯
先日、とある案件でAWSとローカルのVPN接続を担当したのですが、自分でも興味が沸いたため自宅のNWとAWSでVPN接続を行ってみました。
うまく行ったので今回ブログの記事として書かせていただきました。
AWS側
※既にEC2インスタンスがVPC上に作成されている前提で進めます。
仮想プライベートゲートウェイ作成
以下の手順から仮想プライベートゲートウェイ作成画面に入ります。
AWSマネジメントコンソール->VPC->仮想プライベートゲートウェイ->仮想プライベートゲートウェイの作成
以下の画面のように設定します。
名前タグは任意で設定します。ASNは「Amazon のデフォルトASN」を選択します。
仮想プライベートゲートウェイを作成したら、以下の画面のように作成した仮想プライベートゲートウェイを既存のVPCにアタッチします。
カスタマーゲートウェイの作成
以下の手順からカスタマーゲートウェイ作成画面に入ります。
AWSマネジメントコンソール->VPC->カスタマーゲートウェイ->カスタマーゲートウェイの作成
以下の画面のように設定します。
名前は任意で設定します。ルーティングは今回ルーティングプロトコルにBGPを利用するため「動的」を選択します。BGP ASNはデフォルトの65000のままにします。IP アドレスは自宅NWのパブリックIPアドレスを記載します。
VPN接続の設定
以下の手順からVPN接続作成画面に入ります。
AWSマネジメントコンソール->VPC->サイト間のVPN接続->VPN接続の作成
以下の画面のように設定します。
名前は任意で設定します。仮想プライベートゲートウェイは先ほど作成した仮想プライベートゲートウェイを選択します。Customer Gateway IDは先ほど作成したカスタマーゲートウェイを選択します。ルーティングオプションは動的を選択します。
トンネルオプションという項目が存在しますが、今回は空欄のままで問題ありませんでした。
自宅NWのルータに設定するconfigをダウンロードする
以下の手順から自宅NWのルータに設定するconfigをダウンロードします。
AWSマネジメントコンソール->VPC->サイト間のVPN接続->設定のダウンロード
今回はYAMAHAのRTX1100を利用するため、以下の画面のようにconfigをダウンロードします。
ルートテーブルを設定する
以下の手順からルートテーブルの画面に遷移します。
AWSマネジメントコンソール->VPC->ルートテーブル
以下の画面のように「ルート伝搬」タブをクリックし「ルート伝搬の編集」ボタンをクリックします。
先ほど作成した仮想プライベートゲートウェイが表示されているのでチェックボックスをクリックして設定を行います。
自宅NWのルータ設定
ダウンロードしたconfigの修正
先ほどダウンロードしたconfigを自宅NWのルータに設定します。
しかし、configの内容のうち設定を修正しなければならない箇所があります。修正箇所は2箇所あります。
修正箇所1
ip tunnel remote address (自宅NWのパブリックIPアドレス)
この(自宅NWのパブリックIPアドレス)の箇所をルータのLANに設定しているプライベートIPアドレスに修正します。
私の場合は192.168.253.1に修正します。
修正箇所2
bgp import filter 1 equal 0.0.0.0/0
この「0.0.0.0/0」の箇所をLANに設定しているネットワークアドレスに修正します。
私の場合は192.168.253.0/24に修正します。
configを設定する
上記の修正したconfigをルータに設定します。
今回は最終的なルータのconfigを記載します。
show config # RTX1100 Rev.8.03.94 (Thu Dec 5 19:06:16 2013) # Memory 32Mbytes, 3LAN, 1BRI # Reporting Date: Jan 1 10:03:57 1980 timezone +09:00 console character ascii console prompt [aws_test] login timer 1000 ip route default gateway pp 1 ip lan1 address 192.168.253.1/24 ip lan1 proxyarp on pp select 1 pp name FLETS pp always-on on pppoe use lan2 pppoe auto connect on pppoe auto disconnect on pp auth accept pap chap pp auth myname (ISP接続ID) (ISP接続パスワード) ppp lcp mru on 1454 ppp ipcp ipaddress on ip pp mtu 1454 ip pp secure filter in 1 ip pp secure filter out 2 ip pp nat descriptor 1000 pp enable 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 192.168.253.1 ipsec ike pfs 1 on ipsec ike pre-shared-key 1 text (VPN秘密鍵パスフレーズ1) ipsec ike remote address 1 52.193.39.138 ipsec tunnel outer df-bit clear ip tunnel address 169.254.24.102/30 ip tunnel remote address 169.254.24.101 ip tunnel tcp mss limit 1379 tunnel enable 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 192.168.253.1 ipsec ike pfs 2 on ipsec ike pre-shared-key 2 text (VPN秘密鍵パスフレーズ2) ipsec ike remote address 2 52.196.197.66 ipsec tunnel outer df-bit clear ip tunnel address 169.254.25.218/30 ip tunnel remote address 169.254.25.217 ip tunnel tcp mss limit 1379 tunnel enable 2 ip filter 1 pass * * * * * ip filter 2 pass * * * * * nat descriptor type 1000 masquerade nat descriptor address outer 1000 ipcp nat descriptor address inner 1000 auto bgp use on bgp autonomous-system 65000 bgp neighbor 1 64512 169.254.24.101 hold-time=30 local-address=169.254.24.102 bgp neighbor 2 64512 169.254.25.217 hold-time=30 local-address=169.254.25.218 bgp import filter 1 equal 192.168.253.0/24 bgp import 64512 static filter 1 ipsec auto refresh on tftp host any dhcp service server dhcp scope 1 192.168.253.100-192.168.253.200/24 dns server 8.8.8.8 8.8.4.4
ちなみに今回はテスト用に初期化したルータに設定しており、フィルターについては全許可にしております。実際に利用する際は注意してください。
動作確認
AWSのトンネル状態確認
以下の手順からVPN接続画面に入ります。
AWSマネジメントコンソール->VPC->サイト間のVPN接続
「Tunnel Details」タブをクリックします。
ステータスがアップになっていることを確認します。
ルータ(RTX1100)のトンネル状態確認
RTX1100のコマンドでトンネルのステータスを確認します。
[aws_test]# show status tunnel 1 TUNNEL[1]: Description: Interface type: IPsec Current status is Online. from 1980/01/01 09:52:26. 1 hour 26 minutes 51 seconds connection. Received: (IPv4) 894 packets [65571 octets] (IPv6) 0 packet [0 octet] Transmitted: (IPv4) 1289 packets [85905 octets] (IPv6) 0 packet [0 octet] [aws_test]# show status tunnel 2 TUNNEL[2]: Description: Interface type: IPsec Current status is Online. from 1980/01/01 09:52:52. 1 hour 26 minutes 27 seconds connection. Received: (IPv4) 1004 packets [62349 octets] (IPv6) 0 packet [0 octet] Transmitted: (IPv4) 847 packets [54026 octets] (IPv6) 0 packet [0 octet]
EC2インスタンスへの疎通確認
これでAWSと自宅NWのVPNの接続が完了しましたので疎通確認を行います。
ping確認
自宅NWの端末からEC2インスタンス(172.31.37.121)へping疎通確認を行います。
~ $ ping 172.31.37.121 PING 172.31.37.121 (172.31.37.121): 56 data bytes 64 bytes from 172.31.37.121: icmp_seq=0 ttl=253 time=20.483 ms 64 bytes from 172.31.37.121: icmp_seq=1 ttl=253 time=40.084 ms 64 bytes from 172.31.37.121: icmp_seq=2 ttl=253 time=26.764 ms
ssh確認
自宅NWの端末からEC2インスタンス(172.31.37.121)へping疎通確認を行います。
~ $ ssh -i .ssh/aws.pem [email protected] Last login: Sun Sep 8 11:42:56 2019 from ip-192-168-253-100.ap-northeast-1.compute.internal __| __|_ ) _| ( / Amazon Linux 2 AMI ___|\___|___| https://aws.amazon.com/amazon-linux-2/ 4 package(s) needed for security, out of 14 available Run "sudo yum update" to apply all updates. [ec2-user@ip-172-31-37-121 ~]$
まとめ
今回、AWSと自宅NWをVPNで接続することができました。
RTX1100は中古で数千円で購入することができるため、こういったテストにはもってこいだと思います。
また、AWSでのVPN接続には料金がかかりますのでご注意ください。