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 ec2-user@172.31.37.121
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接続には料金がかかりますのでご注意ください。


この記事をかいた人

About the author

平田健士郎

2019年に中途で入社。過去に経験があるため、NW関係の記事が多くなるかもしれません。
キャンプを趣味にしたいと思ってます。