VyOS を導入してOpenVPN を導入

0 件のコメント
外から家のESXiにアクセスするためにOpenVPNを使う。

構成

OpenVPNサーバは別セグメントを繋ぐルータ的な役割は持たないので 仮想NICは1枚。
インターネットアクセスルータでスタティックルーティングを切る必要あり。
VPNトンネル内IP: 10.55.55.0/24
LAN内IP: 192.168.86.0/24

VyOS入手

今回は ovaファイルを入手 して起動。
初期ID/PASS= vyos/vyos でログイン。

設定モードへ入ってvyosとrootのパスワードを再設定
vyos@vyos:~$ configure
vyos@vyos# set system login user vyos authentication plaintext-password _PASSWORD_
vyos@vyos# set system login user root authentication plaintext-password _PASSWORD_
固定IPに変更
vyos@vyos# set interfaces ethernet eth0 address '192.168.86.254/24'
vyos@vyos# set interfaces ethernet eth0 description 'MyHome'
vyos@vyos# set system gateway-address 192.168.86.1
vyos@vyos# set system name-server '192.168.86.1'
タイムゾーン修正とSSHの有効化。
vyos@vyos# set system time-zone 'Asia/Tokyo'
vyos@vyos# set service ssh port 22
vyos@vyos# commit
vyos@vyos# save

なお、commit じゃなくて破棄する場合は
vyos@vyos# discard

OpenVPNの環境整備のため rootへ昇格。
easy-rsa の環境をデフォルト保持するため、コピーしてから使う。
vyos@vyos# su -
Password: 
root@vyos:~# cp /usr/share/doc/openvpn/examples/easy-rsa/2.0/ /config/easyrsa2
root@vyos:~# cd /config/easyrsa2
環境設定用のvarsをあらかじめ修正して読み込む。
root@vyos:/config/easyrsa2# cp vars vars.new
root@vyos:/config/easyrsa2# vi vars.new
こんな感じ。国など証明書の属性情報と、証明書の有効期限を変更した。
root@vyos:/config/easyrsa2# diff -u vars vars.new 
--- vars        2015-03-09 23:00:55.000000000 +0900
+++ vars.new    2017-11-01 21:22:20.362047193 +0900
@@ -56,13 +56,13 @@
 export CA_EXPIRE=3650
 
 # In how many days should certificates expire?
-export KEY_EXPIRE=3650
+export KEY_EXPIRE=365
 
 # These are the default values for fields
 # which will be placed in the certificate.
 # Don't leave any of these fields blank.
-export KEY_COUNTRY="US"
-export KEY_PROVINCE="CA"
-export KEY_CITY="SanFrancisco"
-export KEY_ORG="Fort-Funston"
-export KEY_EMAIL="me@myhost.mydomain"
+export KEY_COUNTRY="JP"
+export KEY_PROVINCE="Tokyo"
+export KEY_CITY="Shibuya"
+export KEY_ORG="MyHome"
+export KEY_EMAIL="gogadget@myhost.mydomain"
root@vyos:/config/easyrsa2# . vars
念のため clean-allでキレイにしてから
root@vyos:/config/easyrsa2# ./clean-all
認証局/サーバー/クライアントの キー/証明書 を作成
root@vyos:/config/easyrsa2# ./build-ca
root@vyos:/config/easyrsa2# ./build-dh
root@vyos:/config/easyrsa2# ./build-key-server server
root@vyos:/config/easyrsa2# ./build-key client
crl.pem ファイルを作成するため、もうひとつダミーのクライアントキー/証明書作成の上revoke。
root@vyos:/config/easyrsa2# ./build-key dummy
root@vyos:/config/easyrsa2# ./revoke-full dummy
CRLのデフォルト有効期限は30日と短い。有効期限が切れると全部の証明書が使えなくなるので、crl.pemを生成する前に必要に応じて openssl.cnf を修正しとくべき。
default_crl_days= 30

もし、WARNING: No server certificate verification method has been enabled が気になるなら共有キーta.keyも作成。
セキュリティは高くなるが、クライアント側にも保持しないとダメなのでちょっと面倒。
root@vyos:/config/easyrsa2# openvpn --genkey --secret keys/ta.key
作成したデータを /config/auth/ovpn へ。/config/auth に置いとけばアップデート時も守られるらしい?
root@vyos:/config/easyrsa2# mkdir /config/auth/ovpn
root@vyos:/config/easyrsa2# cd keys
root@vyos:/config/easyrsa2/keys# cp ca.crt dh1024.pem server.key server.crt crl.pem ta.key /config/auth/ovpn
openvpnのサーバ用設定をする。
root@vyos:/config/easyrsa2/keys# cd /config/auth/ovpn
root@vyos:/auth/config# set interfaces openvpn vtun0 mode 'server'
root@vyos:/auth/config# set interfaces openvpn vtun0 protocol udp
root@vyos:/auth/config# set interfaces openvpn vtun0 local-port '1194'
root@vyos:/auth/config# set interfaces openvpn vtun0 tls ca-cert-file '/config/auth/ovpn/ca.crt'
root@vyos:/auth/config# set interfaces openvpn vtun0 tls cert-file '/config/auth/ovpn/server.crt'
root@vyos:/auth/config# set interfaces openvpn vtun0 tls dh-file '/config/auth/ovpn/dh1024.pem'
root@vyos:/auth/config# set interfaces openvpn vtun0 tls key-file '/config/auth/ovpn/server.key'
root@vyos:/auth/config# set interfaces openvpn vtun0 tls crl-file /config/auth/crl.pem
root@vyos:/auth/config# set interfaces openvpn vtun0 openvpn-option "tls-auth /config/auth/opvn/ta.key 0"
root@vyos:/auth/config# set interfaces openvpn vtun0 openvpn-option "mssfix 1280"
root@vyos:/auth/config# set interfaces openvpn vtun0 persistent-tunnel
root@vyos:/auth/config# set interfaces openvpn vtun0 server subnet '10.55.55.0/24'
root@vyos:/auth/config# set interfaces openvpn vtun0 server push-route '192.168.86.0/24'

クライアント用設定ファイルはこんな感じで
client
dev tun
remote xxx.yyy.zzz 1194

ca   ca.crt
cert client.crt
key  client.key
tls-auth ta.key 0

mssfix 1280
comp-lzo
verb 3

自宅ルータでVPNトンネル用(10.55.55.0/24)の静的ルーティングを追加して完了。
最終的にはDHCPサーバは別途構築して、VPN用ルーティング情報も渡してしまおうかと。

0 件のコメント :

コメントを投稿