自宅サーバー構築メモ The last update of this page 2005/12/11
使用するソースとダウンロード先
openvpn-2.0.5.tar.gz http://openvpn.net/download_action.php?openvpn-2.0.5.tar.gz
lzo-2.02.tar.gz http://www.oberhumer.com/opensource/lzo/download/lzo-2.02.tar.gz
インストール
LZO 解凍・コンフィグレーション・コンパイル・インストール
tar xvfz lzo-2.02.tar.gz
cd lzo-2.02
./configure
make
make install

OPENVPN 解凍・コンフィグレーション・コンパイル・インストール
tar xvfz openvpn-2.0.5.tar.gz
cd openvpn-2.0.5
./configure --prefix=/usr --enable-pthread --with-lzo-headers=/usr/local/include/lzo --with-lzo-lib=/usr/local/lib
make
make install

initスクリプトも同時にインストール
cp sample-scripts/openvpn.init /etc/init.d/openvpn
chkconfig --add openvpn
設定
SSLによる鍵と証明書の作成準備
mkdir /etc/CA
mkdir /etc/CA/certs
mkdir /etc/CA/crl
mkdir /etc/CA/newcerts
mkdir /etc/CA/private
chmod 700 /etc/CA/private
cd /etc/CA
echo -n 01 > serial
echo -n 01 > index.txt

openssl.cnfの編集
vi /etc/CA/openssl.cnf
openssl.cnfサンプル

プライベートキーと自己証明書の作成
(例) プライベートキーは hosso.com-ca.key
cd /etc/CA
openssl req -nodes -new -x509 -keyout private/hosso.com-ca.key -out hosso.com-ca.crt -days 3650 -config ./openssl.cnf
chmod 600 private/hosso.com-ca.key

サーバー側キーとサーバー側証明書の作成
(例)
サーバー側キーは sempron.key
サーバー側証明書は sempron.crt
openssl req -nodes -new -keyout sempron.key -out sempron.csr -config ./openssl.cnf

CAの署名を付ける
openssl ca -out sempron.crt -in sempron.csr -config ./openssl.cnf
chmod 600 sempron.key

Diffie-Hellmanのパラメータ作成
openssl dhparam -out dh1024.pem 1024

これらをopenvpnのディレクトリにコピー
mkdir /etc/openvpn
cp /etc/CA/hosso.com-ca.crt /etc/openvpn
cp /etc/CA/sempron.key /etc/openvpn
cp /etc/CA/sempron.crt /etc/openvpn
cp /etc/CA/dh1024.pem /etc/openvpn

クライアント側の証明書を作成
(例)
クライアント側キーは athlon.key
クライアント側証明書は athlon.crt
openssl req -nodes -new -keyout /etc/CA/athlon.key -out /etc/CA/athlon.csr -config /etc/CA/openssl.cnf
openssl ca -out /etc/CA/athlon.crt -in /etc/CA/athlon.csr -config /etc/CA/openssl.cnf
ここでクライアントに渡すファイルは
hosso.com-ca.crt
athlon.key
athlon.crt
これらは接続するホスト(クライアント)ごとに作成する必要あり


設定ファイルの作成
(例)設定ファイル名はsempron.conf
vi /etc/openvpn/sempron.conf
sempron.conf内容

IPパケットをフォワードする
(違うネットワークへのルーティング情報が存在する場合)
vi /etc/sysctl.conf
変更内容
net.ipv4.ip_forward = 1

ネットワーク再起動
/etc/init.d/network restart

WINSサーバー設定
vi /etc/samba/smb.conf
以下のエントリを追加
wins support = yes
domain master = yes


openvpn起動
/etc/init.d/openvpn start