ゼロ円でできるインターネットVPN
OpenVPNで手軽にVPN構築

Shin.鶴長
2008/5/2

OpenVPNのインストール

 ではここからは、Fedora 8を例に、OpenVPNの導入方法を解説します。今回はUDPプロトコルを用い、ルーティング方式で拠点間を接続することにします。

 サーバおよびクライアントのネットワーク構成は図7のとおりです。IPアドレスなどを適宜置き換え、インストールを実行します。

 なお図7ではOpenVPNサーバはNAT内に置かれており、クライアントからの接続に答えるには、NATルータで静的NATを設定し、「NATルータに送られるサービスポート1194番に対するUDPパケットを、OpenVPNサーバに転送する」ように設定しておきます。またパケットに対するフィルタリングを実施している場合には、UDP 1194番に対して制限を実施しないようにします。

図5
図7 ネットワーク構成図

 NATルータやファイアウォールの設定は機器ごとに異なるためここでは言及しませんが、マニュアルを参考に各自で設定するか、設定を実施したベンダや担当者に依頼してください。

サーバ・クライアント共通に必要な作業

 OpenVPNパッケージのインストールなど、サーバとクライアントに共通する作業は次のとおりです。

 OpenVPNを利用するには、まず、OpenSSLがインストールされている必要があります。次のようにrpmコマンドで確認します。多くの場合はすでに導入されていますが、別途導入が必要な場合は、ディストリビューションが提供するインストールディスクなどからRPMファイルを探し、インストールを実行します。

・OpenSSLがインストールされているか確認

# rpm -q openssl
openssl-0.9.8b-17.fc8 ←インストールされていればパッケージ名を表示します(Fedora8の場合)

・OpenSSLを手元のRPMファイルからインストールする場合

# rpm -ivh openssl-○○.rpm
 ←○○はバージョン名。インストールが必要なら実行します

・OpenSSLをyumでオンラインインストールする場合

# yum install openssl

 パッケージファイルを利用し、OpenVPNをインストールします。Fedora 8ではyumコマンドを使ってオンラインインストールできます。yumでOpenVPNをインストールする場合は、lzoなど依存するパッケージも自動でインストールできます。

# yum install openvpn

...省略...
Dependencies Resolved

=========================================================
Package Arch Version Repository Size
=========================================================
Installing:
openvpn i386 2.1-0.19.rc4.fc7 fedora 356 k
Installing for dependencies:
lzo i386 2.02-3.fc8 fedora 62 k

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

Total download size: 418 k
Is this ok [y/N]: y ←「y」と入力

 yumコマンド終了後、設定ファイルのひな型など、接続に必要なファイルを/etc/openvpnにコピーします。

・設定ファイル、プライベートCAの準備

# cp /usr/share/doc/openvpn-2.1/sample-config-files/server.conf /etc/openvpn/
      ←サーバ設定ファイルの用意(クライアントには不必要)
# cp /usr/share/doc/openvpn-2.1/sample-config-files/client.conf /etc/openvpn/
      ←クライアント設定ファイルの用意(サーバには不必要)
# cp -r /usr/share/openvpn/easy-rsa /etc/openvpn/
      ←プライベートCA(認証局)の用意(クライアントには不必要)

プライベートCAを使ったサーバ証明書・秘密鍵の作成

 プライベートCAを構築し、データの暗号化やクライアント認証に必要なSSLサーバ証明書や秘密鍵を準備します。作業はサーバにて行います。

 ここまでの作業で、プライベートCAに必要なファイルが/etc/openvpn/easy-rsa/にコピーされています。easy-rsaには、プライベートCAを構築するためのスクリプトや各証明書を作成するスクリプトが用意されています。

 サーバ証明書・秘密鍵の作成作業は、以下の手順で行います。

  1. プライベートCAの構築とCA証明書・CA秘密鍵の作成
  2. サーバ証明書・サーバ秘密鍵の作成
  3. クライアント証明書・クライアント秘密鍵の作成
  4. DHパラメータの生成

1.プライベートCAの構築とCA証明書・秘密鍵の作成

 各証明書を自己署名するためのプライベートCAを構築します。作業ディレクトリを移動しファイル「vars」を書き換え、次のように実行します。実行後「/etc/openvpn/easy-rsa/2.0/keys/」下にca.crt(CA証明書)とca.key(CA秘密鍵)が作成されていることを確認します。

・「/etc/openvpn/easy-rsa/2.0/vars」ファイルの修正

export KEY_COUNTRY="JP"       ←国名
export KEY_PROVINCE="Tokyo"     ←都道府県名
export KEY_CITY="Chiyoda-ku"     ←区市町村名
export KEY_ORG="ITmedia"       ←団体名
export KEY_EMAIL="xxx@atmarkit.co.jp"←メールアドレス

・プライベートCAの構築作業

# cd /etc/openvpn/easy-rsa/2.0/
# source ./vars
# ./clean-all
# ./build-ca
...省略...
Country Name (2 letter code) [JP]:     ←Enterを入力
State or Province Name (full name) [Tokyo]: ←Enterを入力
Locality Name (eg, city) [Chiyoda-ku]:   ←Enterを入力
Organization Name (eg, company) [ITmedia]: ←Enterを入力
Organizational Unit Name (eg, section) []: ←Enterを入力
Common Name (eg, your name or your server's hostname) [ITmedia CA]: ←Enterを入力
Email Address [xxx@atmarkit.co.jp]:     ←Enterを入力

・「/etc/openvpn/easy-rsa/2.0/keys/」下に作成されたプライベートCAに必要なファイル

ca.crt(CA証明書) 、ca.key(CA秘密鍵)

2.サーバ証明書・サーバ秘密鍵の作成

 サーバ秘密鍵を作成し、先ほど構築したプライベートCAで署名を行います。

・サーバ証明書・サーバ秘密鍵の作成

# cd /etc/openvpn/easy-rsa/2.0/
# source ./vars
# ./build-key-server server
...省略...
Country Name (2 letter code) [JP]:     ←Enterを入力
State or Province Name (full name) [Tokyo]: ←Enterを入力
Locality Name (eg, city) [Chiyoda-ku]:   ←Enterを入力
Organization Name (eg, company) [ITmedia]: ←Enterを入力
Organizational Unit Name (eg, section) []: ←Enterを入力
Common Name (eg, your name or your server's hostname) [server]:                  ←Enterを入力
Email Address [xxx@atmarkit.co.jp]:     ←Enterを入力
...省略...
A challenge password []:          ←Enterを入力
An optional company name []:        ←Enterを入力
...省略...
Sign the certificate? [y/n]:y        ←「y」を入力
...省略...
1 out of 1 certificate requests certified, commit? [y/n]y
                      ←「y」を入力

・「/etc/openvpn/easy-rsa/2.0/keys/」下に作成されたサーバ証明書、サーバ秘密鍵

server.crt(サーバ証明書)、server.key(サーバ秘密鍵)

3.クライアント証明書・クライアント秘密鍵の作成

 クライアント秘密鍵を用意し、署名します。クライアントで使用するファイルですが、作業は引き続きサーバ側で行い、後ほど作成したファイルをクライアントに転送します。

 手順は次のとおりです。なお、複数クライアント分ファイルを用意する場合は、引数のクライアント名(ここではclient01)を変えて、台数分実行します。

・クライアント証明書、秘密鍵の作成

# cd /etc/openvpn/easy-rsa/2.0/
# source ./vars
# ./build-key-pass client01    ←クライアントが複数台ならclient02、client03のように変えて台数分実行します
...省略...
Enter PEM pass phrase:       ←パスフレーズを入力
Verifying - Enter PEM pass phrase: ←パスフレーズを再入力
...省略...
Country Name (2 letter code) [JP]: ←Enterを入力
State or Province Name (full name) [Tokyo]: ←Enterを入力
Locality Name (eg, city) [Chiyoda-ku]: ←Enterを入力
Organization Name (eg, company) [ITmedia]: ←Enterを入力
Organizational Unit Name (eg, section) []: ←Enterを入力
Common Name (eg, your name or your server's hostname) [client01]:
                  ←Enterを入力
Email Address [xxx@itmedia.co.jp]: ←Enterを入力
...省略...
A challenge password []:      ←Enterを入力
An optional company name []:    ←Enterを入力
...省略...
Sign the certificate? [y/n]:y   ←「y」を入力
...省略...
1 out of 1 certificate requests certified, commit? [y/n]y
                  ←「y」を入力

・「/etc/openvpn/easy-rsa/2.0/keys/」下に作成されたクライアント証明書、クライアント秘密鍵

client01.crt(クライアント証明書)、client01.key(クライアント秘密鍵)

4.DHパラメータの生成

 サーバで使用するDH(Diffie-Hellman)パラメータをbuild-dhスクリプトで生成します。

・DHパラメータの生成

# cd /etc/openvpn/easy-rsa/2.0/
# ./build-dh

・「/etc/openvpn/easy-rsa/2.0/keys/」下に作成されたDHパラメータファイル

dh1024.pem

ファイルの確認

 以上の作業で「/etc/openvpn/easy-rsa/2.0/keys/」下に作成されたファイルは次のとおりになるはずです。

・サーバで使用するファイル

ca.crt(CA証明書)、server.crt(サーバ証明書)、server.key(サーバ秘密鍵)、dh1024.pem(DHパラメータ)

・クライアントで使用するファイル

ca.crt(CA証明書)、client01.crt(クライアント証明書)、client01.key(クライアント秘密鍵)

 サーバ・クライアントそれぞれで使用するファイルを確認しておきましょう。CA証明書/クライアント証明書/クライアント秘密鍵は、内容が漏れないよう配慮しながら、USBメモリなどの記録媒体でクライアントにコピーします。

3/4
次のページ

Index
ゼロ円でできるインターネットVPN
  OpenVPNで手軽にVPN構築
  Page 1
 元祖仮想化はネットワーク?
 さまざまな種類のVPN
  Page 2
 インターネットVPNの使用例
 多様な環境で利用できるOpenVPN
 ルーティングとブリッジ、2つの通信方式
Page 3
 OpenVPNのインストール
  Page 4
 OpenVPNのインストール(2)
 疎通はできた? 動作確認


 Linux Squareフォーラム 仮想化技術関連記事
連載:実践! Xenで実現するサーバ統合
有力な仮想化技術として注目を集めるようになった「Xen」。このXenを活用してサーバ統合を実践していく手順を具体的に紹介します
特集:サーバの仮想化技術とビジネス展開の可能性
jailからUML/VMwareまで
1台のマシンで複数のサーバを動かす「仮想化技術」。VMwareやUMLの登場により、WebサイトだけでなくOS自体を仮想化できるようになった
特集:仮想化技術のアプローチと実装
VMwareから要注目技術Xenまで

1台のサーバで複数の仮想マシンを実行する仮想化技術は、空間コストを引き下げる可能性を持つ。最新の仮想化技術を概観してみよう
特集:仮想OS「User Mode Linux」活用法
技術解説からカーネルカスタマイズまで
Linux上で仮想的なLinuxを動かすUMLの仕組みからインストール/管理方法やIPv6などに対応させるカーネル構築までを徹底解説
特集:仮想化技術の大本命「Xen」を使ってみよう
インストール & Debian環境構築編

高いパフォーマンスで本命の1つとなった仮想マシンモニタ「Xen」。日本語による情報が少ないXenを、実際に動かしてみよう
特集:仮想化技術の大本命「Xen」を使ってみよう
Xen対応カスタムカーネル構築編

Xen環境およびその上で動作する仮想マシン用カーネルを自分で構築しよう。これにより、自由にカスタマイズしたカーネルを利用できる
特集:IPv6、UML、セキュリティ機能の統合
全貌を現したLinuxカーネル2.6[第4章]

今回は、これまでに紹介し切れなかった機能を一気に紹介する。これを読めば、カーネル2.6の正式リリースが楽しみになるだろう
Linux Squareプロダクトレビュー VMware Workstation 4
PC/AT互換機エミュレータとして不動の地位を築いたVMware。その新バージョンがリリースされた。新機能を早速試してみよう
古くて新しい「サーバ仮想化技術」の行方
サーバ仮想化を実現するための技術がソフトウェア、ハードウェアの両面で出そろってきた。ハイパーバイザーのさらなる高速化に向けた動きを紹介する
Linux Squareフォーラム全記事インデックス


Linux & OSS フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Linux & OSS 記事ランキング

本日 月間