web-dev-qa-db-ja.com

Windows 10でVPN接続が成功した後にルートを自動的に追加する

VPN接続が成功した後、W10で自動「ルート」コマンドを実行しようとしています。私はこの短い説明に基づいて試してみました here これはW7用ですが、とても似ているようですが、動作させることができません。

  • 私のVPN接続は問題ありません。それは問題なくいつでも接続および切断します。
  • 私のルートコマンドは大丈夫です。 VPNに接続した後で手動で起動すると、すべて正常に動作します。
  • もちろん、私のVPN接続では、リモートゲートウェイをデフォルトゲートウェイとして使用していません。 「スプリットトンネリング」を行いたい。

私が調査したところ、Windowsイベント20225はW10(RAS接続確立)でも同じです。これは正しい...なぜrouteコマンドをトリガーしないのですか? VPNに接続した後、RasClientをソースとする20225イベントをアプリケーションイベントビューアで確認できます。

もちろん、このすべてを試す前に、routeコマンドで-pパラメータを使用して「永続的に」ルートを作成しようとしましたが、このルートがすべてに追加されたときにVPNインターフェイスが存在しないため、機能しませんブートなので、有効なオプションではありません。したがって、スケジュールする必要があります。

昇格された特権でタスクを実行し、同じ結果を得て、[昇格された特権で実行]チェックボックスもマークしました。タスクは「開始されていません」と表示されます。そして、手動で起動しようとすると、「タスクスケジューラサービスは利用できません。タスクスケジューラはサービスに再接続しようとします」と表示されます。しかし、タスクスケジューラは正常に機能しています。他のタスクは手動でスケジュールまたは実行でき、機能しています。

誰かがこれを成功させましたか?

[〜#〜] edit [〜#〜]「基本」を「カスタム」に変更するためにトリガー部分を変更しようとし、XPathを配置しましたイベントIDを検索するXMLフィールドのフィルター:

<QueryList>
  <Query Id="0" Path="Application">
    <Select Path="Application">*[System[(EventID=20225)]]</Select>
  </Query>
</QueryList>

どちらもうまくいきませんでした。

問題は同じです。タスクは「起動されていません」と表示されます。

EDIT2イベントビューアで、VPN接続(id 20225)が成功した後、常に関連する別のイベント(id 900)が常にあることに気付きました。 ..多分すべてが設定されていますが、何かがトリガーをブロックしています...わかりません。このスクリーンショットを参照してください(申し訳ありませんが、スクリーンショットはスペイン語です):

event

6
OscarAkaElvis

ようやくそれを機能させることができなかった...だから、悲しいことに代替案を探すことにしました。チャームのように機能するrasdialを使用してバッチファイルを作成しました。唯一の「問題」は、ルートコマンドを昇格された特権で起動する必要があることです。これは、runas/savedcred引数を付けて、パスワードを1回だけ要求し、その後自動的に機能するようにするためです。次に、vpnの場合、パスワードを(平文で!)入力するか、set mypass="*"を残して毎回パスワードを要求することができます。

これが私のコードです:

@echo off

cls
echo.

REM put your VPN connection name here
set myvpn="Your VPN name"
REM put your user here
set myuser="foo"
REM put your pass here. Leave * for asking
set mypass="testpass"
REM put your win admin user here
set winadmin="administrator"
REM put your network route here
set network="192.168.8.0"
REM put your network mask here
set mask="255.255.255.0"
REM put your gateway mask here
set gateway="192.168.1.1"

ipconfig | find /i %myvpn% > nul 2>&1

if %ERRORLEVEL% == 0 (

    echo "VPN already connected. Disconnecting..."
    echo.
    rasdial %myvpn% /disconnect
    runas.exe /user:%winadmin% /savedcred "route delete %network% mask %mask% %gateway%"

) else if %ERRORLEVEL% == 1 (

    echo "VPN not connected. Connecting..."
    echo.
    rasdial %myvpn% %myuser% %mypass%
    runas.exe /user:%winadmin% /savedcred "route add %network% mask %mask% %gateway%"
)

これが誰かのお役に立てば幸いです。

3
OscarAkaElvis

Win 10では、Powershellには、VPN接続にルートを追加し、VPNが切断されたときにルートを再度削除するコマンドレットがあります: Add-VpnConnectionRoute 。インターフェイスIDを指定しなくても機能します。

基本的な構文は次のとおりです。

Add-VpnConnectionRoute -ConnectionName "VPN接続名" -DestinationPrefix 10.0.0.0/16

このコマンドを入力すると、VPNの接続/切断時にルートが自動的に作成/削除されます。

6
Vorona