ゼロ円でできるインターネット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番に対して制限を実施しないようにします。
図7 ネットワーク構成図 |
NATルータやファイアウォールの設定は機器ごとに異なるためここでは言及しませんが、マニュアルを参考に各自で設定するか、設定を実施したベンダや担当者に依頼してください。
■サーバ・クライアント共通に必要な作業
OpenVPNパッケージのインストールなど、サーバとクライアントに共通する作業は次のとおりです。
OpenVPNを利用するには、まず、OpenSSLがインストールされている必要があります。次のようにrpmコマンドで確認します。多くの場合はすでに導入されていますが、別途導入が必要な場合は、ディストリビューションが提供するインストールディスクなどからRPMファイルを探し、インストールを実行します。
・OpenSSLがインストールされているか確認
# rpm -q openssl |
・OpenSSLを手元のRPMファイルからインストールする場合
# rpm -ivh openssl-○○.rpm |
・OpenSSLをyumでオンラインインストールする場合
# yum install openssl |
パッケージファイルを利用し、OpenVPNをインストールします。Fedora 8ではyumコマンドを使ってオンラインインストールできます。yumでOpenVPNをインストールする場合は、lzoなど依存するパッケージも自動でインストールできます。
# yum install openvpn |
yumコマンド終了後、設定ファイルのひな型など、接続に必要なファイルを/etc/openvpnにコピーします。
・設定ファイル、プライベートCAの準備
# cp /usr/share/doc/openvpn-2.1/sample-config-files/server.conf /etc/openvpn/ |
■プライベートCAを使ったサーバ証明書・秘密鍵の作成
プライベートCAを構築し、データの暗号化やクライアント認証に必要なSSLサーバ証明書や秘密鍵を準備します。作業はサーバにて行います。
ここまでの作業で、プライベートCAに必要なファイルが/etc/openvpn/easy-rsa/にコピーされています。easy-rsaには、プライベートCAを構築するためのスクリプトや各証明書を作成するスクリプトが用意されています。
サーバ証明書・秘密鍵の作成作業は、以下の手順で行います。
- プライベートCAの構築とCA証明書・CA秘密鍵の作成
- サーバ証明書・サーバ秘密鍵の作成
- クライアント証明書・クライアント秘密鍵の作成
- 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" ←国名 |
・プライベートCAの構築作業
# cd /etc/openvpn/easy-rsa/2.0/ |
・「/etc/openvpn/easy-rsa/2.0/keys/」下に作成されたプライベートCAに必要なファイル
ca.crt(CA証明書)
、ca.key(CA秘密鍵) |
2.サーバ証明書・サーバ秘密鍵の作成
サーバ秘密鍵を作成し、先ほど構築したプライベートCAで署名を行います。
・サーバ証明書・サーバ秘密鍵の作成
# cd /etc/openvpn/easy-rsa/2.0/ |
・「/etc/openvpn/easy-rsa/2.0/keys/」下に作成されたサーバ証明書、サーバ秘密鍵
server.crt(サーバ証明書)、server.key(サーバ秘密鍵) |
3.クライアント証明書・クライアント秘密鍵の作成
クライアント秘密鍵を用意し、署名します。クライアントで使用するファイルですが、作業は引き続きサーバ側で行い、後ほど作成したファイルをクライアントに転送します。
手順は次のとおりです。なお、複数クライアント分ファイルを用意する場合は、引数のクライアント名(ここではclient01)を変えて、台数分実行します。
・クライアント証明書、秘密鍵の作成
# cd /etc/openvpn/easy-rsa/2.0/ |
・「/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/ |
・「/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 |
|
||||||||
|
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フォーラム全記事インデックス |
- 【 pidof 】コマンド――コマンド名からプロセスIDを探す (2017/7/27)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、コマンド名からプロセスIDを探す「pidof」コマンドです。 - Linuxの「ジョブコントロール」をマスターしよう (2017/7/21)
今回は、コマンドライン環境でのジョブコントロールを試してみましょう。X環境を持たないサーバ管理やリモート接続時に役立つ操作です - 【 pidstat 】コマンド――プロセスのリソース使用量を表示する (2017/7/21)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、プロセスごとのCPUの使用率やI/Oデバイスの使用状況を表示する「pidstat」コマンドです。 - 【 iostat 】コマンド――I/Oデバイスの使用状況を表示する (2017/7/20)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、I/Oデバイスの使用状況を表示する「iostat」コマンドです。
|
|