Junkie Work

access: 181430

VPNサーバ(OpenVPN)


VPSを借りましたが、自宅ネットワークからつなげるのが少し不便ですので、VPNでつなぐことにします。

固定IPのVPS側をサーバーとして、自宅ネットから接続するようにします。

インストール

インストールはpkgを利用します。

 # pkg install openvpn

easy-rsaも一緒にインストールされます。

設定

認証に使う証明書などを生成します。

いわゆる認証局です。opensslを直接使って生成するのもいいのですが、管理が楽なeasy-rsaのVer3を使うことにします。

インストールはされていますが、/usr/local/share/配下に配置されているので、/usr/local/etc/openvpn/配下にコピーしておきます。

 # mkdir /usr/local/etc/openvpn
 # cp -fr /usr/local/share/easy-rsa/ /usr/local/etc/openvpn/easy-rsa/
 # cd /usr/local/etc/openvpn/easy-rsa/

環境ファイルを編集

# cp vars.example vars
# vi vars

varsファイルに以下を追記する

set_var EASYRSA_CERT_EXPIRE    3650

pkiを初期化

# easyrsa init-pki

認証局を初期化して生成
その際「Common Name」を尋ねられるので適宜設定します。

# easyrsa build-ca nopass

DHパラメータを生成します

# easyrsa gen-dh

サーバー用秘密鍵および証明書(server.crtとserver.key)をパス無しで生成します。
serverの部分はその名前で発行されるというだけなので、他と重ならない名前ならOKです
中間攻撃対策のため、「--ns-cert=YES」を指定しておきます。これがないと、クライアントで「ns-cert-type server」と記載した場合に繋げられなくなります。

# easyrsa --ns-cert=YES build-server-full server nopass
「Confirm request details:」と表示されたら「yes」と入力します。

クライアント用秘密鍵および証明書(.crtと.key)をパス無しで生成します。
クライアント名は他と重ならない値にしておけば自由に決められますが、今回は ユーザー名@サーバー名 のファイル名にします。 こうしておけば、サーバー/クライアント双方で利用目的が明確になります。
以下のhome@junkie.workがクライアント名です。

# easyrsa build-client-full home@junkie.work nopass
「Confirm request details:」と表示されたら「yes」と入力します。

/usr/local/etc/openvpn/の設定をします。

# cd /usr/local/etc/openvpn/
# ln -s easy-rsa/pki
# vi openvpn.conf

/usr/local/etc/openvpn/openvpn.conf に設定を記載します。

dev tun
port 1194
proto udp

ca pki/ca.crt
cert pki/issued/server.crt
key pki/private/server.key
dh pki/dh.pem

server 10.0.129.0 255.255.255.0
route 10.0.0.0 255.255.0.0
push "route 10.0.129.0 255.255.255.0"
client-config-dir ccd
keepalive 10 120
comp-lzo

user nobody
group nobody
persist-key
persist-tun

status openvpn-status.log
log-append  /var/log/openvpn.log
verb 1

client-config-dirは、クライアント名でファイルを置けばそのクライアント個別の設定が書けます。
IPアドレスを固定したい場合などに利用します。

固定IPアドレスをクライアントに指定する場合は、(4の倍数+1)と(4の倍数+2)で組み合わせてください。(例:10.0.0.81と10.0.0.82)

/usr/local/etc/openvpn/ccd/home@junkie.work

ifconfig-push 10.0.129.101 10.0.129.102
iroute 10.0.0.0 255.255.0.0

クライアントの設定は比較的簡単な設定を利用します。

サービスの登録

# sysrc openvpn_enable="YES"
# sysrc openvpn_if="tun" 

起動

サービスとして起動します

# service openvpn start