EdgeRouter X がすごい | yabe.jpに触発されて、EdgeRouter Xを購入しました。手元のハードとしてきちんとしたルーターがあるっていいことだと思います。色々と実験できるので。
さて今回はEdgeRouter XとVyOS on AWSでOpenVPNを用いた拠点間VPNをはりました。
EdgeRouter X
とVyOS
で以下にして拠点間VPNをはるかを扱います- AWSについては詳しくは扱いません (
Security Group
やネットワークについてなど)
EdgeRouter XとVyOS on AWSでOpenVPNを用いた拠点間VPNをはりました。簡単なネットワーク図としては以下のような感じです:
構成するOpenVPN
の情報、およびに利用したVyOSとEdgeRouterの情報です。
Items | 自宅 | AWS |
---|
グローバルIP | home.kazu634.com | 54.238.253.225 |
WAN側インターフェース | eth0 | eth0 |
LAN側ネットワーク | 192.168.10.0/24 | 10.0.10.0/24 |
OpenVPNトンネルIPアドレス | 192.168.115.2 | 192.168.115.1 |
利用したEdgeRouter Xは以下のとおりです:
1
2
3
4
5
6
7
8
| admin@ubnt:~$ show version
Version: v1.9.0
Build ID: 4901118
Build on: 08/04/16 11:31
Copyright: 2012-2016 Ubiquiti Networks, Inc.
HW model: EdgeRouter X 5-Port
HW S/N: 802AA85C1DF4
Uptime: 13:38:07 up 1 day, 4:33, 1 user, load average: 1.16, 1.60, 1.86
|
利用したVyOSは以下のとおりです:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| vyos@VyOS-AMI:~$ show version
Version: VyOS 1.1.7
description: VyOS 1.1.7 (helium)
Copyright: 2016 VyOS maintainers and contributors
Built by: maintainers@vyos.net
Built on: Wed Feb 17 09:57:31 UTC 2016
Build ID: 1602170957-4459750
System type: x86 64-bit
Boot via: image
Hypervisor: Xen hvm
HW model: HVM domU
HW S/N: ec24bd54-36b0-acde-7804-900f0a6c0510
HW UUID: EC24BD54-36B0-ACDE-7804-900F0A6C0510
Uptime: 22:25:54 up 28 min, 1 user, load average: 0.00, 0.01, 0.02
|
AWS側の作業としては以下になります:
ここでは詳しくは説明しませんが、VyOSのインスタンスを作成します。私はt2.nano
で作成しました。
今回作成する際はGlobal側のインターフェースを付与し、グローバルIPアドレスを割り当てました。
Private側のインターフェースを追加します。
VyOSのインスタンスにアサインしたENIのプロミスキャスモードをオンにします。要するにここです:
Global側のネットワークのルーティングテーブルに、192.168.10.0/24へのルーティングとして、VyOSのGlobal側のNICを指定します。Private側のネットワークのルーティングテーブルに192.168.10.0/24へのルーティングとして、VyOSのPrivate側のNICを指定します。
各種設定を説明します。
タイムゾーンの設定をしておくと、後で役に立つはずです:
1
2
3
4
| configure
set system time-zone Asia/Tokyo
commit
save
|
追加したENIにIPアドレスを付与します。とりあえずここではDHCPで割り当てます:
1
2
3
4
5
| configure
set interfaces ethernet eth1
set interfaces ethernet eth1 address dhcp
commit
save
|
NICが2つ以上あるので、デフォルトゲートウェイを明示的に指定してあげます。ここではGlobal側のゲートウェイをデフォルトゲートウェイとして指定します:
1
2
3
4
| configure
set system gateway-address 10.0.1.1
commit
save
|
最後にOpenVPN
の設定を実施します。
オペレーションモードで以下のコマンドを実行します:
1
| generate openvpn key /config/auth/aws-home
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
| configure
set interfaces openvpn vtun1
set interfaces openvpn vtun1 mode site-to-site
## OpenVPN のプロトコルを指定
set interfaces openvpn vtun1 protocol udp
## OpenVPN が使うポート番号を設定
set interfaces openvpn vtun1 local-port 51194
set interfaces openvpn vtun1 remote-port 51194
## OpenVPN のトンネルの IP アドレスを設定
set interfaces openvpn vtun1 local-address 192.168.115.1
set interfaces openvpn vtun1 remote-address 192.168.115.2
## EdgeRouter X on 自宅のグローバルIPを設定
set interfaces openvpn vtun1 remote-host home.kazu634.com
## 共通鍵の場所を指定
set interfaces openvpn vtun1 shared-secret-key-file /config/auth/aws-home
## 色々な OpenVPN のオプションを設定
set interfaces openvpn vtun1 openvpn-option "--comp-lzo"
set interfaces openvpn vtun1 openvpn-option "--float"
set interfaces openvpn vtun1 openvpn-option "--ping 10"
set interfaces openvpn vtun1 openvpn-option "--ping-restart 20"
set interfaces openvpn vtun1 openvpn-option "--ping-timer-rem"
set interfaces openvpn vtun1 openvpn-option "--persist-tun"
set interfaces openvpn vtun1 openvpn-option "--persist-key"
set interfaces openvpn vtun1 openvpn-option "--user nobody"
set interfaces openvpn vtun1 openvpn-option "--group nogroup"
set interfaces openvpn vtun1 openvpn-option "--fragment 1280”
## 自宅側のネットワークにアクセスする時に OpenVPN を使うよう Static Route 設定
set protocols static interface-route 192.168.10.0/24 next-hop-interface vtun1
## 設定を保存する
commit
save
|
以下の設定を実施します:
VyOS on AWS側で作成した/config/auth/aws-home
の内容をコピペし、EdgeRouter X
側に同じパス・ファイル名で秘密鍵ファイルを作成します。
なお、権限を600にしておく必要がありますので、注意ください。おそらくこんな感じで作業したはずです:
1
2
3
| sudo -s
vi /config/auth/aws-home
chmod 600 /config/auth/aws-home
|
以下の設定を実施します:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
| configure
set interfaces openvpn vtun1
set interfaces openvpn vtun1 mode site-to-site
## OpenVPN のプロトコルを指定
set interfaces openvpn vtun1 protocol udp
## OpenVPN が使うポート番号を設定
set interfaces openvpn vtun1 local-port 51194
set interfaces openvpn vtun1 remote-port 51194
## OpenVPN のトンネルの IP アドレスを設定
set interfaces openvpn vtun1 local-address 192.168.115.2
set interfaces openvpn vtun1 remote-address 192.168.115.1
## VyOS on AWSのグローバルIPを設定
set interfaces openvpn vtun1 remote-host 54.238.253.225
## 共通鍵の場所を指定
set interfaces openvpn vtun1 shared-secret-key-file /config/auth/aws-home
## 色々な OpenVPN のオプションを設定
set interfaces openvpn vtun1 openvpn-option "--comp-lzo"
set interfaces openvpn vtun1 openvpn-option "--float"
set interfaces openvpn vtun1 openvpn-option "--ping 10"
set interfaces openvpn vtun1 openvpn-option "--ping-restart 20"
set interfaces openvpn vtun1 openvpn-option "--ping-timer-rem"
set interfaces openvpn vtun1 openvpn-option "--persist-tun"
set interfaces openvpn vtun1 openvpn-option "--persist-key"
set interfaces openvpn vtun1 openvpn-option "--user nobody"
set interfaces openvpn vtun1 openvpn-option "--group nogroup"
set interfaces openvpn vtun1 openvpn-option "--fragment 1280"
## AWS側のネットワークにアクセスする時に OpenVPN を使うよう Static Route 設定
set protocols static interface-route 10.0.10.0/24 next-hop-interface vtun1
## 設定を保存する
commit
save
|
相互にping
で疎通が取れればOKです。ステータス確認コマンドとしては、以下のコマンドがあるようです:
動作確認コマンドの実行サンプル:
1
2
3
4
5
6
| admin@ubnt:~$ show openvpn status site-to-site
OpenVPN client status on vtun1 []
Remote CN Remote IP Tunnel IP TX byte RX byte Connected Since
--------------- --------------- --------------- ------- ------- ------------------------
None (PSK) 54.238.253.225 192.168.115.1 2.2K 1.8K N/A
|
動作確認コマンドの実行サンプル:
1
2
3
4
5
6
7
| vyos@VyOS-AMI:~$ show openvpn site-to-site status
OpenVPN client status on vtun1 []
Remote CN Remote IP Tunnel IP TX byte RX byte Connected Since
--------- --------- --------- ------- ------- ---------------
None (PSK) home.kazu634.com 192.168.115.2 22.3K 23.9K N/A
|