4月 272011
 
シェアする

ワンコイン(490円)から利用できる仮想専用サーバー
ServersMan@VPS」4月度定例アップデート
基本性能のアップデートと、仮想ネットワークカーネルドライバ対応により、
各種VPN等の構築が可能に

詳細はこちらから

 

ということで、ServersMan@VPSにてtunデバイスの利用が可能になりました。仮想ネットワークデバイスを用いて、Virtual Private Network(VPN)、仮想専用ネットワークを構築することが出来る。

以下ServersMan@VPSでのOpenVPNサーバ/クライアントの設定方法を説明する。
それにしてもそろそろ「ServersMan@VPS」でなくて「VPS@DTI」などとして欲しいと個人的には思う。

本ページでは以下の4点を説明する

・tunデバイスが利用出来るか確認する
・OpenVPNインストール方法
・OpenVPNサーバの設定方法
・OpenVPNクライアントの設定方法

tunデバイスが利用出来るか確認をする

「/dev/net」ディレクトリがあるか確認します。

# ls /dev/net

「/dev/net」がない場合

「/dev/net」の作成と「/dev/net/tun」の作成をします。

# mkdir /dev/net ←「/dev/net」ディレクトリの作成
# mknod --mode 600 /dev/net/tun c 10 200

「/dev/net」がある場合

1. 「/dev/net/tun」があるか確認します。

# ls /dev/net/tun

2. 「/dev/net/tun」がない場合は作成します。

# mknod --mode 600 /dev/net/tun c 10 200

「/dev/net/tun」があるか確認します。

# ls /dev/net/tun

以上です。

OpenVPNインストール方法

①OpenVPNをyumコマンドでインストールします。

「openvpn」をyumコマンドでインストールするには、RPMforgeのレポジトリが必要です。以下リンクを参照し、RPMforgeのレポジトリを利用出来るようにしてから引き続きの作業をお願いします。

RPMforgeのrepoを追加する CentOS5.5

# yum -y install openvpn
Loaded plugins: fastestmirror
Repository 'vz-base' is missing name in configuration, using id
Repository 'vz-updates' is missing name in configuration, using id
Loading mirror speeds from cached hostfile
 * addons: rsync.atworks.co.jp
 * base: rsync.atworks.co.jp
 * extras: rsync.atworks.co.jp
 * rpmforge: ftp-stud.fht-esslingen.de
 * updates: rsync.atworks.co.jp
rpmforge                                                                                                                              | 1.1 kB     00:00
rpmforge/primary                                                                                                                      | 2.3 MB     00:04
rpmforge                                                                                                                                         10726/10726
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package openvpn.i386 0:2.1.4-2.el5.rf set to be updated
--> Processing Dependency: liblzo2.so.2 for package: openvpn
--> Processing Dependency: lzo for package: openvpn
--> Processing Dependency: libpkcs11-helper.so.1 for package: openvpn
--> Running transaction check
---> Package lzo.i386 0:2.04-1.el5.rf set to be updated
---> Package pkcs11-helper.i386 0:1.08-1.el5.rf set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================================================================================================
 Package                                 Arch                           Version                                     Repository                          Size
=============================================================================================================================================================
Installing:
 openvpn                                 i386                           2.1.4-2.el5.rf                              rpmforge                           443 k
Installing for dependencies:
 lzo                                     i386                           2.04-1.el5.rf                               rpmforge                           131 k
 pkcs11-helper                           i386                           1.08-1.el5.rf                               rpmforge                           128 k

Transaction Summary
=============================================================================================================================================================
Install      3 Package(s)
Update       0 Package(s)
Remove       0 Package(s)

Total download size: 701 k
Downloading Packages:
(1/3): pkcs11-helper-1.08-1.el5.rf.i386.rpm                                                                                           | 128 kB     00:01
(2/3): lzo-2.04-1.el5.rf.i386.rpm                                                                                                     | 131 kB     00:00
(3/3): openvpn-2.1.4-2.el5.rf.i386.rpm                                                                                                | 443 kB     00:00
-------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                        188 kB/s | 701 kB     00:03
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
 Installing     : pkcs11-helper                                                                                                                         1/3
 Installing     : lzo                                                                                                                                   2/3
 Installing     : openvpn                                                                                                                               3/3

Installed:
 openvpn.i386 0:2.1.4-2.el5.rf

Dependency Installed:
 lzo.i386 0:2.04-1.el5.rf                                                 pkcs11-helper.i386 0:1.08-1.el5.rf

Complete!
#

OpenVPNサーバ設定方法

OpenVPNがインストールされたディレクトリ配下に移動し、これから使用するファイルに実行権限を付与します。

# cd /usr/share/doc/openvpn-2.1.4/ ←ディレクトリ移動
# cd easy-rsa/2.0/ ←ディレクトリ移動
# chmod +x * ←実行権限付与

環境設定の読み込みと、古い鍵を削除します。

# . ./vars ←「.」で「./vars」を読み込む
NOTE: If you run ./clean-all, I will be doing a rm -rf on /usr/share/doc/openvpn-2.1.4/easy-rsa/2.0/keys
#
# ./clean-all
#

独自の認証期間(CA)を作成します。

質問にあわせて希望のものを入力してください。途中失敗した場合は、「Ctrl + C」で中止して再度やり直してください。ここには、OpenVPNサーバになるサーバの情報を入力します。

# ./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]:Miyagi ←都道府県
Locality Name (eg, city) [SanFrancisco]:Sendai ←市町村
Organization Name (eg, company) [Fort-Funston]:Trippyboy.com ←会社名
Organizational Unit Name (eg, section) []: ←部署名
Common Name (eg, your name or your server's hostname) [Fort-Funston CA]:vps3.trippyboy.com ←ホスト名
Name []: ←名前
Email Address [me@myhost.mydomain]:root@vps3.trippyboy.com ←メールアドレス
#

サーバ鍵を作成します。

質問にあわせて希望のものを入力してください。途中失敗した場合は、「Ctrl + C」で中止して再度やり直してください。ここにも、OpenVPNサーバになるサーバの情報を入力します。

# ./build-key-server server
Generating a 1024 bit RSA private key
...++++++
.......++++++
writing new private key to 'server.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]:Miyagi ←都道府県
Locality Name (eg, city) [SanFrancisco]:Sendai ←市町村
Organization Name (eg, company) [Fort-Funston]:Trippyboy.com ←会社名
Organizational Unit Name (eg, section) []: ←部署名
Common Name (eg, your name or your server's hostname) [server]:vps3.trippyboy.com ←ホスト名
Name []: ←名前
Email Address [me@myhost.mydomain]:root@vps3.trippyboy.com ←メールアドレス

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: Enter
An optional company name []: Enter
Using configuration from /usr/share/doc/openvpn-2.1.4/easy-rsa/2.0/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'JP'
stateOrProvinceName   :PRINTABLE:'Miyagi'
localityName          :PRINTABLE:'Sendai'
organizationName      :PRINTABLE:'Trippyboy.com'
commonName            :PRINTABLE:'vps3.trippyboy.com'
emailAddress          :IA5STRING:'root@vps3.trippyboy.com'
Certificate is to be certified until Apr 24 09:45:56 2021 GMT (3650 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
#

クライアント鍵を作成します

質問にあわせて希望のものを入力してください。途中失敗した場合は、「Ctrl + C」で中止して再度やり直してください。ここは、OpenVPNクライアントになるサーバの情報を入力します。

# ./build-key client
Generating a 1024 bit RSA private key
...............++++++
..........++++++
writing new private key to 'client.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]:Miyagi ←都道府県
Locality Name (eg, city) [SanFrancisco]:Sendai ←市町村
Organization Name (eg, company) [Fort-Funston]:Trippyboy.com ←ホスト名
Organizational Unit Name (eg, section) []: ←部署名
Common Name (eg, your name or your server's hostname) [client]:trippyboy.com ←ホスト名
Name []: ←名前
Email Address [me@myhost.mydomain]:root@trippyboy.com ←メールアドレス

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: Enter
An optional company name []: Enter
Using configuration from /usr/share/doc/openvpn-2.1.4/easy-rsa/2.0/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'JP'
stateOrProvinceName   :PRINTABLE:'Miyagi'
localityName          :PRINTABLE:'Sendai'
organizationName      :PRINTABLE:'Trippyboy.com'
commonName            :PRINTABLE:'trippyboy.com'
emailAddress          :IA5STRING:'root@trippyboy.com'
Certificate is to be certified until Apr 24 09:46:41 2021 GMT (3650 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
#

DH(Diffie Hellman)パラメータを作成します。

2~3分かかります。

# ./build-dh
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
........+...................................+...........+......+
...+....................................................+.......
..................................................+.............
................................................................
................................................+...............
...........................+..+.....+..........................+
.................................................+..............
....................+...........................................
.+..........+......+............................................
.................................+..............+.............+.
...............+...............................................+
........................................................+.......
....+....+......................................................
................................................................
...........+....................................................
..........................+....+...................+............
................................................................
+...............................................+...............
...............+................................................
........+.......................................................
.+.............+................................................
.........+..++*++*++*
#

OpenVPNサーバの設定と各種鍵を所定の位置に移動します。

# cp -p ../../sample-config-files/server.conf /etc/openvpn/
# cp -p keys/server.crt /etc/openvpn/
# cp -p keys/server.key /etc/openvpn/
# cp -p keys/ca.crt /etc/openvpn/
# cp -p keys/dh1024.pem /etc/openvpn/

OpenVPNサーバを起動します。

起動する前と後で「ifconfig」を実行し、その変化を確認するといいかも知れません。

# service openvpn restart

サーバ起動時と共にOpenVPNが有効になるように変更します。

# chkconfig --list openvpn ←現在の起動時の設定を確認
# chkconfig openvpn on ←自動で起動するように設定
# chkconfig --list openvpn ←現在の設定を確認(3:on)

OpenVPNで利用しているIPアドレスまでpingが通るか確認しましょう。

# ifconfig tun0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.8.0.1 P-t-P:10.8.0.2  Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
#
# ping -c5 10.8.0.1
PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data.
64 bytes from 10.8.0.1: icmp_seq=1 ttl=64 time=0.054 ms
64 bytes from 10.8.0.1: icmp_seq=2 ttl=64 time=0.062 ms
64 bytes from 10.8.0.1: icmp_seq=3 ttl=64 time=0.064 ms
64 bytes from 10.8.0.1: icmp_seq=4 ttl=64 time=0.058 ms
64 bytes from 10.8.0.1: icmp_seq=5 ttl=64 time=0.053 ms

--- 10.8.0.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4000ms
rtt min/avg/max/mdev = 0.053/0.058/0.064/0.006 ms
#

以上で、OpenVPSサーバの設定は完了です。

 

OpenVPNクライアントの設定方法

次に、OpenVPNサーバに接続するクライアントの設定を行います。クライアントになるサーバにも上述を参考にRPMforgeレポジトリをインストールし、「OpenVPN」のインストールを完了しておいてください。

OpenVPNサーバで作成した以下のファイルをクライアントになるサーバの「/etc/openvpn/」配下に設置します。

OpenVPNサーバ
/usr/share/doc/openvpn-2.1.4/easy-rsa/2.0/keys/ca.crt
/usr/share/doc/openvpn-2.1.4/easy-rsa/2.0/keys/client.key
/usr/share/doc/openvpn-2.1.4/easy-rsa/2.0/keys/client.crt

OpenVPNクライアントになるための設定ファイルを設定します。

以下「vps3.trippyboy.com」の部分は、「OpenVPNサーバ」となるサーバのホスト名を指定してください。

OpenVPNクライアント
# cp /usr/share/doc/openvpn-2.1.4/sample-config-files/client.conf /etc/openvpn/
# sed -i 's/my-server-1/vps3.trippyboy.com/g' /etc/openvpn/client.conf

OpenVPNを起動します

# service openvpn restart

サーバ起動時と共にOpenVPNが有効になるように変更します。

# chkconfig --list openvpn ←現在の起動時の設定を確認
# chkconfig openvpn on ←自動で起動するように設定
# chkconfig --list openvpn ←現在の設定を確認(3:on)

OpenVPNで利用しているIPアドレスまでpingが通るか確認しましょう。

# ifconfig tun0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
 inet addr:10.8.0.6  P-t-P:10.8.0.5  Mask:255.255.255.255
 UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
 RX packets:0 errors:0 dropped:0 overruns:0 frame:0
 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
 collisions:0 txqueuelen:500
 RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

# ping -c5 10.8.0.6
PING 10.8.0.6 (10.8.0.6) 56(84) bytes of data.
64 bytes from 10.8.0.6: icmp_seq=1 ttl=64 time=0.048 ms
64 bytes from 10.8.0.6: icmp_seq=2 ttl=64 time=0.069 ms
64 bytes from 10.8.0.6: icmp_seq=3 ttl=64 time=0.062 ms
64 bytes from 10.8.0.6: icmp_seq=4 ttl=64 time=0.056 ms

--- 10.8.0.6 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 0.048/0.058/0.069/0.012 ms

OpenVPNまでpingが通るかも試しておきましょう。

サーバで利用するプライベートIPアドレスは、OpenVPNサーバ側で「ifconfig tun0」で確認

# ping -c5 10.8.0.1
PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data.
64 bytes from 10.8.0.1: icmp_seq=1 ttl=64 time=0.969 ms
64 bytes from 10.8.0.1: icmp_seq=2 ttl=64 time=0.762 ms
64 bytes from 10.8.0.1: icmp_seq=3 ttl=64 time=0.926 ms
64 bytes from 10.8.0.1: icmp_seq=4 ttl=64 time=0.838 ms
64 bytes from 10.8.0.1: icmp_seq=5 ttl=64 time=0.933 ms

--- 10.8.0.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4001ms
rtt min/avg/max/mdev = 0.762/0.885/0.969/0.082 ms

 

以上

 

不明点あればコメント or コンタクトme

このエントリーをはてなブックマークに追加

コメント大歓迎!質問も受け付けておりますヽ(*´∀`)ノ