سؤال

نحن نراقب إحصائيات الاستخدام لواجهة الشبكة باستخدام NetworkInterface.getipv4statistics () في .NET 2.0. هذا لا يبلغ إبلاغ الإحصاءات الصحيحة بالاتصالات التي يتم فيها نفق حركة مرور VPN. بدلا من ذلك - في حالة عميل Cisco 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"]);
    }
}

نصائح أخرى

إليك برنامج مكتوب في دلفي (مع المصدر الكامل والشرح) من شأنها أن تساعدك على جمع معلومات الشبكة، بما في ذلك بيانات VPN. هذا يستخدم مكونات Indy مفتوحة المصدر, ، والتي تتوفر أيضا للاستخدام مع C #.

أقترح التصفح من خلال المصدر، وستجد مكالمات Windows API بالضبط يجعلها. يعتمد بشدة على API مساعد IP (iphlpapi.).

إذا كنت تبحث عن أمثلة C # فقط، أقترح القيام ببعض Google-ING ل "C # و IPHLPAPI".

يعتبر

نص Alt http://z.about.com/d/delphi/1/0/k/2/112903_2.gif.

سيتعين علي التحقق عند العمل لمعرفة ما يشبه التكوين.

الشيء الوحيد الذي يفعله Cisco VPN، إذا تم تكوينه، وتعطيل تقسيم الأنفاق. ما يعنيه ذلك هو أنك منعك من الوصول إلى الشبكة الفرعية المحلية الخاصة بك على الاتصال المتصل ب VPN.

الطريقة التي يمكنني رؤيتها، هي عند تكوين اتصال Ethernet الخاص بي مع عنوان IP، ولكن ليس لديك بوابة افتراضية.

ارتباط أنك تحدد اتصال VPN، أن الاتصال أقل بوابة سيكون اتصالك الآخر.

أيضا، نظرت إلى أي فصول WMI. قد يتفاعل Cisco VPN مع فئة WMI ربما.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top