質問

私たちは、.NET 2.0でNetworkInterface.GetIPv4Statistics()を使用して、ネットワークインターフェイスの使用状況の統計を監視しています。これは、VPNトラフィックがトンネル化されている上での接続のための正しい統計を報告していません。代わりに - シスコのVPNクライアントの場合 - 使用はただ単にイーサネット接続のように見える新しいネットワークインタフェースに起因している。

Windows自体(Vistaは、少なくとも)ので、元の接続のための「ステータス」ダイアログを表示して、正しく実際の物理インターフェイスへのVPNの統計情報を追加し、正しいバイト数を示します。しかし、.NETの呼び出しの結果は、一緒にトラフィックをマージしません。

バックそれはトンネル化されています、その上のネットワーク接続へのVPN接続を関連付けする方法はありますか?その失敗、誰が正しい統計情報を取得するには、ステータスダイアログで使用されているAPIを知っていますか?

現時点では、手動で、彼らがVPNをしているように見えるの接続を検出し、他のどのような接続にその使用を追加するために抱えているアクティブであり、これは堅牢なソリューションのように見えるしていません。

役に立ちましたか?

解決 3

ロブが示すように、答えはWMI内にあります。 Win32_PerfFormattedData_RemoteAccess_RasPort のWindowsは自分自身を使用しています正確に何のようです - 数字は、VPNが起動しているかどうか、バイトで同じ、バイトです。

私がテストします:

static class Program
{
    static void Main()
    {
        var query = new WqlEventQuery("__InstanceModificationEvent", TimeSpan.FromSeconds(1),
                                      "TargetInstance ISA 'Win32_PerfFormattedData_RemoteAccess_RasPort' AND TargetInstance.BytesReceived > 0");

        var watcher = new ManagementEventWatcher(query);
        watcher.EventArrived += EventArrived;
        watcher.Start();

        Console.ReadLine();
    }

    static void EventArrived(object sender, EventArrivedEventArgs e)
    {
        var mo = e.NewEvent["TargetInstance"] as ManagementBaseObject;
        Console.WriteLine("{0:#,0}: {1:#,0} bytes sent, {2:#,0} bytes received", mo["Name"], mo["BytesTransmitted"], mo["BytesReceived"]);
    }
}

他のヒント

私は、私は私の設定がどのように見えるかを確認するために動作するように取得するときにチェックする必要があります。

のCisco VPNが設定されている場合は、スプリットトンネリングを無効にされてい一つのこと。何それが意味することは、あなたがVPNに接続されている接続でローカルサブネットへのアクセスを妨げているということです。

私はこれを見ることができる方法は、私のイーサネット接続にIPアドレスが設定されている場合ですが、デフォルトゲートウェイを持っていません。

あなたがVPN接続を識別したとすると、そのゲートウェイレス接続は、あなたの他の接続になります。

また、あなたはどのWMIクラスに見てきました。シスコVPNは、おそらくWMIクラスと相互作用することができる。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top