OpenVPNのInstallについて
ここでは、OpenVPNをインストールして使用するまでの工程を記述します。
まずは、必要なパッケージの確認を行います。
下記のパッケージが入っているかどうかを確認してください。
次にOpenVPNで利用する通信圧縮パッケージをインストールします。
次に本題のOpenVPNをインストールします。
次にOpenVPNの設定を行います。Sample Programが同梱されているので、それをコピーして使います。なお、個々からの作業は全てrootでやることとします。(全てsudoだと面倒なので。)
下記は、証明書を作るときにデフォルト値の設定です。必ずしもやる必要はないかと思います。
作成されていたら、次にbuild-serverを実行してserver用の証明書を作成します。
次に、Diffie Hellman (DH) パラメータの生成を行います。
起動方法は、下記のとおりになります。なお、ネットワークが起動していることが前提です。
最後に、クライアントの設定を行います。クライアントには、Windowsを使用します。
下記URLからWindows用のOpenVPN接続ソフトをダウンロードします。
インストールフォルダにconfigフォルダがあるので、そこにクライアント用の証明書をサーバからコピーしてきます。クライアント用の証明書は、下記のように作成します。
この3つのファイルとca.crtファイルをクライアントのconfigフォルダにコピーします。また、configフォルダにpersonal.ovpnファイルを作成します。内容は下記の通りです。必要箇所を修正してください。
正常につながると、「ipconfig」した際に、接続先のローカルIPが取得されています。
後は、ローカル環境と同じようにネットワークにアクセス可能になります。
$ rpm -qa上記のコマンドで、今インストールされているパッケージの一覧が表示されます。
下記のパッケージが入っているかどうかを確認してください。
openssl-0.9.7a-43.8上記のパッケージが入っていなければ、yumを使ってインストールしてください。
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
次にOpenVPNで利用する通信圧縮パッケージをインストールします。
$ wget http://www.oberhumer.com/opensource/lzo/download/lzo-1.08.tar.gzこれで、LZO圧縮が出来るようになります。
$ tar zxf lzo-1.08.tar.gz
$ cd lzo-1.08
$ ./configure
$ make
$ sudo make install
次に本題の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の設定ファイルを作成します。設定は、下記のものをコピペして作ってください。必要に応じてIP等を書き換えてください。
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/.
# vi /etc/openvpn/server.conf
# 通信に使用するプロトコル及びポート番号の指定次にbridge用のスクリプトを編集します。eth_ipは使用するeth Interfaceと同じIPアドレスにしてください。あとは、必要に応じて書き換えてください。
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
# vi /etc/openvpn/bridge-start
※以下の箇所を修正する。次にIP Forwardingの設定を行います。
(~省略~)
eth="eth0"
eth_ip="192.168.0.4"
eth_netmask="255.255.255.0"
eth_broadcast="192.168.0.255"
(~省略~)
# 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次に、build-caを実行してCA証明書およびCA秘密鍵を作成します。
# touch index.txt
# echo 01 > serial
# cd /etc/openvpn/easy-rsa/
# source vars
# ./build-ca
# ./build-ca完了すると、keysフォルダのなかにca.crtとca.keyファイルが出来上がります。
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」
作成されていたら、次にbuild-serverを実行してserver用の証明書を作成します。
# cd /etc/openvpn/easy-rsa/
# source ./vars
# ./build-key-server server
# ./build-key-server server完了すると、keysフォルダのなかにserver.crtとserver.carとserver.keyファイルが出来上がります。
~省略~
Common Name (eg, your name or your server's hostname) []:server ←ここのみ入力
~省略~
次に、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編集箇所は、179行目あたりです。
# vi /etc/rc.d/init.d/network
(~省略~)これで、サーバが再起動したときにVPNも立ち上がるようになるはずです。
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
(~省略~)
最後に、クライアントの設定を行います。クライアントには、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完了すると、keysフォルダのなかに、personal.crtとpersonal.keyとpersonal.csrが作成されます。
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
この3つのファイルとca.crtファイルをクライアントのconfigフォルダにコピーします。また、configフォルダにpersonal.ovpnファイルを作成します。内容は下記の通りです。必要箇所を修正してください。
# クライアントであることを指定 ※OpenVPNサーバからパラメータを受け取るために必要作成が完了したら、personal.ovpnファイルを右クリックして、「Start OpenVPN on this config file」をクリックします。起動すると、DOS窓が表示され、パスワードを求められますので、クライアントの証明書作成時に設定したパスワードを入力します。
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
正常につながると、「ipconfig」した際に、接続先のローカルIPが取得されています。
後は、ローカル環境と同じようにネットワークにアクセス可能になります。