VPNの使用状況の統計情報をキャプチャ
-
05-09-2019 - |
質問
私たちは、.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"]);
}
}
他のヒント
ここではDelphiのの中で書かれたプログラムは、完全なソースで(だとVPNデータを含む、ネットワーク情報を収集するためにあなたを助ける説明)。これはまた、使用のために利用可能である成分をオープンソースのインディを使用していますC#のでます。
私は、ソースを閲覧することをお勧めしたい、とあなたは、正確なWindowsのAPIは、それが作る呼び出しを見つけることができます。これは、IPヘルパーAPI( IPHLPAPI )。
あなたはC#だけの例を探している場合は、、私はいくつかの "C#とIPHLPAPI" のためのGoogleは、INGのことをお勧めしたい。
よろしく
ALTテキストのhttp://z.about .COM / D /デルファイ/ 1/0 / K / 2 / 112903_2.gif の
私は、私は私の設定がどのように見えるかを確認するために動作するように取得するときにチェックする必要があります。
のCisco VPNが設定されている場合は、スプリットトンネリングを無効にされてい一つのこと。何それが意味することは、あなたがVPNに接続されている接続でローカルサブネットへのアクセスを妨げているということです。
私はこれを見ることができる方法は、私のイーサネット接続にIPアドレスが設定されている場合ですが、デフォルトゲートウェイを持っていません。
あなたがVPN接続を識別したとすると、そのゲートウェイレス接続は、あなたの他の接続になります。
また、あなたはどのWMIクラスに見てきました。シスコVPNは、おそらくWMIクラスと相互作用することができる。