VyOS を AWS EC2 インスタンスで動作させ、異なる二つの VPC を VPN 接続してみます。簡単な構成であれば、VPC Peering という AWS が提供する機能を用いても実現できますが、AWS 以外のデータセンターとの接続が必要な場合など、VyOS を用いると要求に柔軟に対応できます。
VPC の設定
- myvpc-1 (10.1.0.0/16)
- mysubnet-1 (10.1.1.0/24)
- vyos-0001 (10.1.1.4, EIP xxx.xxx.xxx.xxx)
- mysubnet-1 (10.1.1.0/24)
- myvpc-2 (10.2.0.0/16)
- mysubnet-2 (10.2.1.0/24)
- vyos-0002 (10.2.1.4, EIP yyy.yyy.yyy.yyy)
- mysubnet-2 (10.2.1.0/24)
ルーティングテーブル
myvpc-1
- 0.0.0.0/0 → インターネットゲートウェイ
- 10.0.0.0/8 → vyos-0001
- 10.1.0.0/16 → local
myvpc-2
- 0.0.0.0/0 → インターネットゲートウェイ
- 10.0.0.0/8 → vyos-0002
- 10.2.0.0/16 → local
セキュリティグループ
以下の接続を許可します。検証用ですので簡単のため 0.0.0.0/0 としています。セキュリティ上は好ましくありません。
- TCP 22 from 0.0.0.0/0 (SSH)
- UDP 1194 from 0.0.0.0/0 (OpenVPN)
- ICMP ALL from 0.0.0.0/0 (ping 等)
VyOS EC2 インスタンスの用意
以下の二つのインスタンスを VyOS AMI を利用して用意します。インスタンス Launch 時に Community AMIs を選択して "vyos" という文字列で検索すると、リージョンに応じて複数の AMI が見つかります。2017/04/09 現在の Oregon リージョンで見つかった AMI のうち、VyOS (HVM) 1.1.7 (ami-ac23fccc) を利用することにします。
- vyos-0001 (10.1.1.4, EIP xxx.xxx.xxx.xxx)
- vyos-0002 (10.2.1.4, EIP yyy.yyy.yyy.yyy)
SSH ログイン時に利用するユーザー名は vyos です。
ssh -o ServerAliveInterval=1 -i /path/to/mykey.pem vyos@xxx.xxx.xxx.xxx
ssh -o ServerAliveInterval=1 -i /path/to/mykey.pem vyos@yyy.yyy.yyy.yyy
自分宛でないパケットも受信するように AWS 設定を変更
他の VPC に転送すべきパケットを受信するために、上記二つのインスタンスについて、AWS コンソールにおいて「Actions」→「Networking」→「Change Source/Dest. Check」を Disable します。
VPC 間 VPN 接続設定
サイト間 VPN 接続には、二拠点間の通信を暗号化する方式によって、主に IPsec-VPN と SSL-VPN があります。IPsec-VPN は IP 層で暗号化などを行うため、例えばプロキシサーバーが存在する場合の NAT 越えが困難になりますが、一般に処理は高速であるとされます。SSL-VPN は VyOS の場合、TCP/UDP 上の OpenVPN が アプリケーションプロセスとして SSL 終端となります。NAT 越えなどが問題になりません。
公式ドキュメントによると VyOS の場合は OpenVPN による SSL-VPN を用いても性能は大きく変わらないとありますので、ここでは設定の簡単な OpenVPN によるサイト間 VPN 接続を行います。
As a software router and firewall, VyOS does not see a performance gain for IPSec, or rather, a performance penalty for SSL VPN solutions such as OpenVPN.
If building a VPN solution using VyOS exclusively, OpenVPN will generally provide the best results in terms of ease-of-use, stability, and performance
https://wiki.vyos.net/wiki/User_Guide#OpenVPN
設定例
事前に共有鍵を生成します。生成された鍵は vyos-0002 に scp 等でコピーします。
vyos@vyos-0001:~$ generate openvpn key openvpn-20170409.key
Generating OpenVPN key to /config/auth/openvpn-20170409.key
Your new local OpenVPN key has been generated
vyos@vyos-0001:~$ ls -l /config/auth/
total 4
-rw------- 1 root vyattacfg 636 Apr 9 16:55 openvpn-20170409.key
それぞれ OpenVPN の設定を行います。
vyos-0001
set interfaces openvpn vtun1 mode site-to-site
set interfaces openvpn vtun1 protocol udp
set interfaces openvpn vtun1 persistent-tunnel
set interfaces openvpn vtun1 encryption aes256
set interfaces openvpn vtun1 hash sha256
set interfaces openvpn vtun1 shared-secret-key-file /config/auth/openvpn-20170409.key
set interfaces openvpn vtun1 remote-host yyy.yyy.yyy.yyy ←相手のVPNサーバ
set interfaces openvpn vtun1 remote-port 1194
set interfaces openvpn vtun1 local-address 169.254.255.1 ←OpenVPN 同士で利用する自分と相手のIP
set interfaces openvpn vtun1 remote-address 169.254.255.2
set protocols static interface-route 10.2.0.0/16 next-hop-interface vtun1 ←ルーティングするパケット
commit
save
vyos-0002
set interfaces openvpn vtun1 mode site-to-site
set interfaces openvpn vtun1 protocol udp
set interfaces openvpn vtun1 persistent-tunnel
set interfaces openvpn vtun1 encryption aes256
set interfaces openvpn vtun1 hash sha256
set interfaces openvpn vtun1 shared-secret-key-file /config/auth/openvpn-20170409.key
set interfaces openvpn vtun1 remote-host xxx.xxx.xxx.xxx
set interfaces openvpn vtun1 remote-port 1194
set interfaces openvpn vtun1 local-address 169.254.255.2
set interfaces openvpn vtun1 remote-address 169.254.255.1
set protocols static interface-route 10.1.0.0/16 next-hop-interface vtun1
commit
save
動作検証やログ確認を行います。
run show interfaces openvpn vtun1
run show log openvpn
ping 10.1.1.4
ping 10.2.1.4
リモートアクセス VPN 接続設定 (参考情報)
VyOS で利用できる VPN 接続には、サイト間 VPN の他にリモートアクセス VPN があります。拠点間の接続ではなく、自宅等の PC を、ある拠点の LAN 内に仮想的に接続するために利用します。
インフラ構築と自動化が得意。TerraformとAnsibleでインフラを自動構築するお仕事が多め
記事の執筆者にステッカーを贈る
有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。
さらに詳しく →Feedbacks
ログインするとコメントを投稿できます。





