CentOS6 OpenVPN のインストール(tun L3接続)

・前準備
http://d.hatena.ne.jp/kt_hiro/20120821/1345555381


・インストール

# yum install openvpn

OpenVPN 2.3からeasy-rsaが同梱されていないので git でダウンロード

# cd /usr/share/openvpn
# git clone https://github.com/OpenVPN/easy-rsa/

・証明書と鍵の生成

# cd /usr/share/openvpn/easy-rsa/2.0

# vi vars
(鍵を作る際のデフォルト値を設定する)
# source vars

# ./clean-all
# ./build-ca
# ./build-key-server server
# ./build-key client1
(必要なだけ作る)
# ./build-dh
# cp -R keys /etc/openvpn/keys

・設定ファイルの作成(サーバ側)

# vi /etc/openvpn/server.conf
dev tun
;dev tap

;proto tcp
proto udp

;tcp-nodelay

tun-mtu 1400
mssfix 1280
fragment 1280

comp-lzo

server 192.168.100.0 255.255.255.0
port 5500

;client-config-dir ccd
;ifconfig-pool-persist ipp.txt

ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh2048.pem

client-to-client
keepalive 10 120

persist-key
persist-tun

log openvpn.log
log-append openvpn.log

verb 3

・設定ファイルの作成(クライアント側)

client

dev tun
;dev tap

;proto tcp
proto udp

tun-mtu 1400
mssfix 1280
fragment 1280

comp-lzo

remote 192.168.0.102 5500

resolv-retry infinite
nobind

persist-key
persist-tun

ca ca.crt
cert client3.crt
key client3.key

verb 3

・設定ファイルの作成(証明書を埋め込む場合)

ca ca.crt ← 削除
cert client3.crt ← 削除
key client3.key ← 削除

<ca>
-----BEGIN CERTIFICATE-----
ca.cart の内容を記載
-----END CERTIFICATE-----
</ca>

<cert>
-----BEGIN CERTIFICATE-----
client3.crt の内容を記載
-----END CERTIFICATE-----
</cert>

<key>
-----BEGIN PRIVATE KEY-----
client3.key の内容を記載
-----END PRIVATE KEY-----
</key>

・起動

# service openvpn start

自動起動設定

# chkconfig openvpn on

・クライアントに固定IPをふる場合
tap の場合は「ifconfig-pool-persist ipp.txt」オプションを使うが、
tun の場合は「client-config-dir ccd」オプションを使い、下記のようなファイルを作る。

# vi ccd/client1
ifconfig-push 192.168.100.10 192.168.100.1

※「クライアントIP」「サーバIP」の順番
※client1 の部分には証明書のクライアント名を使う(この場合は client1.crt なので client1)

VPNセグメントと物理セグメントをルーティングしたい場合
http://d.hatena.ne.jp/kt_hiro/20121203/1354517434

・設定による速度の比較
udp > tcp (tcp-nodelay 有) > tcptcp-nodelay 無)と一般的には言われているが、環境による。
client間の通信は環境によっては速度が極度に落ちるため、ルーティングするか物理セグメントとブリッジする方が無難。