Как узнать, когда сетевой интерфейс использует маршрутизатор в качестве DNS-сервера в C #?

2

Итак, мы все знаем команду cmd "ipconfig/all". Например, у нас есть сетевой интерфейс Wi-Fi. DHCP включен, а DNS-сервер является нашим собственным маршрутизатором. Как я могу узнать, использует ли сетевой интерфейс маршрутизатор в качестве DNS-сервера в С#? В коде я могу получить IP-адреса DNS-сервера и другую информацию, но возможно ли узнать, является ли маршрутизатор DNS-сервером?

Класс по умолчанию NetworkInterface вероятно, не скажет мне этого... Но, может быть, есть какой-то алгоритм для определения этого?

  • 0
    Смотрите следующий codeproject: codeproject.com/Questions/370616/…
  • 0
    Это не то, что я спрашиваю.
Показать ещё 10 комментариев
Теги:
dns
router

1 ответ

0

Класс NetworkInterface предоставляет много данных, таких как интерфейсный шлюз и IP-адрес сервера DNS. Просто нужно проверить gateway ip == dns ip. Для каждого интерфейса может быть несколько шлюзов и днс, поэтому вам нужно найти какое-то правило самостоятельно. Там моя наивная реализация, основанная на этом qaru.site/questions/513370/...:

NetworkInterface[] networkInterfaces = NetworkInterface.GetAllNetworkInterfaces();

foreach (NetworkInterface networkInterface in networkInterfaces)
{
    if (networkInterface.OperationalStatus == OperationalStatus.Up && networkInterface.NetworkInterfaceType != NetworkInterfaceType.Loopback)
    {
        IPInterfaceProperties ipProperties = networkInterface.GetIPProperties();

        var gateways = ipProperties.GatewayAddresses.Select(ga => ga.Address);
        var dns = ipProperties.DnsAddresses;

        if (dns.Any(d => gateways.Contains(d))){
            Console.Write("dns router found on interface " + networkInterface.Name);
        }
    }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню