AWSのSite-to-Site VPNを使って自宅ネットワークとVPCを接続してみた

スポンサーリンク

はじめに

仕事でAWSの「Site-to-Site VPN接続」を使用することがあり、勉強を兼ねて自宅ネットワークとVPCを接続してみました。備忘録を兼ねて手順をまとめておきます。

環境

Wi-Fi ルータは、BUFFALOのWXR-2533DHP2を使っています。
vyosはvyos-1.3.0-rc6を使っています。
https://vyos.net/get/snapshots/

作業の流れ

作業は大きく2つあります。
AWSの設定と自宅にある仮想ルータの設定です。仮想ルータはvyosを使います。

AWSの設定

VPCの作成
サブネットの作成
ルートテーブルの作成
仮想プライベートゲートウェイの作成
カスタマーゲートウェイの作成

vyosの設定

VyOSは、オープンソースで開発されているネットワークOSです。主にソフトウェアルータとして使われることが多いです。vyosにVPNの設定を追加することでAWSと接続させます。

操作手順

AWSの設定

VPCの作成

名前タグ:Test-VPC01
IPv4 CIDR:10.1.0.0/16

サブネットの作成

VPC ID:Test-VPC01
サブネット名:Test-Subnet01
アベイラビリティゾーン:アジアパシフィック(東京)/ap-northeast-1a
IPv4 CIDR ブロック:10.1.0.0/24

サブネット名:Test-Subnet02
アベイラビリティゾーン:アジアパシフィック(東京)/ap-northeast-1c
IPv4 CIDR ブロック:10.1.1.0/24

仮想プライベートゲートウェイの作成

名前タグ:Test-VGW
自律システム番号(ASN):Amazon デフォルト ASN

作成した仮想プライベートゲートウェイを選択し、アクションボタンから「VPCへアタッチ」を選択します。

作成したVPC(Test-VPC01)へアタッチします。

状態が数秒で「Attaching」から「Attached」になれば完了です。

カスタマーゲートウェイの作成

名前タグ:Test-CGW
BGP ASN:65000
IPアドレス:自宅のグローバルIP(CMANなどで確認して下さい)

VPN接続の作成

名前タグ:Test-VPN01
ターゲットゲートウェイのタイプ:仮想プライベートゲートウェイ
仮想プライベートゲートウェイ:Test-VGW

カスタマーゲートウェイ:既存
カスタマーゲートウェイ ID:Test-CGW

ルーティングオプション:動的 (BGP が必要)

設定ファイルのダウンロード

VPN接続画面から「設定をダウンロードする」ボタンをクリックします。
ベンダー:Vyatta
プラットフォーム:Vyatta Network OS
ソフトウェア:Vyatta Network OS 6.5+
IKEバージョン:ikev1

自宅の仮想ルータの設定

ダウンロードした設定ファイルを元に仮想ルータに設定を入れていきます。グローバルIPやトンネルIPなどは環境に合わせて修正して下さい。

IKEの設定

# --------------------------------------------------------------------------------
# IPSec Tunnel #1
# --------------------------------------------------------------------------------
set vpn ipsec ike-group AWS lifetime '28800'
set vpn ipsec ike-group AWS proposal 1 dh-group '2'
set vpn ipsec ike-group AWS proposal 1 encryption 'aes128'
set vpn ipsec ike-group AWS proposal 1 hash 'sha1'
set vpn ipsec site-to-site peer 54.178.177.98 authentication mode 'pre-shared-secret'
set vpn ipsec site-to-site peer 54.178.177.98 authentication pre-shared-secret '●事前共有キー●'
set vpn ipsec site-to-site peer 54.178.177.98 description 'VPC tunnel 1'
set vpn ipsec site-to-site peer 54.178.177.98 ike-group 'AWS'
set vpn ipsec site-to-site peer 54.178.177.98 local-address '●vyosのWAN側インタフェースのプライベートIP●'
set vpn ipsec site-to-site peer 54.178.177.98 vti bind 'vti0'
set vpn ipsec site-to-site peer 54.178.177.98 vti esp-group 'AWS'

# --------------------------------------------------------------------------------
# IPSec Tunnel #2
# --------------------------------------------------------------------------------
set vpn ipsec ike-group AWS lifetime '28800'
set vpn ipsec ike-group AWS proposal 1 dh-group '2'
set vpn ipsec ike-group AWS proposal 1 encryption 'aes128'
set vpn ipsec ike-group AWS proposal 1 hash 'sha1'
set vpn ipsec site-to-site peer 35.73.28.153 authentication mode 'pre-shared-secret'
set vpn ipsec site-to-site peer 35.73.28.153 authentication pre-shared-secret '●事前共有キー●'
set vpn ipsec site-to-site peer 35.73.28.153 description 'VPC tunnel 2'
set vpn ipsec site-to-site peer 35.73.28.153 ike-group 'AWS'
set vpn ipsec site-to-site peer 35.73.28.153 local-address '●vyosのWAN側インタフェースのプライベートIP●'
set vpn ipsec site-to-site peer 35.73.28.153 vti bind 'vti1'
set vpn ipsec site-to-site peer 35.73.28.153 vti esp-group 'AWS'

IPSecの設定

set vpn ipsec ipsec-interfaces interface 'eth0' ●使用するインターフェースを確認
set vpn ipsec esp-group AWS compression 'disable'
set vpn ipsec esp-group AWS lifetime '3600'
set vpn ipsec esp-group AWS mode 'tunnel'
set vpn ipsec esp-group AWS pfs 'enable'
set vpn ipsec esp-group AWS proposal 1 encryption 'aes128'
set vpn ipsec esp-group AWS proposal 1 hash 'sha1'

トンネルの設定

# --------------------------------------------------------------------------------
# IPSec Tunnel #1
# --------------------------------------------------------------------------------
set interfaces vti vti0 address '169.254.211.118/30'
set interfaces vti vti0 description 'VPC tunnel 1'
set interfaces vti vti0 mtu '1436'

# --------------------------------------------------------------------------------
# IPSec Tunnel #2
# --------------------------------------------------------------------------------
set interfaces vti vti1 address '169.254.45.214/30'
set interfaces vti vti1 description 'VPC tunnel 2'
set interfaces vti vti1 mtu '1436'

BGPの設定

# --------------------------------------------------------------------------------
# IPSec Tunnel #1
# --------------------------------------------------------------------------------
set protocols bgp 65000 neighbor 169.254.211.117 remote-as '64512'
set protocols bgp 65000 neighbor 169.254.211.117 address-family ipv4-unicast soft-reconfiguration 'inbound' 
set protocols bgp 65000 neighbor 169.254.211.117 timers holdtime '30'
set protocols bgp 65000 neighbor 169.254.211.117 timers keepalive '10'
set protocols bgp 65000 address-family ipv4-unicast network 0.0.0.0/0

# --------------------------------------------------------------------------------
# IPSec Tunnel #2
# --------------------------------------------------------------------------------
set protocols bgp 65000 neighbor 169.254.45.213 remote-as '64512'
set protocols bgp 65000 neighbor 169.254.45.213 address-family ipv4-unicast soft-reconfiguration 'inbound' 
set protocols bgp 65000 neighbor 169.254.45.213 timers holdtime '30'
set protocols bgp 65000 neighbor 169.254.45.213 timers keepalive '10'
set protocols bgp 65000 address-family ipv4-unicast network 0.0.0.0/0

NATトラバーサルの設定

自宅の環境によっては必要ですが、管理人の環境では不要でした。

set vpn ipsec nat-traversal enable
set vpn ipsec nat-networks allowed-network 0.0.0.0/0

動作確認

仮想ルータの設定が完了するとトンネルのステータスがアップします。

仮想ルータ側でも基本的な動作確認をしておきます。

# --------------------------------------------------------------------------------
# IPSec Tunnel #1
# --------------------------------------------------------------------------------
#仮想ルータ側のトンネルIPにPing
vyos@Router# ping 169.254.211.118
PING 169.254.211.118 (169.254.211.118) 56(84) bytes of data.
64 bytes from 169.254.211.118: icmp_seq=1 ttl=64 time=0.014 ms
64 bytes from 169.254.211.118: icmp_seq=2 ttl=64 time=0.083 ms
64 bytes from 169.254.211.118: icmp_seq=3 ttl=64 time=0.082 ms

# AWS側のトンネルIPにPing
vyos@Router# ping 169.254.211.117
PING 169.254.211.117 (169.254.211.117) 56(84) bytes of data.
64 bytes from 169.254.211.117: icmp_seq=1 ttl=254 time=18.6 ms
64 bytes from 169.254.211.117: icmp_seq=2 ttl=254 time=19.5 ms
64 bytes from 169.254.211.117: icmp_seq=3 ttl=254 time=22.6 ms

# --------------------------------------------------------------------------------
# IPSec Tunnel #2
# --------------------------------------------------------------------------------
# 仮想ルータ側のトンネルIPにPing
vyos@Router# ping 169.254.45.214
PING 169.254.45.214 (169.254.45.214) 56(84) bytes of data.
64 bytes from 169.254.45.214: icmp_seq=1 ttl=64 time=0.021 ms
64 bytes from 169.254.45.214: icmp_seq=2 ttl=64 time=0.086 ms
64 bytes from 169.254.45.214: icmp_seq=3 ttl=64 time=0.037 ms

# AWS側のトンネルIPにPing
vyos@Router# ping 169.254.45.213
PING 169.254.45.213 (169.254.45.213) 56(84) bytes of data.
64 bytes from 169.254.45.213: icmp_seq=1 ttl=254 time=20.8 ms
64 bytes from 169.254.45.213: icmp_seq=2 ttl=254 time=20.5 ms
64 bytes from 169.254.45.213: icmp_seq=3 ttl=254 time=20.7 ms
# インターフェースの状態を確認
vyos@Router:~$ show interfaces
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface        IP Address                        S/L  Description
---------        ----------                        ---  -----------
eth1             192.168.188.154/24                u/u
lo               127.0.0.1/8                       u/u
                 ::1/128
vti0             169.254.211.118/30                u/u  VPC tunnel 1
vti1             169.254.45.214/30                 u/u  VPC tunnel 2


# ISAKMP SAの生成状態を確認する
vyos@Router:~$ show vpn ike sa
Peer ID / IP                            Local ID / IP
------------                            -------------
35.73.28.153                            192.168.188.154

    Description: VPC tunnel 1

    State  IKEVer  Encrypt  Hash    D-H Group      NAT-T  A-Time  L-Time
    -----  ------  -------  ----    ---------      -----  ------  ------
    up     IKEv1   aes128   sha1_96 2(MODP_1024)   no     3600    28800


Peer ID / IP                            Local ID / IP
------------                            -------------
54.178.177.98                           192.168.188.154

    Description: VPC tunnel 2

    State  IKEVer  Encrypt  Hash    D-H Group      NAT-T  A-Time  L-Time
    -----  ------  -------  ----    ---------      -----  ------  ------
    up     IKEv1   aes128   sha1_96 2(MODP_1024)   no     3600    28800


# IPSecの状態を確認する
vyos@Router:~$ show vpn ipsec sa
Connection                     State    Uptime    Bytes In/Out    Packets In/Out    Remote address    Remote ID    Proposal
-----------------------------  -------  --------  --------------  ----------------  ----------------  -----------  ----------------------------------
peer-54.178.177.98-tunnel-vti  up       2m32s     2K/2K           38/40             54.178.177.98     N/A          AES_CBC_128/HMAC_SHA1_96/MODP_1024
peer-35.73.28.153-tunnel-vti   up       2m32s     2K/2K           44/45             35.73.28.153      N/A          AES_CBC_128/HMAC_SHA1_96/MODP_1024


# ルートテーブルを確認する
vyos@Router:~$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         _gateway        0.0.0.0         UG    20     0        0 eth1
10.1.0.0        169.254.45.213  255.255.0.0     UG    20     0        0 vti1
169.254.45.212  0.0.0.0         255.255.255.252 U     0      0        0 vti1
169.254.211.116 0.0.0.0         255.255.255.252 U     0      0        0 vti0
192.168.188.0   0.0.0.0         255.255.255.0   U     0      0        0 eth1

コメント

タイトルとURLをコピーしました