2011年6月29日水曜日

ServersMan@VPS(debian-32bit)を好き勝手に設定 - その10 - VPN

ServersMan@VPSでは2011年4月度のアップデートで
仮想ネットワークデバイスのTUNが利用可能になったので
OpenVPNと組み合わせてVPNを張ってみることにします。

最初にTUNのデバイスファイルを作成しますが、
既に存在する場合もあります。
私の場合は既にありました。

# ls -l /dev/net/tun

の実行結果が

crw------- 1 root root 10, 200 Apr 26 13:12 /dev/net/tun

ならば問題ありません。
("Apr 26 13:12"の部分は日付なので何でもかまいません)
もし結果が

ls: cannot access /dev/net/tun: No such file or directory

であれば、以下を実行します。

# mkdir -p /dev/net
# mknod --mode 600 /dev/net/tun c 10 200


次にOpenVPNをインストールします。
と思ったら既に入っていました。
ということで必要なファイルを準備するため以下を実行します。

# cp -rf /usr/share/doc/openvpn/examples/easy-rsa /etc/openvpn/

"/etc/openvpn/easy-rsa/2.0/vars"で環境変数を以下のように編集します。

export KEY_COUNTRY="JP"
export KEY_PROVINCE="<県名>"
export KEY_CITY="<市名>"
export KEY_ORG="<組織名>"
export KEY_EMAIL="<メールアドレス>"

プライベートCAの構築作業のため以下を実行します。

# cd /etc/openvpn/easy-rsa/2.0/
# source ./vars
# ./clean-all
# ./build-ca

設定値は全部デフォルトで問題ありません。
次にサーバ証明書・秘密鍵の作成のため以下を実行します。

# cd /etc/openvpn/easy-rsa/2.0/
# source ./vars
# ./build-key-server server

Common Name だけサーバのFQDNにし、パスワードは空にし、
他はデフォルトでかまいません。
それからクライアント証明書・秘密鍵の作成のため以下を実行します。

# cd /etc/openvpn/easy-rsa/2.0/
# source ./vars
# ./build-key-pass client<識別名>

パスフレーズは適当に入力して記憶しておき、
パスワードは空でかまいません。
最後にDHパラメータの生成のため以下を実行します。

# cd /etc/openvpn/easy-rsa/2.0/
# ./build-dh

これで"/etc/openvpn/easy-rsa/2.0/keys"ディレクトリに
いろいろファイルが出来ますが、
ここでサーバで使用するファイルが

  • ca.crt : CA証明書

  • server.crt : サーバ証明書

  • server.key : サーバ秘密鍵

  • dh1024.pem : DHパラメータ


クライアントで使用するファイルが

  • ca.crt : CA証明書

  • client<識別名>.crt : クライアント証明書

  • client<識別名>.key : クライアント秘密鍵


です。
今度はサーバの設定のため以下を実行します。

# gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf
# cd /etc/openvpn/
# cp /etc/openvpn/easy-rsa/2.0/keys/ca.crt .
# cp /etc/openvpn/easy-rsa/2.0/keys/server.crt .
# cp /etc/openvpn/easy-rsa/2.0/keys/server.key .
# cp /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem .
# chmod og-rx /etc/openvpn/*.key
# /etc/init.d/openvpn start
# update-rc.d openvpn defaults


もしクライアントとして動作させたい場合は変わりに以下を実行します。

# cd /etc/openvpn/
# cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ./
# cp /etc/openvpn/easy-rsa/2.0/keys/ca.crt .
# cp /etc/openvpn/easy-rsa/2.0/keys/client<識別名>.crt .
# cp /etc/openvpn/easy-rsa/2.0/keys/client<識別名>.key .
# chmod og-rx /etc/openvpn/*.key

"/etc/openvpn/client.conf"の

remote my-server-1 1194
cert client.crt
key client.key



remote <OpenVPNサーバ名> 1194
cert client<識別名>.crt
key client<識別名>.key

に変更して

# /etc/init.d/openvpn start

を実行すれば起動できます。
ただしパスフレーズの入力が必要になります。
もし自動起動させたければパスフレーズをはずす必要がありますので
以下を実行します。

# cd /etc/openvpn/
# mv client<識別名>.key client<識別名>.key.pass
# openssl rsa -in client<識別名>.key.pass -out client<識別名>.key
# /etc/init.d/openvpn start
# update-rc.d openvpn defaults


Windowsをクライアントにする場合には
OpenVPNのサイトから"openvpn-2.1.4-install.exe"をダウンロードしてインストールし、
"C:\Program Files\OpenVPN\config"ディレクトリに

"C:\Program Files\OpenVPN\sample-config\client.ovpn"をコピー、
サーバから以下の3つのファイルもコピーします。

  • ca.crt : CA証明書

  • client<識別名>.crt : クライアント証明書

  • client<識別名>.key : クライアント秘密鍵


それから"client.ovpn"の

remote my-server-1 1194
cert client.crt
key client.key



remote <OpenVPNサーバ名> 1194
cert client<識別名>.crt
key client<識別名>.key

に変更してから OpenVPN GUI を起動してconnectします。
入力を求められるパスワードは
クライアント証明書を作ったときのパスフレーズになります。

なお、ServersMan@VPSではiptablesで
MASQUERADEターゲットが利用できないっぽいので、

# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0:0 -j MASQUERADE

などとやってもVPN経由でVPSを踏み台にして
インターネットへは出て行けませんでした。
また、TAPが使えないためVPN内でIPv6は使えませんでした。
少々残念です。

0 件のコメント:

コメントを投稿