レンタルサーバー・自宅サーバー設定・構築のヒント
レンタルサーバー・自宅サーバー設定・構築のヒント - レンタルサーバー・自宅サーバーの設定・構築情報を公開しています。

WindowsでOpenVPNへのクライアント接続を自動化する

2013年1月18日 2015年5月14日
virtual lan opnevpn

ここまで、以下のようにOpenVPNおよびSambaに関して記事を書いてきました。

これらの設定にて、OpenVPNを使うことであたかも同一LAN上にサーバーがあるかのうような使い方ができるようになります。 もちろんSamabを使えばエクスプローラからネットワーク上に共有ファイルを確認することもできます。

これは非常に便利で、サーバーを管理している方やサイト構築中の方にとっては、 毎回FTPでアップロード、ダウンロードしなくてもWindowsのエクスプローラで操作できるので手間が省けて大助かりです。

ただ、先の記事(OpenVPN を使って仮想LAN接続してみる)にも書きましたが、
WindowsからOpenVPNのVPNサーバーへ接続する際には、OpenVPNサーバーへの接続ソフトでいわゆるOpenVPNクライアントソフトが必要です。
Windows版で主だったところで以下のようなものがあります。



ここで、機能面が充実していて安定している サーバーとしてもクライアントとしても利用できる OpenVPN を使うことにします。

クライアント専用ソフトとしては、OpenVPN-Client for Windows の解説が多く目にしますが、2010年から更新が止まっていて、パスワード周りの機能が落ちていますし、使い勝手が悪いです。
また、vpnux Connector Liteは、自動化ができません。
さらに、securepointについては、TLS-AUTHの機能がありません。

結局、先に記事では、消去法からOpenVPNが残り、これを使うことにしました。それも最新版でなくOpenVPN 2.2.2 を利用します。(今のところ最新版はバグが多いので利用するにはちょっと難ありだと思います。)

自動化、例えば、Windowsを立ち上げたら自動的にOpenVPNサーバーへ接続してくれるようにするには、OpenVPN以外にないと思います。
逆に自動化は必要なく、もっとわかりやすいものが良い場合は、vpnux Connector Lite が良いかと思います。
設定する内容も必要最小限となっていますし、GUIでわかりやすいです。管理者権限の必要もないので、必要なときに接続するだけなら、これで十分かと思います。
ここでは、自動化が目的なので、先に書いたとおりOpenVPNを使って、その自動化を行ってみます。

WindowsでOpenVPNへのクライアント接続を自動化する

先にも書いたとおり、
WindowsでOpenVPNへのクライアント接続を自動化するために、クライアントにもサーバーにもなるOpenVPN Windows版を使います。

OpenVPN を使って仮想LAN接続してみる でも解説しているとおり、まずは、接続できる環境を整備します。
先の記事と重複しますが、一応、その手順も含めて自動化の手順を解説してみます。(先の記事を既に読まれている方は、自動化のところからお読みください。)

設定の条件として以下のとおりとします。
  • OpenVPN サーバー パブリックIPアドレス : 192.168.1.99
  • OpenVPN サーバー プライベートIPアドレス : 10.8.0.1

先のダウンロードページからOpenVPN 2.2.2 をダウンロードし、インストールします。

Windows版では、MicroSoft の.NET Framework 3.5以上が必要なので、もし、インストールされていないようであれば、先にインストールします。
インストール自体は、画面の指示に従ってインストールするだけなので割愛します。
また、TAPドライバーのインストール確認のために以下のような画面表示があります。その場合は、迷わずインストールをクリックします。

TAPネットワークアダプターインストール確認

先のOpenVPN サーバーで作成した各証明書、鍵などのファイルをコピーします。

ここでは、OpenVPNサーバーから C:\openvpn へ 必要な各証明書、鍵などのファイルが一式すべてコピーするものします。 コピーされるべきファイルは、以下のとおりです。

C:\openvpn>dir /B
ca.crt           # CA 証明書
client_pc1.crt   # クライアント 証明書
client_pc1.key   # クライアント 秘密鍵
ta.key           # TLS-AUTH HMAC 共有鍵
C:\openvpn は、OpenVPN のインストール先ではありません。

ここでは、OpenVPN のインストール先はインストーラのデフォルトのディレクトリとしています。 一般的には、そこにコピーしたくなりますが、OpenVPN のインストール先は、Windows Vista/7/8 では、管理者権限がないとファイルの書き込みができないので色々と面倒です。 そのため、ここでは C:\openvpn というディレクトリを作成して そこにコピーしています。

クライアント認証用のパスワードファイルを作成します。

クライアント証明書を作成する際に入力したパスフレーズを保存したテキストファイルをパスワードファイル ( C:\openvpn\pass.cfg )として作成します。
中身は、単純なテキストファイルでパスワードをそのまま1行目に入力したものです。以下は、ファイルの中身を出力した様子で、単純にテキストが設定されていることがわかるかと思います。

C:\openvpn>cat pass.cfg
password

C:\openvpn>
パスワードファイルを作成するのは、接続する度にパスワードを入力するのも大変なので自動化のために作成しています。

クライアント接続用の OpenVPN Configファイルを作成します。

クライアント接続用の OpenVPN Configファイル ( C:\openvpn\client.ovpn )を作成します。

C:\openvpn>cat client.ovpn
# VPN Client を設定します
client
# tap/tun のいずれを使用するか指定します。VPN Serverの設定に合わせます
dev tun
# TCP/UDP のいずれを使用するか指定します。VPN Serverの設定に合わせます
proto udp
# VPN ServerのIPアドレス( 192.168.1.99 ) とポート番号( 1194 )を設定します
remote 192.168.1.99 1194
# remoteで指定したホスト名の名前解決のためのタイムアウト時間(ここでは無制限)を設定します
resolv-retry infinite
# 特定のリソースアクセスへの回避を指定します。(以下デフォルトのままです)
persist-key
persist-tun

# 認証局証明書のファイル名を指定します。
ca ca.crt
# クライアント証明書のファイル名を指定します。
cert client_pc1.crt
# クライアント秘密鍵のファイル名を指定します。
key client_pc1.key
# クライアント認証パスワードファイル名を指定します。
askpass pass.cfg

key-direction 1
# TLS-AUTH HMAC 共有鍵のファイル名を指定します。
tls-auth ta.key 1

# LZOによる圧縮を有効にします。
comp-lzo
# ログファイルへの出力レベルを指定します。
verb 4

C:\openvpn>

コマンドプロンプトからアクセスしてみましょう。

コマンドプロンプトは、管理者権限で実行します。

# 最初にOpenVPNのインストール先ディレクトリへのパスをはっておきます。
C:\openvpn>set path=%path%;"C:\Program Files (x86)\OpenVPN\bin"

# OpenVPN Client Configを実行して、OpenVPNサーバーへ接続します。
C:\openvpn>openvpn.exe --config client2.ovpn
...
Mon Jan 14 05:52:23 2013 us=74000 OPTIONS IMPORT: route options modified
Mon Jan 14 05:52:23 2013 us=90000 ROUTE default_gateway=192.168.1.1
Mon Jan 14 05:52:23 2013 us=90000 TAP-WIN32 device [ローカル エリア接続] opened: \\.\Global\{xxxxxx-xxxxx-xxxx-xxxx-xxxxxxxx}.tap
Mon Jan 14 05:52:23 2013 us=90000 TAP-Win32 Driver Version 9.9
Mon Jan 14 05:52:23 2013 us=90000 TAP-Win32 MTU=1500
Mon Jan 14 05:52:23 2013 us=90000 Notified TAP-Win32 driver to set a DHCP IP/netmask of 10.8.0.50/255.255.255.252 on interface {xxxxxx-xxxxx-xxxx-xxxx-xxxxxxxx} [DHCP-serv: 10.8.0.49, lease-time: 31536000]
Mon Jan 14 05:52:23 2013 us=90000 Successful ARP Flush on interface [19] {xxxxxx-xxxxx-xxxx-xxxx-xxxxxxxx}
Mon Jan 14 05:52:25 2013 us=367000 TEST ROUTES: 1/1 succeeded len=1 ret=1 a=0 u/d=up
Mon Jan 14 05:52:25 2013 us=383000 C:\WINDOWS\system32\route.exe ADD 10.8.0.0 MASK 255.255.255.0 10.8.0.49 OK!
Mon Jan 14 05:52:25 2013 us=383000 Initialization Sequence Completed

Initialization Sequence Completed で接続完了です。
クライアント側のIPアドレスは、10.8.0.50で振られています。
切断したい場合は、F4キーを押下します。)

別のコマンドプロンプト画面から pingで OpenVPN サーバー( 10.8.0.1 固定です。)へアクセスできるか確認してみましょう。

#  pingで OpenVPN サーバーへアクセスできるか確認してみましょう。
C:\openvpn>ping 10.8.0.1

10.8.0.1 に ping を送信しています 32 バイトのデータ:
10.8.0.1 からの応答: バイト数 =32 時間 =1ms TTL=64
10.8.0.1 からの応答: バイト数 =32 時間 =1ms TTL=64
10.8.0.1 からの応答: バイト数 =32 時間 <1ms TTL=64
10.8.0.1 からの応答: バイト数 =32 時間 =2ms TTL=64

10.8.0.1 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 0ms、最大 = 2ms、平均 = 1ms

上記のように通ればOKです。
また、逆も確かめておきます。

#  pingで OpenVPN クライアントへアクセスできるか確認してみましょう。
$ ping -c5 10.8.0.50

PING 10.8.0.50 (10.8.0.50) 56(84) bytes of data.
64 bytes from 10.8.0.50: icmp_seq=1 ttl=128 time=0.842 ms
64 bytes from 10.8.0.50: icmp_seq=2 ttl=128 time=2.17 ms
64 bytes from 10.8.0.50: icmp_seq=3 ttl=128 time=1.66 ms
64 bytes from 10.8.0.50: icmp_seq=4 ttl=128 time=1.50 ms
64 bytes from 10.8.0.50: icmp_seq=5 ttl=128 time=1.00 ms

--- 10.8.0.50 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4053ms
rtt min/avg/max/mdev = 0.842/1.438/2.176/0.478 ms
逆向きは、Windos Vista/7/8 のデフォルトの設定では、NGになることがあります。 これは、Windowsファイアウォールが効いていて、外部からのpingコマンドを受け付けないようになっているためです。これを解除すれば、pingがとおるようになります。

簡単な解除方法は以下のとおりです。
  1. コントロール パネル > システムとセキュリティ > Windows ファイアウォール でファイアウォール管理画面を表示します。
  2. ファイアウォール管理画面 の画面左の 詳細設定 をクリックすると以下のように セキュリティが強化されたWindowsファイアウォールが表示されます。
    ファイアウォール設定解除
    1. 画面中央のWindowsファイアウォールのプロパティをクリックします。
    2. パブリックプロファイルタブをクリックします。
    3. 保護されているネットワーク接続 カスタマイズ をクリックします。
    4. ネットワーク接続一覧 の中で TAPアダプタの名前 (ここではローカルエリア接続)のチェックを解除して、OK をクリックします。

pingが通らなくてもほとんど影響はありませんので、確認を終えたらもとに戻しておきましょう。
OpenVPN-GUIを使いたい場合は、以下のように実行すればOKです。
# 最初にOpenVPNのインストール先ディレクトリへのパスをはっておきます。
C:\openvpn>set path=%path%;"C:\Program Files (x86)\OpenVPN\bin"

# OpenVPN Client Configを OpenVPN-GUIで実行して、OpenVPNサーバーへ接続します。
C:\openvpn>openvpn-gui-1.0.3.exe --config_dir "C:\openvpn\config_gui" --connect client.ovpn
openvpn-gui-1.0.3.exe の実行ファイル名は、OpenVPNのバージョンによって異なります。

OpenVPN-GUIを実行した場合、タスクトレイにアイコン表示されます。

切断状態
切断状態
接続状態
接続状態

また、右クリックでメニューが表示されますので、各操作を行うことができます。
メニュー
Windowsログイン時に自動的にVPN接続を行うように自動化したい場合は、上記の手順をバッチファイルにして、管理者権限で実行すればOKです。
管理者権限で実行する場合の確認画面を表示したくない場合は、(最上位の特権で実行するように)タスク登録してタスク名で実行するのが一番ポピュラーなようです。

ここまでは、OpenVPN を使って仮想LAN接続してみる でも記載した内容です。


OpenVPNクライアント接続の自動化を行います。

ここまでで手動による接続が確認できたら、あとは、これを自動化します。
OpenVPNを自動化するには、大きく2つの手段があります。

前者は、サービスなので誰がPCを使っていてもVPNが接続されてしまいます。
後者は、ユーザ毎に設定できるもののバッチファイルを管理者権限で実行する必要があります。

いずれも一長一短あります。

それでは、両者のやり方を簡単に解説してみます。

OpenVPN のサービスを使う方法

OpenVPN のサービスを使ってOSが起動したときに自動的に接続するには、以下の手順で行います。

  1. C:\openvpn 配下のConfigファイル(拡張子 ovpn )を自動的に読み込むように設定します。

    OpenVPN のサービスは、デフォルトの動作として、

    Configファイル(拡張子 ovpn )を
    → %OpenVPNインストールディレクトリ%\config
    (例)"C:\Program Files\OpenVPN\config")

    から検索します。

    つまり、上記の例では、
    C:\Program Files\OpenVPN\config の配下に 拡張子 ovpn のファイルを探して、そのConfigファイルに従いOpenVPNを起動します。

    今回は、Configファイル(拡張子 ovpn )を
    C:\openvpn に置くようにしたので、この設定を変更すれば、OpenVPN のサービスが使えることがわかります。
    OpenVPN のサービスがC:\openvpn を検索させるには、通常のデフォルトのOpenVPN のConfigディレクトリをC:\openvpnに向ければOKです。

    通常のデフォルトのOpenVPN のConfigディレクトリは、Windowsの場合、レジストリにて設定を変更することができます。

    [32bitWindowsの場合]
    HKEY_LOCAL_MACHINE\SOFTWARE\OpenVPN\config_dir="C:\\openvpn"
    [64bitWindowsの場合]
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\OpenVPN\config_dir="C:\\openvpn"

    とすれば、デフォルトのOpenVPN のConfigディレクトリをC:\openvpnとすることができます。

    レジストリには、デフォルトで以下のように設定してあります。
    # レジストリーキー
    [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\OpenVPN]
    @="C:\\Program Files (x86)\\OpenVPN"
    # Configディレクトリ
    "config_dir"="C:\\Program Files (x86)\\OpenVPN\\config"
    # Config拡張子
    "config_ext"="ovpn"
    # OpenVPNの実行ファイルパス
    "exe_path"="C:\\Program Files (x86)\\OpenVPN\\bin\\openvpn.exe"
    # ログディレクトリ
    "log_dir"="C:\\Program Files (x86)\\OpenVPN\\log"
    # プロパティ
    "priority"="NORMAL_PRIORITY_CLASS"
    # ログ追加フラグ
    "log_append"="0"

  2. OpenVPN サービスを自動的に起動するように設定します。

    OpenVPN のサービスは、デフォルトで手動にて起動するようになっています。(初期上状態では、動いていません)
    そこで、OpenVPN サービスを自動起動とし、最後に起動すれば接続OKです。

    コントロール パネル → システムとセキュリティ→ 管理ツール→ サービス
    サービス一覧
    ここで、OpenVPN Serviceを選択し、プロパティを選択し、以下のプロパティ画面を表示します。
    サービスプロパティ
    スタートアップの種類 : 自動 を選択し、開始 ボタンをクリックします。最後に、下段のOKボタンをクリックし完了です。



先の手動手順をバッチファイルにして、スタートアップに登録する方法

先に手動で確認した手順をバッチファイルにして、各ユーザ毎のスタートアップに登録することで自動化することもできます。 この方法は、以下の手順で行います。

  1. 先の手動手順をバッチファイルにします。

    ここでは、わかりやすいように OpenVPN GUI を使ってみます。
    C:\openvpn\auto_gui.bat というファイルを作成します。

    @echo off
    set path=%path%;"C:\Program Files (x86)\OpenVPN\bin"
    C:
    cd C:\openvpn>
    openvpn-gui-1.0.3.exe --config_dir "C:\openvpn\config_gui" --connect client.ovpn
    Windows XPなら、このファイルをスタートアップに追加すれば終了ですが、
    Windows Vista/7/8 は、管理者権限でこれを実行する必要があります。以降の手順は、その管理者権限で実行する場合の確認画面を出さないための手順です。

  2. 作成したバッチファイルをタスク登録します。

    コントロール パネル → システムとセキュリティ→ 管理ツール→ タスク スケジューラ
    タスクスケジューラ

    1. 画面左のタスクスケジューラライブラリをクリックします。
    2. 画面右のタスクの作成をクリックします。
    3. タスクの作成画面が表示されますので、
      名前 : openvpn-autoとします。
      セキュリティオプション : 最上位の特権で実行するをチェックします。

      続けて、操作タブをクリックします。
      タスク操作タブ
      画面下、新規(N)をクリックします。
      タスク新規作成
      操作 : プログラム開始とします。
      プログラム/スクリプト : C:\openvpn\auto_gui.bat 先に作成したバッチファイルのフルパスを設定します。

      画面下、OKをクリックします。
      同様にすべての画面を終了します。

  3. 作成したタスクを実行するバッチファイルを作成します。

    先に作成したタスクを実行するためのバッチファイルを作成します。
    C:\openvpn\auto_task.bat というファイルを作成します。

    @echo off
    schtasks.exe /run /tn openvpn-auto

    これだけです。openvpn-autoが、先に作成した時のタスク名(名前で設定したもの)になります。簡単ですね。
    あとは、このファイルをスタートアップに追加すれば終了です。

    ログインして確認してみてください。
    タスクトレイに接続状態なら以下のように表示されればOKです。
    接続状態



うまくできたでしょうか?
最近では、Windowsのセキュリティが厳しいので、確認画面が度々表示され嫌になりますね。
でも、これぐらいしてもウイルス、マルウェアに感染したり、意図しないサイトへ勝手にアクセスしたりと危険がいっぱいです。

ちょっと話はそれますが、
OpenVPN のサービス実行プログラム(openvpnserv.exe)を語った、マルウェアがあるのは有名な話です。 マルウェアの場合は、c:\windows や c:\windows\system32 などのシステムディレクトリに存在するのが特徴です。

マルウェアが作成されるほど、便利でユーザが多いということでもあるのでしょうね。
便利は、反面セキュリティを弱めることもあります。十分に気を付けましょう。
ご利用のブラウザは、広告ブロック(AdBlockなど) が適用となっていませんか?
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない検索ができないことがあります。


関連記事 :

OpenVPN を使って仮想LAN接続してみる

Samba を使ってファイル共有してみる では、Sambaを使ってファイル、ディレクトリの共有を行ってみました。 ただ、Sambaをそのままイ ...

SSL 認証 の仕組みと OpenVPN の認証の仕組み

OpenVPN を使って仮想LAN接続してみる で、OpenVPNを使った仮想プライベートネットワークを構築してみました。 その際に、簡単にO ...

OpenVPN 上で Samba を使うための設定

以下の記事で Samba の設定、OpenVPN の設定を行ってみました。 Samba を使ってファイル共有してみる OpenVPN ...

OpenVPN で不要になったクライアント証明書を無効にし、該クライアントからの接続を拒否する

今回は、OpenVPN を使って仮想LAN接続してみる の補足です。 SSL 認証 の仕組みと OpenVPN の認証の仕組み の認証方法 ...

nginx で a client request body is buffered to a temporary file の警告に対応してみる

以下のような警告メッセージが出力されていたので、今回は、これに対処してみました。 2013/04/08 09:50:49 [warn] 1 ...



コメントを投稿 :

お名前 *

メールアドレス *
( メールアドレスが公開されることはありません。)

サイトアドレス

コメント *

* 印の項目は、入力が必要な項目です。




最近投稿の記事

[ 画像提供元 : Amazon ] 先日、1TBのディスクの入れ替え時にバックアップをとろうとディスクコピーを行いました。 その際 ...

Windows で Linux ファイルシステム Ext4 のディスクをマウントするには? Ext3Fsd が、おそらく、最も簡単なツール ...

今回は、Windows で Compass を使ってみました。 Compass とは、 Sass(サス、Syntactica ...

今回は、Anti Adblock を使ってみました。 Anti Adblock とは、 そもそも Adblock という ウェブ ...

デスクトップ環境でない サーバーで、Webページのキャプチャー画像をコマンドで撮る には、wkhtmltoimage, CutyCapt ...


さくらのVPS 全プラン リニューアルです。(石狩(北海道)も選択可)


root権限ありで ¥685 / 月 ~ と非常にリーズナブルな CPU 1(core)の 512 プランから、 最高 CPU 10(core), メモリ 32(GB), SSD容量 800(GB) までとプランが充実。
ディスクは、SSDとHDDの選択が可能になった他、データセンターは人気の東京、石狩(北海道)となりました。

また、どのプランでも好きなOSが選べます
( CentOS, Fedora, Scientific Linux, FreeBSD, Ubutu, Debian )

管理人もおすすめのVPSです。
試用期間がありますから、一度、お試しを!!

詳しくは、http://vps.sakura.ad.jp/さくらのVPSのサイトへ へどうぞ!!

カテゴリ


Serverman@VPS 完全1ヶ月無料 キャンペーン実施中です。


Serverman@VPS 完全1ヶ月無料 キャンペーン実施中です。
最近、スワップにも対応した Serverman@VPS は、かなりリーズナブルかもです。

  • メモリ1GB~2GBのEntryプラン :月額:490円
  • メモリ2MB~4GBのStandardプラン :月額:980円
  • メモリ4GB~8GBのProプラン :月額:1,980円

新規申し込みで1ヶ月間完全無料となるキャンペーンを実施中です。
Serverman@VPSの特徴は、安さとIPv6対応です。また、初期設定費0円もポイントです。

IPv6でちょっと遊んでみたい方には、おすすめかもしれませんね。最低利用期間もありませんから、気に入らないときは即解約もできます。

Serverman@VPSの詳細については、 http://dream.jp/vps/ Serverman@VPSのサイトへへどうぞ。



KVM採用 ConoHa VPSは、時間単位で借りれる便利なVPSです。


ConoHa VPS は、初期設定費0円最低利用期間無し時間単位で清算可能、 さらに、Web APIを使って自動化を図ることもできる便利なVPSです。

海外サーバー設置も可能で、ローカル接続にも対応と、かなり、機能豊富なサーバーです。

新規ユーザ登録で、クーポンもらえますから、まずは、お試しですね。

ConoHa VPSの詳細については、
http://www.conoha.jp/ へどうぞ。

KVM採用 お名前.com VPS(KVM) 2G プラン 初期設定費無料 キャンペーン 実施です。


メモリ2GBプラン CPU:3core、Disk:200GB
月額:1,153円から (初期設定:1,680円0円)

さくらのVPSがリニューアルされてもなんのその。
1GBメモリ / 2Core を ¥834 – の格安価格で提供中です!
間違いなくスペックからすると割安感ありです。
年間割引時の途中解約で返金がないのは、 ちょっと残念ですが、それでもこの割安感は魅力です。

まずは、お試しですね。

お名前.com VPS(KVM)の詳細については、
http://www.onamae-server.com/vps/ へどうぞ。(お試し期間が15日あります。)



  • ソーシャルブックマーク

  • はてなブックマークへ追加するはてな登録数
ページトップへ
Time : 0.2370 [s]