2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWSと自宅をSite to Site VPN 接続してみる

Last updated at Posted at 2022-06-30

AWSのSite to Site VPNのサービスを使って、VPCと自宅のネットワークを接続してみた時の備忘録です。

自宅のVPNゲートウェイは、古いPCにvyosをインストールしたものを使いました。2022/06/27現在、AWSが出力するカスタマーゲートウェイ用の設定を使うためには1.3系のvyosが必要です。1.4系ではvyosのコマンドが変わっていて、うまく設定できませんでした。

ベースとする環境

下記がベースとする環境です。
image.png

仮想プライベートゲートウェイによるSite to Site VPN接続

仮想プライベートゲートウェイを使って自宅のネットワークとSite to Site VPNをしてみます。
下記が最終的な構成です。

image.png

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

  • AWSマネコンでVPCを選択します
  • 仮想プライベートネットワーク -> 仮想プライベートゲートウェイを選択します
  • 仮想プライベートゲートウェイを作成します

スクリーンショット 2022-06-30 22.05.47.png

  • アクション -> VPCにアタッチ を選択して、作成した仮想プライベートゲートウェイをVPCにアタッチします

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

  • AWSマネコンでVPCを選択します
  • 仮想プライベートネットワーク -> カスタマーゲートウェイを選択します
  • カスタマーゲートウェイを作成します
  • IPアドレスには自宅のグローバルIPアドレスを設定します

スクリーンショット 2022-06-30 22.01.35.png

[AWS] Site to Site VPNの作成

  • AWSマネコンでVPCを選択します
  • 仮想プライベートネットワーク -> Site to Site VPNを選択してVPNを作成します
  • 仮想プライベートゲートウェイと、カスタマーゲートウェイに、先ほど作成したものを設定します
  • ルーティングオプションではBGPを有効にしておきます

スクリーンショット 2022-06-30 22.09.57.png

[自宅] vyosのインストール

vyosの1.3系をインストールします。
LTS版は有償なので、下記からRC版のisoイメージをダウンロードします。
https://vyos.net/get/snapshots/

RC版にもいくつかありますが、今回はrc6を選択しました。vyos-1.3.0-rc6-amd64.iso (vyos-1.3.0-rc6)
isoイメージからインストール用のブータブルUSBを作成して、古いPC(Let's note CF-N10 SandyBridge世代)にインストールします。

[自宅] vyosのネットワーク設定

AWSの仮想プライベートゲートウェイと通信する側のインターフェス(WAN側インタフェース)と内側のインタフェース(LAN側インタフェース)の設定をします。
IPアドレスはWAN側は上位のルーターからDHCPでもらいます。LAN側は固定IPにします。今回はWiFiをWAN側、有線LANをLAN側のインタフェースとして使いました。

WAN側インタフェースの設定

configure
set interfaces wireless wlan0 type station
set interfaces wireless wlan0 security wpa mode wpa2
set interfaces wireless wlan0 ssid <WiFi接続先のSSID>
set interfaces wireless wlan0 security wpa passphrase <WiFi接続用のパスワード>
set interfaces wireless wlan0 address dhcp
commit
save

LAN側インタフェースの設定

configure
set interfaces ethernet eth0 address 172.16.0.1/16
commit
save

LAN側DHCPサーバーの設定

LAN側に接続されたクライアントにIPを払い出すためにDHCPサーバーの設定をします。

set service dhcp-server shared-network-name dhcp1
set service dhcp-server shared-network-name dhcp1 subnet 172.16.0.0/16 default-router 172.16.0.1
set service dhcp-server shared-network-name dhcp1 subnet 172.16.0.0/16 range 1 start 172.16.0.2
set service dhcp-server shared-network-name dhcp1 subnet 172.16.0.0/16 range 1 stop 172.16.0.9

[自宅] vyosのVPN設定(vyosをカスタマーゲートウェイにする設定)

AWSマネージメントコンソールのSite to Site VPNの画面から、「設定をダウンロード」を選択して、vyos用のVPN設定ファイルをダウンロードします。

スクリーンショット 2022-06-27 19.11.29.png

設定ファイルの中身は、vyos用のIPSec VPNとBGPを設定するためのコマンドリストです。
IKE設定、IPsec設定、トンネルインタフェース設定、BGP設定に別れているので、内容を確認し、必要に応じて環境に合わせて修正して実行していきます。

VPNトンネルを2本接続して冗長構成にすることが推奨されていますが、お試しなので1本だけの接続にします。設定ファイルの2本目の設定項目は使用しません。

IKE設定

<y.y.y.y>の部分を元の設定から変更します。NAT配下からNATトラバーサル機能を使って接続するため、local-address部はグローバルIPではなく、vyosのWAN側インタフェースのプライベートIPに変更します。

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 <x.x.x.x> authentication mode 'pre-shared-secret'
set vpn ipsec site-to-site peer <x.x.x.x> authentication pre-shared-secret '<事前共有キー>'
set vpn ipsec site-to-site peer <x.x.x.x> description 'VPC tunnel 1'
set vpn ipsec site-to-site peer <x.x.x.x> ike-group 'AWS'
set vpn ipsec site-to-site peer <x.x.x.x> local-address <y.y.y.y>
set vpn ipsec site-to-site peer <x.x.x.x> vti bind 'vti0'
set vpn ipsec site-to-site peer <x.x.x.x> vti esp-group 'AWS'

IPsec設定

WAN側インタフェースにwlan0を使うので、ipsec-interfaces interfacewlan0に変更します。

set vpn ipsec ipsec-interfaces interface 'wlan0'
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'

BGP設定

BGPの設定コマンドの一部の仕様が変わっているため、新しい仕様に合わせて書き換えます。具体的には、address-family ipv4-unicatを追加します。

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

[自宅] NAT越えのための設定

vyosでのNAT-Traversal設定

今回はONU + Router配下から接続するので、NAT-Traversalを有効にします。この設定は、AWSからダウンロードする設定ファイルには含まれていません。

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

ONU + ルータのポートマッピング設定

ONU + ルータのポートマッピング設定に、UDPの500と4500への通信を、vyosが起動しているPCのIPアドレスに転送するルールを追加します。

[AWS] 仮想プライベートゲートウェイへのルーティング設定

VPCのPrivate Subnetのルーティングテーブルに、自宅側のネットワーク(172.16.0.0/16)向けの通信の宛先を仮想プライベートゲートウェイにするルールを追加します。

スクリーンショット 2022-06-30 21.49.01.png

[AWS] EC2のセキュリティグループ設定

Private SubnetのEC2インスタンスのセキュリティグループを変更して、自宅のプライベートIPアドレス(172.16.0.0/16)からI通信を許可します。

VPN接続状態の確認

以上でIPsecによるVPN接続ができているはずですので、状態を確認していきます。

AWS上の確認

AWSマネージメントコンソールのSite to Site VPNの設定画面で、トンネルの状態を確認します。vyos側では、2本のうちの1本目の設定しかしていないため、1本目がUpステータスになっていれば、期待通りの動作です。

スクリーンショット 2022-06-30 21.24.08.png

VPCのPrivate Subnet上のEC2から、自宅のvyos配下のchromebookに向けてPingを打ってみます。

sh-4.2$ ping 172.16.0.2
PING 172.16.0.1 (172.16.0.2) 56(84) bytes of data.
64 bytes from 172.16.0.2: icmp_seq=1 ttl=64 time=133 ms

VPC -> 自宅が疎通しました。

自宅のvyosの状態確認

vyosの下記のコマンドを使って、IKEとIPsecのトンネルが貼られていることを確認します。

vyos@vyos:~$ show vpn ike sa 
Peer ID / IP                            Local ID / IP               
------------                            -------------
x.x.x.x                                 y.y.y.y                           

    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  
vyos@vyos:~$ show vpn ipsec sa 
Connection                   State    Uptime    Bytes In/Out    Packets In/Out    Remote address    Remote ID    Proposal
---------------------------  -------  --------  --------------  ----------------  ----------------  -----------  ----------------------------------
peer-x.x.x.x-tunnel-vti      up       7m46s     6K/6K           100/101           x.x.x.x           N/A          AES_CBC_128/HMAC_SHA1_96/MODP_1024

ルーティングテーブルも確認してみます。

vyos@vyos:~$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.0.1     0.0.0.0         UG    20     0        0 wlan0
10.60.0.0       169.254.92.205  255.255.0.0     UG    20     0        0 vti0
169.254.92.204  0.0.0.0         255.255.255.252 U     0      0        0 vti0
172.16.0.0      0.0.0.0         255.255.0.0     U     0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0

自宅のvyosのPCの配下に接続したchromebook(172.16.0.2)からEC2のプライベートIPアドレスを指定してPingを打ってみます。

ping 10.60.2.250
64byte from 10.60.2.250: icmp_seq=1 ttl=251 time=139 ms

自宅 -> VPCも疎通しました。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?