気の向くままに ~備忘録@wiki~

FreeBSD - OpenVPN

最終更新:

shirayuu

- view
管理者のみ編集可

OpenVPN

OpenVPN は、フリーのVPN。
OpenVPN How To - 日本語

目次


OpenVPN のインストール

いつも通りの手順でmake
# cd /usr/ports/security/openvpn
# make
# make install

OpenVPN の認証設定

OpenVPN 認証の設定を行う。
OpenVPN は、 SSL を使って鍵認証を行っている。

前準備

まずは、そこら辺のサンプルを適当な場所に移す。(サンプルには手をつけない)
# mkdir -p /usr/local/path/openvpn/
# cp -vr /usr/local/share/doc/openvpn/easy-rsa/* /usr/local/path/openvpn/
彫り込むディレクトリは適当で良い。

認証局と秘密鍵の作成

実際に編集していく
# cd /usr/local/path/openvpn/

まずは、vars を 編集する。
vars の下の方にある
export KEY_COUNTRY=JP                 # 国名
export KEY_PROVINCE=TOKYO             # たとえば、都道府県
export KEY_CITY=TOKYO                 # たとえば、市町村
export KEY_ORG="foobar"               # これはよくわからん
export KEY_EMAIL="me@myhost.mydomain" # 連絡先
これらを適当なものに編集。

これらの設定が今後の認証局作成、鍵作成に使われる基本的な値となる。
# . ./vars
# ./clean-all
# ./build-ca
~ 途中略 ~
Country Name (2 letter code) [JP]:
State or Province Name (full name) [TOKYO]:
Locality Name (eg, city) [TOKYO]:
Organization Name (eg, company) [foobar]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:OpenVPN Test
Email Address [me@myhost.mydomain]:
注意するべき点は、Common Name にユニークな名前を入れる必要があること。
すると、keys (/usr/local/path/openvpn/keys) に認証鍵がいくつか作成される。
ちなみに、ファイル名と用途の関係はこんな感じ。(OpenVPN 2.0 に記述されている。)
ファイル名 用途
ca.crt 認証局 証明書
ca.key 認証局 秘密鍵
index.txt 証明書リスト
serial シリアル記録用ファイル
この中で流出してはならないのは、ca.key。 秘密鍵なので厳重に保管しましょう。

サーバの認証局と鍵の作成

サーバ鍵を作成するには、
# ./build-key-server server
Country Name (2 letter code) [JP]:
State or Province Name (full name) [TOKYO]:
Locality Name (eg, city) [TOKYO]:
Organization Name (eg, company) [foobar]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []: server
Email Address [me@myhost.mydomain]:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Sign the certificate?'''1 out of 1 certificate requests certified, commit?''' で確認と署名するか聞いてくるのでy

ここで注意すべき点も、Common Name はユニークな名前であること。
build-key-server の引数と同じで良いと思います。

これで、サーバ関連の認証局と鍵ができあがる。
keys に、server.crt,server.csr,server.key などが作成されているか確認する。

クライアント用の認証局と鍵の作成

クライアント用の認証と鍵作るときは、
# ./build-key client1
# ./build-key-server server
Country Name (2 letter code) [JP]:
State or Province Name (full name) [TOKYO]:
Locality Name (eg, city) [TOKYO]:
Organization Name (eg, company) [foobar]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []: client1
Email Address [me@myhost.mydomain]:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
サーバ用の認証局を作ったときと同じ。
Common Name の名前は、ユニークなものでなければならない。

クライアント用の認証局と鍵は、クライアント分作る必要がある。
同じ鍵を渡してもよいが同時に利用できない。

DH パラメータ

最後に DH パラメータを作る
# ./build-dh
結構時間かかります。まあ、適当に暇つぶしてください。

これで、認証局、鍵の作成は終了あとは、ブリッジとかの設定。

ブリッジとか仮想NICとかの作成

OpenVPN は、ブリッジモードかルーティングモードかを選択できる。
今回は、同じネットワーク内に入りたいのでブリッジモードにする。

tap と bridge のロードと作成

tap と bridge のロード

OpenVPN のブリッジモードを使うためには、if_tap0if_bridge をロードする必要がある。
VPN に接続するためにtap を使い、tap を使うためにif_tap0 をロードする。
ブリッジするために、if_bridge を使う。 (bridge をロードしてもできるが、if_bridge の方が新しいらしい)
# kldload if_tap
# kldload if_bridge

tap0 と bridge0 の作成

これまでの手順の流れで/dev/tap0 があればを行えばよいが、ないと思うので
# openvpn openvpn --dev tap0
で、<Control> + c で強制終了させ、tap0 を作る。

bridge0 は、
# sudo ifconfig bridge0 create
で作る。
目安箱バナー