ちょっと話題の記事

VyOSを利用したVPN環境構築

VPN環境をごにょごにょしたくて、VyOSを利用したVPN環境を構築したので、そのアウトプットとなります。 本エントリでは、VPN設定(カスタマーゲートウェイ、仮想プライベートゲートウェイ、VPN接続)はマネジメントコンソールより実施し、それ以外はCloudFormationを用いて構築しています。
2018.07.01

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、坂巻です。

VPN環境をごにょごにょしたくて、VyOSを利用したVPN環境を構築したので、そのアウトプットとなります。 本エントリでは、VPN設定(カスタマーゲートウェイ、仮想プライベートゲートウェイ、VPN接続)はマネジメントコンソールより実施し、それ以外はCloudFormationを用いて構築しています。

目次

  • 今回の構成
  • AWSリソース構築
    • VPC/EC2構築
    • カスタマーゲートウェイ作成
    • 仮想プライベートゲートウェイ作成
    • ルートテーブル編集
    • VPN接続作成
  • VyOS設定
  • 接続確認

今回の構成

最終的な構成は以下となります。 17

AWSリソース構築

VPC/EC2作成

東京リージョンにtokyo-prd-vpcを、シンガポールリージョンにsingapore-prd-vpcを構築します。
CloudFormationのテンプレートはこちらにありますので、各リージョンで実行してください。

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

東京リージョンにて、カスタマーゲートウェイを作成します。カスタマーゲートウェイは、ユーザ側に配置されるVPN装置(オンプレミス側のルータ等)です。 今回はシンガポールリージョンのVyOSインスタンスのEIPがそれになります。

入力値の詳細についてはカスタマーゲートウェイを作成するを確認してください。

1

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

東京リージョンにて、仮想プライベートゲートウェイを作成します。仮想プライベートゲートウェイは、VPC側に配置するゲートウェイです。 [ASN]はAmazonのデフォルトASNを指定しています。

入力値の詳細については仮想プライベートゲートウェイを作成するを確認してください。

2

仮想プライベートゲートウェイ作成後は、VPCにアタッチします。 4

ルートテーブル編集

東京リージョンにて、ルートテーブルを編集します。 シンガポールリージョンのサブネット(192.168.1.0/24、192.168.2.0/24)へのルーティングを追加します。 ターゲットには、東京リージョンで作成した仮想プライベートゲートウェイを指定しています。

03

VPN接続作成

カスタマーゲートウェイと、仮想プライベートゲートウェイをVPNで接続するために、東京リージョンにて、VPN接続を作成します。冗長性確保のために、AWSにより2つのトンネルが作成されます。

  • 仮想プライベートゲートウェイ…作成した仮想プライベートゲートウェイを選択
  • カスタマーゲートウェイ…既存
  • カスタマーゲートウェイIP…作成したカスタマーゲートウェイを選択
  • ルーティングオプシション…動的
  • トンネルオプション…未入力

入力値の詳細についてはVPN 接続を作成して、カスタマーゲートウェイを設定するを確認してください。

9

VPN接続を作成後、しばらくすると使用可能となりますが、VPNトンネルのステータスはダウンしています。

13

14

カスタマーゲートウェイ側(ここではVyOSインスタンス)の設定を行うために、設定ファイルをダウンロードします。

  • ベンダー…Vyatta
  • プラットフォーム…Vyatta Network OS
  • ソフトウェア…Vyatta Network OS 6.5+

12

ダウンロードした設定ファイルの下記を修正します。

(変更前)
set vpn ipsec site-to-site peer ***** local-address [VyOSインスタンスのEIP]
set protocols bgp 65000 network 0.0.0.0/0

(変更後)
set vpn ipsec site-to-site peer ***** local-address [VyOSインスタンスのプライベートIP]
set protocols bgp 65000 network 192.168.0.0/16

VyOS設定

シンガポールリージョンにて、ルートテーブルを編集します。
東京リージョンの(10.0.1.0/24と10.0.2.0/24)へのルートのVyOSインスタンスを経由するように設定します。ターゲットeni-61f6113aはVyOSインスタンスにアタッチしたEIPのネットワークインターフェイスIDです。

8

VyOSインスタンスの送信元/送信先チェックの無効化します。 送信元または送信先がVyOSインスタンスでないときにも、トラフィックを送受信できるようにしています。

01

VyOSインスタンスにSSH接続後します。ログインユーザはvyosです。ログイン後configure実行し、先程ダウンロードしたコンフィグを投入します。投入後はcommitsaveを実行し反映させます。

$ ssh -i singapore-prd-key.pem vyos@52.221.138.14
(略)
vyos@vyos:~$ configure
[edit]
vyos@vyos# set vpn ipsec ike-group AWS lifetime '28800'
(略)
[edit]
vyos@vyos# commit
No configuration changes to commit
[edit]
vyos@vyos# save
Saving configuration to '/config/config.boot'...
Done
[edit]
vyos@vyos# exit

東京リージョンのVPN接続を確認します。正しく設定ができれば、ステータスがアップとなります。

02

接続確認

東京リージョンのサーバから、シンガポールリージョンのサーバのプライベートIPアドレスにリモート接続して接続を確認します。

15

シンガポールリージョンのサーバに接続でき、VPN接続の確認が行えました。

16

さいごに

大部分をテンプレート化しましたので、これでVPN環境がさくっとつくれます。 VPN環境をごにょごにょしたくなった時に見返したいと思います!

参考

Amazon VPC ハードウェアVPN接続時の留意点

AWSへのVPN接続におけるサンプルコンフィグの注意点:Cisco IOS編

VyOSをAWSで使う時によくやることをまとめてみた

1つのグローバルIPで複数VPCとVPN接続してみた#reinvent