- 締切済み
OpenVPNで接続時にコマンドを実行する方法
OpenVPNを使って、インターネット経由で会社のネットワークに外部から接続しています。 OpenVPNクライアント機はWindows7Proで、OpenVPNサーバー機は(未だに)XpProです。 会社には複数の異なるネットワークのセグメントにアクセスする必要から、接続のたびに「route add <a.b.c.0> mask 255.255.255.0 <gateway>」コマンドを幾つか打ち込み、切断のたびに「route delete <a.b.c.0>」コマンドを幾つか打ち込んでおり、毎回なので手間を感じています。 1.OpenVPNクライアントが接続するときや切断するときに、これらを自動的に実行することは可能でしょうか? 2.OpenVPNクライアントの接続、或いは切断を、ショートカットのようなクリックで実行することは可能でしょうか? 3.OSが起動する時点で、自動的にOpenVPNクライアントも接続することは可能でしょうか? 4.外部からの応答速度を改善するには、VPNのサーバースペックを上げると、改善するものでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- anmochi
- ベストアンサー率65% (1332/2045)
1. > たぶん前提として、OpenVPNサーバー機がゲートウェイになっていることだと思いますが、 > サーバー機側ネットワークのゲートウェイは、会社のL3スイッチのIPになっています。 > route.add a.b.c.0 mask 255.255.255.0 <会社のゲートウェイIP> うーん、OpenVPNで接続した「後で」このrouteコマンドを打つのであれば、 OpenVPNで接続した状態でOpenVPNクライアントとL3スイッチは同じネットワークセグメントだという事だよね? ちょっとネットワークトポロジーがどうなっているか分からないのだが、OpenVPNサーバーはブリッジモードで動いている? それなら確かに接続語にL3スイッチに向けてroute addしてもいいんだけど、それを自動化できないかというのが今回の議題なのでOpenVPNサーバーがルーティングしちゃったらどうだろう。 行き(OpenVPNクライアント→a.b.c.0/24):OpenVPNクライアント→OpenVPNサーバー(a.b.c.0/24宛てなのでL3スイッチへ転送)→L3スイッチ→a.b.c.0/24 帰り(a.b.c.0/24→OpenVPNクライアント):a.b.c.0/24→L3スイッチ(同じセグメント宛てなので直接OpenVPNクライアントへ)→OpenVPNクライアント OpenVPNサーバーにルーティングを許可する設定+ルーティングテーブルを設定すると上記のパケット転送で全てうまくいくと思う。 この方法が使えない場合はやはりクライアント側で接続→route addを行うようなバッチを組むしか無いかなぁ。 2. 3. > これまでは、普通にインストールすると、OpenVPN Serviceサービスが追加され、 > スタートアップの種類は「手動」になっています。 > デスクトップにできた「OpenVPN GUI」を実行し、 > トレイの中の「OpenVPN GUI」を右クリックして「Connect」で、 > 初めて接続されます。切断時は「Disconnect」しています。 > これら一連の動作を、アイコンで一発でできないかと考えていました。 OpenVPNサービスとOpenVPN GUIは排他使用でございます。なのでどっちかを使うともうかたっぽは使えない。 「プロセスはファイルにアクセスできません。別のプロセスが使用中です。」というメッセージがどのファイルについて怒られているのかだね。あくまで予想というかあてずっぽうなんだけどコンフィグファイルじゃなくってTAPデバイスなんじゃないかと思う。試してないので確実とは言えないけど。 4. > 現在のスペックは、CPUがcore2 6600 2.4GHz、メモリが512KBx2=1GB、NICはギガです。 > CPUをi5に変更し、メモリを4GB、OSを64ビットにしたら、今の2倍以上は期待できるものでしょうか? 現在のNICが既にギガならあまりうまみは無いかも知れませぬ。前回の通り圧縮を行っている場合はCPUの性能をあげるとそのままOpenVPN性能改善になるでしょう。2倍かどうかは・・・・不明。 > ただXpの64ビット版は持っておらず、Win7の64ビットなら持ち合わせています。 う~ん・・・・前回の回答ではぼかしたんだけど、Windows XP、Vista、7は「Microsoftとあなたの間で締結されるライセンス契約の条項上」OpenVPNサーバーとして使う事は許諾されない。 会社で社員向けのOpenVPNサーバーとして使うコンピューターでWindowsを使用する場合はWindows Serverを使用しなくてはいけないんだ。もちろん接続するクライアント数に応じてCALも要ります。既に社内で1台以上のWindows Server、社員全員分のCALがある場合は今回かかる費用は社内で導入済みと同じバージョンのWindows Serverライセンス一つだけになるが、そうでなければちょっと詳しい業者に相談した方が良いかも知れない。 仕切りなおしてこれからの方向性を決めましょう。 ・社外でノートパソコンを立ち上げた時に自動でOpenVPNクライアントを起動するのはマストか。それともアイコンダブルクリックで接続・ルーティング設定まで実現できたらそれでも良いあるいはそちらの方が良いのか。 →自動の場合は他のプロセスが使用中~というのをなんとか撃破せねばならん。後、OpenVPNサーバー側でルーティングを何とかする必要があるでしょう。あるいは社員のノートパソコンにルーティング情報を入れっぱなしでいいならroute /p addを使って永続的にルーティングテーブルを書いておけば解決するかも知れません。 →手動の場合はopenvpn.exeを直接起動してもいいし多分やり方はいくつかあると思う。
- anmochi
- ベストアンサー率65% (1332/2045)
1.できるよ。 OpenVPNサーバー機のコンフィグに push "route a.b.c.0 255.255.255.0" という行を追加してみよう。OpenVPNクライアントは接続時に自動的にこのルーティングを受け取り、切断時に自動的にこのルーティングを消すはずだ。複数必要なら以下のように複数行書く。 push "route a.b.c.0 255.255.255.0" push "route a.b.d.0 255.255.255.0" 2.できるよ。 Windowsであれば色々やり方はある。一番簡単なのは公式からダウンロードできるインストーラーを使うとOpenVPNServiceというサービスでOpenVPNを起動できるようになるのでC:\Program Files\OpenVPN (x86)\configの中にクライアント側のコンフィグを入れて管理者のコマンドプロンプトで C:\> net start openvpnservice するとコマンドラインから起動できる。これ以外でもコマンド起動できる方法はあるけど説明が面倒くさいので割愛。次の3との絡みでもこのサービス起動が一番都合がいいので。 3.できるよ。 前述の2の通り、OpenVPNクライアントはWindowsサービスで実行する事ができる。 C:\Program Files (x86)\OpenVPN\configの中にクライアント側のコンフィグを入れてサービス設定からOpenVPN Serviceを自動にしてからパソコンを起動するとログオンしなくてもOpenVPNにつながる。ただし、パソコンを起動した時に(物理的な有線/無線LANがつながってなくて)OpenVPN接続に失敗すると1回であきらめてしまうので注意。 4.改善が期待できるよ。 今のOpenVPNサーバー機がCore 2 DuoとかPentium4とかだったらそれを第3世代Core i5辺りにすると応答性能は2倍くらいになると思われる。もしLZOというのをオンにしていたならば劇的に改善されるだろう(LZOはCPUめっちゃ食うので)。既に第5世代が出ているこのご時勢になぜ第3世代かと言うと、第5世代が出ているおかげでそのくらいの時期の(中古)パソコンがめっちゃ安くなっているからとスペック的にもまぁ最低そのくらいあれば大丈夫かなと。OpenVPNはハードウェアリソースとしてCPU、メモリ、ネット、ディスクのうちCPUとネットを主に使うので、ネットの強化のために良いNIC(ハードウェアで処理できるような奴がベストだけどギガビットNICならまぁ良いのでは)、圧縮(LZO)を使うならCPUも強化、という作戦で行くといいと思いますです。 可能であれば第3世代程度以降のインテルCPU、100GBのHDD、4~8GBのメモリ、ギガビットのNIC(出来れば インターネット-(NIC1)OpenVPNサーバー機(NIC2)-LAN という風に内側と外側にNICをつけるのがベスト)くらいとCentOS 6.6 x86_64でOpenVPNサーバー機を構成するといい。主にXPのライセンス的な関係。
補足
anmochi 様 ご丁寧な説明に感謝します。 1.について >OpenVPNサーバー機のコンフィグに >push "route a.b.c.0 255.255.255.0" 結論からいうとできませんでした。 クライアント機のログを見ると、次の箇所を見つけました。 ----------------------------------------------------- route.exe ADD a.b.c.0 MASK 255.255.255.0 <OpenVPNサーバー機のIP> ----------------------------------------------------- たぶん前提として、OpenVPNサーバー機がゲートウェイになっていることだと思いますが、サーバー機側ネットワークのゲートウェイは、会社のL3スイッチのIPになっています。 このため、これまでは接続するたびに、次のようなコマンドを打っていました。 ----------------------------------------------------- route.add a.b.c.0 mask 255.255.255.0 <会社のゲートウェイIP> ----------------------------------------------------- 接続時に、クライアント機が自動でrouteコマンドを打っているのだから、ここに便乗できないものかと考えていました。 補足すると、NICは1枚です。 外側と内側の接続は、別のルータでルーティングしておりまして、ルータのWAN側がインターネット、LAN側が社内のLAN、WANに届く特定のUDPポートをOpenVPNサーバー機にNATしています。 2.について >C:\> net start openvpnservice こちらもできませんでした。 コマンドを実行すると、次のようなメッセージになります。 ----------------------------------------------------- C:\Users\necca>net start openvpnservice OpenVPN Service サービスを開始します. OpenVPN Service サービスを開始できませんでした。 システム エラーが発生しました。 システム エラー 32 が発生しました。 プロセスはファイルにアクセスできません。別のプロセスが使用中です。 ----------------------------------------------------- これまでは、普通にインストールすると、OpenVPN Serviceサービスが追加され、スタートアップの種類は「手動」になっています。 デスクトップにできた「OpenVPN GUI」を実行し、トレイの中の「OpenVPN GUI」を右クリックして「Connect」で、初めて接続されます。切断時は「Disconnect」しています。 これら一連の動作を、アイコンで一発でできないかと考えていました。 3.について こちらは試せていません。 2.ができないので、たぶん3.もできないかなと。 4.について 現在のスペックは、CPUがcore2 6600 2.4GHz、メモリが512KBx2=1GB、NICはギガです。 CPUをi5に変更し、メモリを4GB、OSを64ビットにしたら、今の2倍以上は期待できるものでしょうか? ただXpの64ビット版は持っておらず、Win7の64ビットなら持ち合わせています。