Domanda

Stiamo monitorando statistiche di utilizzo di un'interfaccia di rete utilizzando NetworkInterface.GetIPv4Statistics () in .NET 2.0. Questo non sta riportando le statistiche corrette per le connessioni in cui viene tunneling traffico VPN. Invece - nel caso del client VPN Cisco -. L'utilizzo è solo attribuita a una nuova interfaccia di rete che sembra proprio come una connessione Ethernet

Windows stesso (Vista, almeno) aggiunge le statistiche VPN all'interfaccia fisica reale in modo corretto, in modo da visualizzare la finestra di 'Stato' per la connessione originale mostra il conteggio dei byte corretti. Tuttavia, i risultati della chiamata in .NET non si fondono insieme il traffico.

C'è un modo per associare la connessione VPN torna alla connessione di rete su cui è in fase di tunnel? In mancanza di questo, qualcuno sa che API viene utilizzato dalla finestra di dialogo di stato per recuperare le statistiche corrette?

Al momento stiamo avendo per rilevare manualmente le connessioni che sembrano come se fossero le VPN e aggiungere il loro uso a qualunque altra connessione è attiva, e questo non sembrare una soluzione robusta.

È stato utile?

Soluzione 3

Come suggerisce Rob, la risposta si trova all'interno di WMI. Win32_PerfFormattedData_RemoteAccess_RasPort sembra essere esattamente ciò che Windows stesso utilizza - i numeri sono gli stessi, byte per byte, se il VPN è o no

.

ho provato con:

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"]);
    }
}

Altri suggerimenti

Ecco un programma scritto in Delphi (con sorgente completo e spiegazione) che vi aiuterà a raccogliere informazioni di rete, inclusi i dati VPN. Questo utilizza il open-source componenti Indy , che è disponibile per uso anche con C #.

Io suggerirei di navigazione attraverso la fonte, e troverete l'esatto API di Windows chiama fa. Esso si basa fortemente sulle API Helper IP ( Iphlpapi ).

Se siete alla ricerca di C # solo esempi, io suggerirei di fare un po 'di google-ing per "C # e Iphlpapi".

Saluti

alt text http: //z.about com / d / delphi / 1/0 / k / 2 / 112903_2.gif

dovrò controllare quando ho potuto lavorare per vedere quello che il mio config assomiglia.

Una cosa che Cisco VPN fa è, se configurato, disabilitando split tunneling. Ciò significa che si è impedito di accedere alla vostra sottorete locale sulla connessione che è collegato al VPN.

Il modo in cui posso vedere questo, è quando la mia connessione Ethernet è configurato con un indirizzo IP, ma non ha un gateway predefinito.

Supponendo che si identifica la connessione VPN, che connessione gateway-meno sarebbe la vostra altro collegamento.

Inoltre, avete guardato in tutte le classi WMI. Cisco VPN può interagire con una classe WMI forse.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top