トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS


ソフトウェアOpenVPN 2.0.5, 2.0.9
OS(作業日)Vine Linux 2.6(Server) 2006/01/15
Vine Linux 4.0(Server)
WindowsXP SP2 (Client)2006/01/15
マシンPC/AT
ThinkPad X40
ドキュメント2006/01/16 001

OpenVPNによりインターネットから内部ネットワークに接続する


OpenVPNのインストール

  • 必要なもの
    OpenSSL
    LZO(LZO圧縮を行う場合)
  • インストール ()
    • Linux tunデバイスの有効化
      kernel configuration
      CONFIG_TUN=m
  • OpenVPNのコンパイル
    LZO圧縮を行わない場合
    # ./configure --disable-lzo
    # make
    # make install
    LZO圧縮を行う場合
    # ./configure --with-ssl-headers=/usr/local/ssl/include --with-ssl-lib=/usr/local/ssl/lib
    # make
    # make install

ネットワーク構成例

+---------+  +------------------+  +------+            +------+  
|Internal |  |VPN Server(Linux) |  |Router|            |Router|
|Network  |--|eth0          tap0|--|      |--Internet--|      |--VPN Client
+---------+  +------------------+  +------+            +------+

証明書の設定

OpenVPNにはCA認証局、サーバー証明書、クライアント証明書の作成を支援するシェルスクリプトが添付されている。
スクリプトはソースを展開したopenvpn-2.1.1/easy-rsa/2.0に添付される。

  • CA認証局
    [root@inasa03 2.0]# . ./vars
    NOTE: If you run ./clean-all, I will be doing a rm -rf on /tmp/src/openvpn-2.1.1/easy-rsa/2.0/keys
    [root@inasa03 2.0]# ./clean-all
    [root@inasa03 2.0]# ./build-ca
    Generating a 1024 bit RSA private key
    ....++++++
    .........................++++++
    writing new private key to 'ca.key'

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.


Country Name (2 letter code) [US]:JP
State or Province Name (full name) [CA]:asagiri.kailas.jp
Locality Name (eg, city) [SanFrancisco?]:Chiba
Organization Name (eg, company) [Fort-Funston]:kailas.jp
Organizational Unit Name (eg, section) []:asagiri
Common Name (eg, your name or your server's hostname) [Fort-Funston CA]:asagiri.kailas.jp
Name []:inasa03
Email Address [me@myhost.mydomain]:tnmori@asagiri.dyndns.biz

  • サーバー証明書
  • クライアント証明書

Server側の設定 (Linux)

Server側の設定ファイルはデーモン起動時に引数で指定するため、任意の場所に作成する。例:/etc/openvpn/server.conf

# 通信に使用するプロトコル及びポート番号の指定
port 5500
proto tcp-server

# 使用する仮想ネットワークデバイスの指定
dev tap0
# CA証明書、サーバ証明書、サーバ秘密鍵、DH鍵のパス指定
# ※パス指定は、絶対パスまたはserver.confの設置ディレクトリからの相対パスでの指定
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key
dh /etc/openvpn/easy-rsa/keys/dh1024.pem

#サーバー側のVPN NetworkデバイスのIPアドレスを指定
ifconfig 10.240.0.1 255.255.255.0 #tapにip付与

# VPN接続間の生存確認のための設定
keepalive 10 120

# パケット転送の際にLZO圧縮を有効にする
comp-lzo

# OpenVPNデーモン起動ユーザ・グループの指定
user nobody
group nobody

# VPNが落ちた場合の再接続設定
persist-key
persist-tun

# ステータスログのパス指定
status /var/log/openvpn-status.log

# ログのパス指定
log /var/log/openvpn.log
log-append /var/log/openvpn.log

# ログの詳細レベルの指定
verb 3 

# OpenVPN管理インターフェイスの起動設定
management localhost 7505

サーバー起動方法

 # /usr/local/sbin/openvpn --tls-server --config /etc/openvpn/server.conf

Client側の設定 (Windows)

OpenVPN GUIを導入する。
設定ファイルはC:\Program Files\OpenVPN\configに保存する。拡張子はovpnにすることで、OpenVPN GUIが認識する。クライアント証明書、CA証明書も同一フォルダに保管する。

# クライアントであることを指定
client

# 通信に使用するプロトコル
proto tcp

# 使用する仮想ネットワークデバイスの指定 
# 要OpenVPNサーバの仮想デバイス名
dev tap0

# 接続するOpenVPNサーバの指定
# 書式:remote [OpenVPNサーバのアドレス] [ポート番号]
remote vpnserver.name.com 5500

# CA証明書、クライアント証明書、クライアント秘密鍵のパス指定
ca ca.crt
cert client.crt
key client.key

# パケット転送の際にLZO圧縮を有効にする
comp-lzo

# VPNが落ちた場合の再接続設定
persist-key
persist-tun

# ログレベル
verb 3

# クライアント側の仮想デバイスにアサインするIPアドレス
ifconfig 10.240.0.100 255.255.255.0
# クライアントに追加するルーティング情報
route  192.168.234.0 255.255.255.0 10.240.0.1

[1] http://openvpn.net/
[2] http://www.senryu.biz/linux/openvpn/openvpn1.htm
[3]http://www.stackasterisk.jp/tech/systemConstruction/openVpn01_01.jsp
[4]http://japan.linux.com/security/05/10/12/0618209.shtml
[5]http://kano.feena.jp/?OpenVPN

Counter: 4306, today: 2, yesterday: 1