You are here: Home tech Server系 OpenVPNのInstallについて
Navigation

 
Document Actions

OpenVPNのInstallについて

ここでは、OpenVPNをインストールして使用するまでの工程を記述します。

まずは、必要なパッケージの確認を行います。

$ rpm -qa
上記のコマンドで、今インストールされているパッケージの一覧が表示されます。
下記のパッケージが入っているかどうかを確認してください。

openssl-0.9.7a-43.8
openssl-devel-0.9.7a-43.8

bridge-utils-1.0.4-4
bridge-utils-devel-1.0.4-4

sysfsutils-1.2.0-1
sysfsutils-devel-1.2.0-1
上記のパッケージが入っていなければ、yumを使ってインストールしてください。

次にOpenVPNで利用する通信圧縮パッケージをインストールします。
$ wget  http://www.oberhumer.com/opensource/lzo/download/lzo-1.08.tar.gz
$ tar zxf lzo-1.08.tar.gz
$ cd lzo-1.08
$ ./configure
$ make
$ sudo make install
これで、LZO圧縮が出来るようになります。
次に本題のOpenVPNをインストールします。
$ wget http://openvpn.net/release/openvpn-2.0.8.tar.gz
$ tar zxf openvpn-2.0.8.tar.gz
$ cd openvpn-2.0.8.tar.gz
$ ./configure
$ make
$ sudo make install
以上で、インストールは完了です。
次にOpenVPNの設定を行います。Sample Programが同梱されているので、それをコピーして使います。なお、個々からの作業は全てrootでやることとします。(全てsudoだと面倒なので。)
# mkdir /etc/openvpn
OpenVPN起動スクリプト
# cp sample-scripts/openvpn.init /etc/openvpn/.
# chmod 755 /etc/openvpn/openvpn.init
 ブリッジ機能有効化スクリプト
# cp /usr/local/src/openvpn-2.0.5/sample-scripts/bridge-start /etc/openvpn/.
# chmod 755 /etc/openvpn/bridge-start
 ブリッジ機能無効化スクリプト
# cp /usr/local/src/openvpn-2.0.5/sample-scripts/bridge-stop /etc/openvpn/.
# chmod 755 /etc/openvpn/bridge-stop
証明書用のファイル群
# cp -r easy-rsa /etc/openvpn/.
次にOpenVPNの設定ファイルを作成します。設定は、下記のものをコピペして作ってください。必要に応じてIP等を書き換えてください。
# vi /etc/openvpn/server.conf
# 通信に使用するプロトコル及びポート番号の指定
port 5000
proto udp

# 使用する仮想ネットワークデバイスの指定
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

# OpenVPNサーバをブリッジモードで起動させるための設定
# 書式:server-bridge [OpenVPNサーバのアドレス] [ネットマスク] [クライアントに割り振るアドレス範囲]
server-bridge 192.168.0.4 255.255.255.0 192.168.0.220 192.168.0.230

# クライアントにサーバ側ネットワークへの経路を伝えるための設定
# 書式:push “route [OpenVPNサーバ側のネットワークアドレス] [ネットマスク]”
push "route 192.168.0.0 255.255.255.0"

# クライアント同士の通信を可能にするための設定
client-to-client

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

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

# OpenVPNデーモン起動ユーザ・グループの指定 ※Windowsシステム以外設定可能
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
次にbridge用のスクリプトを編集します。eth_ipは使用するeth Interfaceと同じIPアドレスにしてください。あとは、必要に応じて書き換えてください。
# vi /etc/openvpn/bridge-start
※以下の箇所を修正する。
(~省略~)
eth="eth0"
eth_ip="192.168.0.4"
eth_netmask="255.255.255.0"
eth_broadcast="192.168.0.255"
(~省略~)
次にIP Forwardingの設定を行います。
# echo 1 > /proc/sys/net/ipv4/ip_forward
# vi /etc/sysctl.conf
(~省略~)
# Controls IP packet forwarding
net.ipv4.ip_forward = 1 ←"1"に変更
(~省略~)
ここまで、設定が完了したら、証明書等を作成します。証明書の作成は下記のようにします。
下記は、証明書を作るときにデフォルト値の設定です。必ずしもやる必要はないかと思います。
# vi /etc/openvpn/easy-rsa/vars
(~省略~)
export KEY_COUNTRY=JP                 ←国名
export KEY_PROVINCE=Osaka           ←県名
export KEY_CITY=Kyobashi              ←市町村名
export KEY_ORG="itboost"             ←団体名
export KEY_EMAIL="test@mail.itboost.co.jp" ←メールアドレス
次に、必要なファイルを作成します。
# cd /etc/openvpn/easy-rsa/keys
# touch index.txt
# echo 01 > serial
次に、build-caを実行してCA証明書およびCA秘密鍵を作成します。
# cd /etc/openvpn/easy-rsa/
# source vars
# ./build-ca
# ./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) [JP]: 「Enter」
State or Province Name (full name) [Osaka]: 「Enter」
Locality Name (eg, city) [Kyobashi]: 「Enter」
Organization Name (eg, company) [itboost]: 「Enter」
Organizational Unit Name (eg, section) []: 「Enter」
Common Name (eg, your name or your server's hostname) []:OpenVPN-CA    ←ここのみ入力
Email Address [test@mail.itboost.co.jp]: 「Enter」
完了すると、keysフォルダのなかにca.crtとca.keyファイルが出来上がります。
作成されていたら、次にbuild-serverを実行してserver用の証明書を作成します。
# cd /etc/openvpn/easy-rsa/
# source ./vars
# ./build-key-server server
# ./build-key-server server
~省略~
Common Name (eg, your name or your server's hostname) []:server    ←ここのみ入力
~省略~
完了すると、keysフォルダのなかにserver.crtとserver.carとserver.keyファイルが出来上がります。
次に、Diffie Hellman (DH) パラメータの生成を行います。
# cd /etc/openvpn/easy-rsa/
# source ./vars
# ./build-dh
これで、サーバの設定は終了です。
起動方法は、下記のとおりになります。なお、ネットワークが起動していることが前提です。
# /etc/openvpn/bridge-start
# /etc/openvpn/openvpn.init start
終了方法は、下記の通りになります。
# /etc/openvpn/openvpn.init stop
# /etc/openvpn/bridge-stop
 最後に、サーバが起動したときに実行されるように起動スクリプトを編集します。
# cp /etc/rc.d/init.d/network /etc/rc.d/init.d/network_bak
# vi /etc/rc.d/init.d/network
編集箇所は、179行目あたりです。
(~省略~)
         touch /var/lock/subsys/network

         #ブリッジモードの有効化
         /etc/openvpn/bridge-start

         #OpenVPNサーバの起動
         /etc/openvpn/openvpn.init start

         ;;

stop)
#OpenVPNサーバの停止
/etc/openvpn/openvpn.init stop

#ブリッジモードの無効化
/etc/openvpn/bridge-stop

# If this is a final shutdown/halt, check for network FS,
# and unmount them even if the user didn't turn on netfs
(~省略~)
これで、サーバが再起動したときにVPNも立ち上がるようになるはずです。

最後に、クライアントの設定を行います。クライアントには、Windowsを使用します。
下記URLからWindows用のOpenVPN接続ソフトをダウンロードします。
http://openvpn.se/files/install_packages/openvpn-2.0.5-gui-1.0.3-install.exe
落としたインストーラをそのまま任意にインストールします。
インストールフォルダにconfigフォルダがあるので、そこにクライアント用の証明書をサーバからコピーしてきます。クライアント用の証明書は、下記のように作成します。
# cd /etc/openvpn/easy-rsa
# source vars
# ./build-key-pass personal
# ./build-key-pass personal
Generating a 1024 bit RSA private key
..................................++++++
...........................++++++
writing new private key to 'personal.key'
Enter PEM pass phrase:******** ←4文字以上のパスワードを入力してください
Verifying - Enter PEM pass phrase:********
-----
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) [JP]:
State or Province Name (full name) [Yamagata]:
Locality Name (eg, city) [Tendo]:
Organization Name (eg, company) [Tendo Capability Service]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:personal ←ここだけ入力
Email Address [webmastar@tencs.net]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /etc/openvpn/easy-rsa/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'JP'
stateOrProvinceName :PRINTABLE:'Yamagata'
localityName :PRINTABLE:'Tendo'
organizationName :PRINTABLE:'Tendo Capability Service'
commonName :PRINTABLE:'personal'
emailAddress :IA5STRING:'webmastar@tencs.net'
Certificate is to be certified until Jul 9 01:31:29 2016 GMT (3650 days)
Sign the certificate? [y/n]:y ← 「y」を入力


1 out of 1 certificate requests certified, commit? [y/n]y ← 「y」を入力
Write out database with 1 new entries
Data Base Updated
完了すると、keysフォルダのなかに、personal.crtとpersonal.keyとpersonal.csrが作成されます。
この3つのファイルとca.crtファイルをクライアントのconfigフォルダにコピーします。また、configフォルダにpersonal.ovpnファイルを作成します。内容は下記の通りです。必要箇所を修正してください。
# クライアントであることを指定 ※OpenVPNサーバからパラメータを受け取るために必要
client

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

# 使用する仮想ネットワークデバイスの指定 ※OpenVPNサーバと同じにする必要があります。
dev tap0

# 接続するOpenVPNサーバの指定
# 書式:remote [OpenVPNサーバのアドレス] [ポート番号]
# ※今回の場合、ルータのポート転送を利用しているので、ルータのアドレスを設定する必要があります。
remote 66.102.7.147 5000

# CA証明書、サーバ証明書、サーバ秘密鍵のパス指定
# ※パス指定は、絶対パスまたはclient.ovpnの設置フォルダからの相対パスでの指定
ca ca.crt
cert personal.crt
key personal.key

# OpenVPNサーバの名前解決を継続する
resolv-retry infinite

# ローカルポート番号をバインドしない
nobind

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

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

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

# OpenVPNサーバからパラメータを受け取るための設定
pull

# OpenVPNサーバからIPアドレスを受け取るための設定
float
作成が完了したら、personal.ovpnファイルを右クリックして、「Start OpenVPN on this config file」をクリックします。起動すると、DOS窓が表示され、パスワードを求められますので、クライアントの証明書作成時に設定したパスワードを入力します。
正常につながると、「ipconfig」した際に、接続先のローカルIPが取得されています。
後は、ローカル環境と同じようにネットワークにアクセス可能になります。