OpenVPNのインストール方法
OpenVPN 2.0 HOWTO 日本語訳は原文を丁寧に翻訳してあり非常に為になるのだが、余計な記述までそのまま翻訳してあるので、「とにかくインストールしてさっさと今すぐ使いたい」ってだけの人には冗長すぎてちょっと解りにくい。
私はここを参考にしてとりあえずインストールが完了できたのでよかったが、今後のことを考えると個人的にも忘れそうなので、OpenVPN 2.0 HOWTO 日本語訳を抜粋して必要最小限&初心者向けのセットアップ、つまり
- サーバもクライアントもWindows
- 会社などから繋ぐとか、とにかくつながればヨシ
- ブリッジとかなんとかという本格的な設定は要らねぇ
っていう人向けのインストール方法を下記に記します。っていうか個人的な備忘録としてですけど。
・OpenVPNのDownload
ここからDownloadするのが本当だが、Windows同士だからOpenVPN GUI for WindowsをDownloadする。本家のOpenVPNにGUIによる設定アプリが入っているだけだから、両方とも中身はほぼ一緒なのだ。
・証明書と鍵を作る
OpenVPNを使うための一番最初の作業がコレ。ここが一番面倒だけど、この証明書と鍵を作らないと使えない。
1. 鍵作成の設定ファイルの作成
コマンドプロンプトを開いて、インストールしたディレクトリに移動する
cd C:\インストールしたディレクトリ\easy-rsa\ 一般的には cd C:\Program Files\OpenVPN\easy-rsa\
その後、次のバッチファイルを実行する
init-config
すると設定ファイルが作成される(っていうかサンプルファイルをコピーするだけだけど)
次にvars.batファイルを変更する。メモ帳やエディタを使ってvar.batを開いて以下の箇所を変更する。適当でもいいと思うのだが、正しく変更したほうがいいような気がする
set KEY_COUNTRY=JP 日本なのでJPにしておく set KEY_PROVINCE=Aichi 都道府県を入れておく set KEY_CITY=Nagoya 市町村を入れておく set KEY_ORG=Home 企業名とか。個人なら適当に set KEY_EMAIL=foo@bar.com メールアドレスを
空欄にしてはいけません
2. 認証局(CA)の証明書と鍵の作成
認証局(CA)の証明書と鍵を作成するために、次のコマンドを順に実行する。
vars clean-all build-ca
最後のbuild-caを実行すると次のようなメッセージがでてくるので必要に応じて入力する
C:\Program Files\OpenVPN\easy-rsa>build-ca Loading 'screen' into random state - done Generating a 1024 bit RSA private key .............++++++ ..........................................++++++ writing new private key to 'keys\ca.key'
-
-
-
- -
-
-
-
-
-
- -
-
-
大半は1.でvars.batに設定した値を用いるので、入力するのはCommon NameのところだけでOK
3. サーバの証明書と鍵の作成
サーバの証明書と鍵を作るために次のコマンドを実行する
build-key-server server
CA証明書&鍵を作ったときと同じメッセージ&質問がくるが、Common Nameは'server'にしておく
Loading 'screen' into random state - done Generating a 1024 bit RSA private key .............++++++ ..........................................++++++ writing new private key to 'keys\ca.key'
-
-
-
- -
-
-
-
-
-
- -
-
-
最後の2つの質問は"y"でOK
4. クライアントの証明書と鍵の作成
クライアントの証明書と鍵を作るために次のコマンドを実行する。
build-key client1 build-key client2 build-key client3
この例では3台のクライアントで使用するために3度コマンドを実行して3つの証明書と鍵のペアを作ったわけだが、証明書・鍵は必要に応じて作成すればよい。複数の証明書と鍵のペアを作る際には
- build-keyの後ろの名前はユニークな(重複しない)名前にする
- 質問の時のCommon Nameのところは、上記の名前(build-keyの後ろの名前)と同じにする(重複しない)
ようにする
5. Diffie Hellmanパラメータの生成
OpenVPNサーバにはDiffie Hellmanパラメータというのを生成しなければならないらしい。ので、次のコマンドを実行する
build-dh
生成に少し時間がかかりますが、実行が終われば終了。
以上の証明書、鍵(CA、サーバ、クライアント)、DHパラメータは「¥インストールしたディレクトリ¥easy-rsa¥keys」のディレクトリに保存される。
サーバ、クライアントそれぞれに必要な証明書・鍵ファイルは以下のとおり。
- サーバに必要なもの
- ca.crt
- ca.key
- dh.pem
- server.crt
- server.key
- クライアントに必要なもの
- ca.crt
- ca.key
- client.crt
- client.key
鍵ファイルは秘密にしないと不正にアクセスされるので、特にクライアントマシンへのコピーの際にはセキュリティに細心の注意を払って行ってください。
設定ファイルの編集
サーバ・クライアントの設定ファイルは「¥インストールしたディレクトリ¥sample-config」に設定ファイルのサンプル(server.ovpn、clilent.ovpn)があるので、これを「¥インストールしたディレクトリ¥config」にコピーして編集する。
1. サーバ設定ファイルの編集
最低限編集しなければならない項目は以下のとおり
・port 1194 OpenVPNのリスニングポート。デフォルトでは1194だがProxyをとおす場合(後述)などでポートを変更する場合はここを変更する。ルータなどでポート制限をしている場合は、ルータ側でも同じポート番号を開ける設定をしておくこと ・proto udp 使用するプロトコル。通常はudpでいいのだがProxyをとおす場合(後述)はここを"tcp"に変更しなければならない ・ca c:\\Program Files\\OpenVPN\\easy-rsa\\keys\\ca.crt CA証明書があるディレクトリ。ディレクトリの区切りは\\とする ・cert c:\\Program Files\\OpenVPN\\easy-rsa\\keys\\server.crt サーバ証明書があるディレクトリ。ディレクトリの区切りは\\とする ・key c:\\Program Files\\OpenVPN\\easy-rsa\\keys\\server.key サーバ鍵があるディレクトリ。ディレクトリの区切りは\\とする ・server 192.168.0.0 255.255.255.0 サーバが構築する仮想ネットワークアドレス。サーバがインストールされたマシンは(上記の設定の場合)192.168.0.1とIPが割り当てられ、サーバ(が入っているマシン)との通信は192.168.0.1と行うことになる。クライアントには残りのIPアドレスが割り当てられる
2. クライアント設定ファイルの編集
作成したCA証明書&鍵(ca.crt、ca.key)とクライアント証明書&鍵(client.crt、client.key)のペアをクライアントマシンの適当なフォルダにコピーしておくこと。
client.ovpnの編集しなければならない項目は以下のとおり
・proto udp 使用するプロトコル。サーバと同様通常はudpでいいのだがProxyをとおす場合(後述)はここを"tcp"に変更しなければならない ・remote hogehoge.com 1194 接続するサーバのアドレスとポートを入力。ポートはサーバの設定ファイルに記述したのと合わせること ・http-proxy [proxy server] [proxy port #] Proxyを通す場合は、ここにProxyサーバとポートを記述する(詳細は後述)。Proxyを通さないなら、文頭に";"つけてコメントアウトにするか削除する ・ca c:\\保存先ディレクトリ\\ca.crt CA証明書があるディレクトリ。ディレクトリの区切りは\\とする ・cert c:\\保存先ディレクトリ\\server.crt サーバ証明書があるディレクトリ。ディレクトリの区切りは\\とする ・key c:\\保存先ディレクトリ\\server.key サーバ鍵があるディレクトリ。ディレクトリの区切りは\\とする
サーバの起動
サーバの起動には2通りあります
・OpenVPN GUIから起動
- タスクと例にOpenVPN GUIのアイコンがあるので、右クリックメニュー→「Server」→「Connect」でサーバを起動する
- ログダイアログが開くので、一番最後の行に「Initialization Sequence Completed」と表示されたら見事起動が完了
・エクスプローラから起動
- 「スタート」→「すべてのプログラム」→「OpenVPN」→「OpenVPN configuration file directory」とクリックして
- 設定ファイルのフォルダが開きますので、ここでserver.ovpnをダブルクリック
コマンドプロンプトが開いてログが表示されますので、一番最後の行に「Initialization Sequence Completed」と表示されたら見事起動が完了
クライアントの起動
クライアントの起動にもサーバと同様2通りあります
・OpenVPN GUIから起動
- タスクと例にOpenVPN GUIのアイコンがあるので、右クリックして「Connect」をクリック
- ログダイアログが開くので、一番最後の行に「Initialization Sequence Completed」と表示されたら見事接続が完了
・エクスプローラから起動
- 「スタート」→「すべてのプログラム」→「OpenVPN」→「OpenVPN configuration file directory」とクリックして
- 設定ファイルのフォルダが開きますので、ここでclient.ovpnをダブルクリック
コマンドプロンプトが開いてログが表示されますので、一番最後の行に「Initialization Sequence Completed」と表示されたら見事起動が完了
HTTP-Proxy経由の接続方法
OpenVPNはHTTP-Proxy経由の接続ができる。Proxy認証も
- 認証なし
- Basic認証
- NTLM認証
の3つができるので、ほとんどのHTTP-Proxyサーバが使えると思う。
方法は次のとおり
・サーバ、クライアントの設定ファイルの「proto udp」の項目を削除し「proto tcp」を追加する ・クライアントの設定ファイルにhttp-proxy項目を追加する http-proxy proxy.server.com 1080:認証が要らない場合 http-proxy proxy.server.com 1080 stdin basic:HTTP-ProxyがBasic認証を要求する場合 http-proxy proxy.server.com 1080 stdin ntlm:HTTP-ProxyがNTLM認証を要求する場合
ちなみにstdinのところを一行目でユーザ名,二行目でパスワードを書いたファイル名に変えると起動の度に入力する手間が省ける。
HTTP-Proxy経由の接続でのコツ(特にProxyサーバの監視が厳しい環境のとき)
デフォルトでは通信で使うポートが1194であるので、HTTP-Proxyへの要求としては
CONNECT hogehoge.com:1194 HTTP/1.0
というのが送信される。しかし1194というポート番号はOpenVPN用として登録されているので、このままではネットワーク管理者が「OpenVPNを使って外に出ている野郎がいる」とバレてしまう可能性が高い。
そこでネットワーク管理者を騙す方法として、通信ポートとして443(https)を用いる。
変更箇所は以下のとおり
server.ovpn protoudp→tcp port1194→443 client.ovpn protoudp→tcp remote hogehoge.com1194→443
そうするとHTTP-Proxyへは
CONNECT hogehoge.com:443 HTTP/1.0
という風に送信され、ネットワーク管理者もログを見ただけでは「httpsを使ったサイトでも見ているんだろうな」と目をそらすことができる。(もっともプロトコルレベルで監視されたら身もふたもないが・・・)。いずれにせよ会社内部から外部への長時間の接続は何をしたにせよ怪しまれるので、必要最小限の接続時間にとどめ使わないときはこまめに切断するのが一番よいと思う。ご自身の身のために・・・(笑