Сети ЭВМ. Лаб. работа 10

advertisement
Сети ЭВМ и телекоммуникации
v 0.2
ЛАБОРАТОРНАЯ РАБОТА №10
Сетевая маршрутизация.
Настройка простейшего маршрутизатора на базе
Windows 2003 Server
Цель работы
1. Выяснить назначение маршрутизации пакетов и задачи
маршрутизаторов.
2. Знать принципы маршрутизации пакетов в сети TCP/IP.
3. Уметь анализировать таблицы маршрутизации.
4. Научиться настраивать маршрутизатор на базе Windows 2003
Server.
Введение
Когда машине требуется послать IP-пакет на какой-нибудь IPадрес, она должна принять решение, какое сетевое подключение
использовать (ведь сетевых интерфейсов в общем случае может быть
более одного), а также слать пакет напрямую или через
маршрутизатор. Для решения подобной задачи предусмотрена
таблица маршрутизации. Таблица маршрутизации имеется на каждом
компьютере, подключенном к сети, в том числе и на рабочей станции.
Для объединения независимых сетей в единую систему, для
возможности передачи пакетов от одного узла к другому в такой
сложно сетевой структуре служат маршрутизаторы. В частности,
маршрутизаторы являются основой и связующим звеном
сети Internet.
Данную лабораторную работу мы посвятим изучению
принципов маршрутизации пакетов и алгоритмам работы
маршрутизаторов. А также научимся настраивать простейший
маршрутизатор для объединения нескольких локальный подсетей.
Таблица маршрутизации
Таблица маршрутизации – это набор правил, на основании
которых принимается решение о том как отправлять IP пакет на
заданный узел.
1
Сети ЭВМ и телекоммуникации
v 0.2
Для того чтобы посмотреть таблицу маршрутизации можно
вызвать команду route print. На рис. 1. представлена таблица
маршрутизации для рабочей станции с одним сетевым интерфейсом и
адресом 192.168.198.5.
Рис. 1. Пример простой таблицы маршрутизации
Таблица маршрутизации состоит из набора записей –
маршрутов. Каждая запись состоит из следующих обязательных
полей (в скобках указано поля в соответствии с рис.1):
1. IP адрес сети назначения («Сетевой адрес»).
2. Маска сети назначения («Маска сети»).
3. Шлюз
(Gateway),
он
же
маршрутизатор
(router)
(«Адрес шлюза»).
4. Используемое сетевое подключение («Интерфейс»).
Дополнительным часто используемым полем является поле
стоимости маршрута («метрика»).
Как же работает таблица маршрутизации?
Пусть у нас IP адрес назначения из пакета будет обозначаться
как IP_Dest, маска сети в таблице маршрутизации – MASK_Dest, а
IP_Dest_Table – адрес сети назначения.
При отправке пакета строки таблицы просматриваются по
очереди. Как только выполняется условие:
IP_Dest & MASK_Dest == IP_Dest_Table,
просмотр прекращается, и пакет отправляется с помощью
указанного подключения через указанный шлюз – если указан шлюз,
2
Сети ЭВМ и телекоммуникации
v 0.2
или напрямую если шлюза совпадает с сетевым интерфейсом. Если
же условие выполняется для нескольких записей одновременно,
выбирается запись с наименьшей стоимостью (метрикой).
Если подходящая строка так и не найдена, то пакет
выбрасывается.
Очень часто присутствует правило по умолчанию с IP и маской
0.0.0.0, что соответствует маршруту по умолчанию, со шлюзом по
умолчанию, который прописывается в настройках подключения.
Данная запись анализируется последней и, если ни одно из условий
для отправки пакета не подходит, то применяется правило данной
записи, т.к. условие IP_Dest & 0 == 0 выполняется для всех адресов
назначения.
Например, в соответствии с таблицей на рис. 1. при посылке
пакета на адрес 192.168.198.30 для маршрутизации будет выбрана
3-я запись, и он будет отправлен непосредственно в сеть с
интерфейса 192.168.198.5. При отправке пакета, например, на адрес
213.180.204.8, сработает правило из 1-й строки таблицы, поэтому
данный пакет будет отправлен с интерфейса 192.168.198.5 на
маршрутизатор 192.168.198.253, который является маршрутизатором
по умолчанию.
Записи в таблице маршрутизации можно добавлять и удалять.
Для этого можно воспользоваться командами: route add и route del
соответственно. Например, для того, чтобы для упомянутый выше
компьютер имел доступ к сети 10.0.0.0/8 («/8» – количество бит,
установленных в единицу в маске подсети; в данном случае маска
подсети 255.0.0.0) через отдельный маршрутизатор 192.168.198.1
нужно выполнить команду:
route add 10.0.0.0 mask 255.0.0.0 192.168.198.1.
Маршрутизаторы и протоколы маршрутиза ции.
Маршрутизатор или роутер (Router) – это сетевое устройство,
используемое в компьютерных сетях передачи данных, которое, на
основании информации о топологии сети (таблицы маршрутизации) и
определённых правил, принимает решения о пересылке пакетов
сетевого уровня модели OSI их получателю. Маршрутизаторы часто
применяются для связи нескольких сегментов сети. На рис. 2.
приведен пример, где маршрутизатор с 3-мя интерфейсами
объединяет воедино 3 подсети.
3
Сети ЭВМ и телекоммуникации
v 0.2
Принцип работы маршрутизатора
Основная функция маршрутизатора – чтение заголовков пакетов
сетевых протоколов, принимаемых и буферизуемых по каждому
порту (например, IP), и принятие решения о дальнейшем маршруте
следования пакета.
Маршрутизатор использует таблицу маршрутизации и адрес
получателя, который находится в пакетах данных, для дальнейшей
передачи данных. Выделяя эту информацию, он определяет по
таблице маршрутизации путь, по которому следует передать данные
и направляет пакет по этому маршруту. Если в таблице
маршрутизации для адреса нет описанного маршрута, пакет
отбрасывается.
Рис. 2. Пример сети с маршрутизатором
Существуют другие способы определения маршрута пересылки
пакетов, когда, например, используется адрес отправителя,
используемые протоколы верхних уровней и другая информация,
содержащаяся в заголовках пакетов сетевого уровня. Нередко
маршрутизаторы
могут
осуществлять
трансляцию
адресов
отправителя и получателя (NAT, Network Address Translation),
4
Сети ЭВМ и телекоммуникации
v 0.2
фильтрацию транзитного потока данных на основе определённых
правил с целью ограничения доступа, шифрование/дешифрование
передаваемых данных и т.д.
Маршрутизаторы помогают уменьшить загрузку сети, благодаря
её разделению на домены коллизий и широковещательные домены, а
также фильтрации пакетов. В основном их применяют для
объединения сетей разных типов, зачастую несовместимых по
архитектуре и протоколам, например для объединения локальных
сетей Ethernet и WAN-соединений, использующих протоколы DSL,
PPP, ATM, Frame relay и т. д. Нередко маршрутизатор используется
для обеспечения доступа из локальной сети в глобальную сеть
Интернет, осуществляя функции трансляции адресов и межсетевого
экрана.
В идеальном случае маршрутизатор – это специальный
многопортовый компьютер выполняющий маршрутизацию данных.
Примерами подобных устройств являются маршрутизаторы фирм
Cisco, 3Com, HP и др. Но в большинстве случаев маршрутизатор
может быть организован на базе универсального PC компьютера
(если не требуется наличие большого количества портов).
Настройка маршрутизатора – это в первую очередь настройка
таблицы маршрутизации. Вот три наиболее распространенных
варианта настройки маршрутизатора:
Примитивная
маршрутизация.
Сеть,
полностью
изолированная от всех других сетей TCP/IP, требует лишь
примитивной маршрутизации. Простейшая таблица маршрутизации
обычно создается при настройке сетевых интерфейсов: на каждый из
интерфейсов добавляется по одному маршруту. Если отсутствует
прямой доступ к другим сетям и разделение на подсети, других
таблиц маршрутизации может не потребоваться.
Статическая маршрутизация. В сети с ограниченным числом
шлюзов в другие сети TCP/IP имеет смысл применять статическую
маршрутизацию. Для сети с единственным шлюзом статическая
маршрутизация – идеальный выбор. Статическая таблица
маршрутизации создается вручную администратором (можно
использовать команду route). Статическая таблица маршрутизации не
способна реагировать на изменения в сети, поэтому она оптимальная
для случаев, когда маршруты постоянны.
5
Сети ЭВМ и телекоммуникации
v 0.2
Динамическая маршрутизация. В крупных сетях, где
существует несколько путей к одному пункту назначения (более),
следует применять динамическую маршрутизацию. Динамическая
таблица маршрутизации создается на основе сведений, которыми
обмениваются протоколы маршрутизации (RIP, OSPF, EIGRP, IS-IS,
BGP, HSRP и др.). Задача этих протоколов – распространение
информации, позволяющей автоматически настраивать маршруты в
случает изменения сети. Протоколы маршрутизации справляются со
сложными задачами быстрее и точнее, чем при всем желании
способен
сделать
системный
администратор.
Протоколы
маршрутизации позволяют не только переключаться на резервный
маршрут, если становится непроходимым основной, но также
выбирать «лучший» маршрут из нескольких доступных. Протоколы
маршрутизации следует применять во всех сетях, где существуют
альтернативные маршруты.
В независимости от того, создаются ли маршруты вручную
системным администратором
или динамически – протоколами
маршрутизации, они, в конечном итоге, оказываются в таблице
маршрутизации.
Протоколы маршрутизации
Как уже было сказано, задача маршрутизации решается на
основе анализа таблиц маршрутизации, размещенных во всех
маршрутизаторах и конечных узлах сети. Уже было упомянуто о том,
каким образом могут формироваться эти таблицы. Рассмотрим
ситуацию динамического (автоматического) построения таблиц
маршрутизации.
Для автоматического построения таблиц маршрутизации
маршрутизаторы обмениваются информацией о топологии составной
сети в соответствии со специальным служебным протоколом.
Протоколы этого типа называются протоколами маршрутизации (или
маршрутизирующими протоколами). Протоколы маршрутизации
(например, RIP, OSPF, BGP) следует отличать от собственно сетевых
протоколов (например, IP). И те и другие выполняют функции
сетевого уровня модели OSI – участвуют в доставке пакетов адресату
через разнородную составную сеть. Но в то время как первые
собирают и передают по сети чисто служебную информацию, вторые
предназначены для передачи пользовательских данных, как это
6
Сети ЭВМ и телекоммуникации
v 0.2
делают протоколы канального уровня. Протоколы маршрутизации
используют сетевые протоколы как транспортное средство. При
обмене маршрутной информацией пакеты протокола маршрутизации
помещаются в поле данных пакетов сетевого уровня или даже
транспортного уровня, поэтому с точки зрения вложенности пакетов
протоколы маршрутизации формально следовало бы отнести к более
высокому уровню, чем сетевой.
Протоколы маршрутизации делятся на две базовые категории:
протоколы внутренней маршрутизации и протоколы внешней
маршрутизации. Протокол внутренней маршрутизации используется
в рамках независимой сетевой системы (автономной системы). В
пределах такой системы информация маршрутизации циркулирует на
основе протокола маршрутизации, выбранного администратором.
Все протоколы внутренней маршрутизации выполняют одни и
те же функции – определяют «лучший» маршрут в каждый пункт
назначения и распространяют информацию маршрутизации среди
систем сети. На данный момент существует несколько конкретных
реализаций протоколов, который широко используются на практике:
 Протокол маршрутной информации – RIP (Routing
Information Protocol). Удобен для небольших сетей. На
данный момент актуальна версия протокола RIP 2.
 Протокол предпочтения кратчайшего пути – OSPF (Open
Shortest Path First). Подходит для крупных сетей.
Протоколы внешней маршрутизации реализуют обмен
информацией маршрутизации между автономными системами. Такая
информация известная как информация достижимости. Информация
достижимости – это сведения о том, какие сети доступны через
конкретную
автономную
систему.
Протоколы
внешней
маршрутизации называют также протоколами внешних шлюзов.
Примерами практических реализаций таких протоколов являются:
EGP (Exterior Gateway Protocol) и BGP (Border Gateway Protocol). На
данный момент протокол BGP является «стандартным» для задач
внешней маршрутизации.
В свою очередь протоколы маршрутизации делятся на два вида,
зависящие от типов алгоритмов, на которых они основаны:
 Дистанционно-векторные протоколы, основаны на Distance
Vector Algorithm (DVA). Например, RIP, BGP, IGRP (Interior
7
Сети ЭВМ и телекоммуникации
v 0.2
Gateway Routing Protocol – лицензированный протокол Cisco
Systems);
 Протоколы состояния каналов связи, основаны на Link State
Algorithm (LSA). Например, OSPF.
За более детальной информацией по алгоритмам и протоколам
маршрутизации обращайтесь к специализированным источникам
[1, 2].
Анализ алгоритма маршрутизации IP –трафика
в сетях Ehernet
До этого мы рассмотрели принцип использования таблицы
маршрутизации в IP сетях и обобщенную модель маршрутизации
данных. Сейчас же мы рассмотрим принцип работы простейшего
маршрутизатора для маршрутизации IP-трафика в сетях Ethernet.
Что делает маршрутизатор, когда на один из его интерфейсов
приходит некоторый IP пакет:
 Если адрес назначения пакета совпадает с адресом одного из
сетевых интерфейсов маршрутизатора, то пакет никуда не
пересылается, а передается соответствующему сетевому
сервису (приложению) на дальнейшую обработку.
 В противном случае происходит анализ таблицы
маршрутизации по описанному ранее алгоритму и в случае
соответствия одного из условий, данные могут быть
отправлены на нужный сетевой интерфейс непосредственно в
заданную сеть или же «по цепочке» очередному
маршрутизатору.
При маршрутизации пакетов на сетевом уровне изменяются
некоторые поля IP заголовка:
 TTL (Time To Live) – уменьшается на единицу. Поле TTL
служит для предотвращения «блуждания» пакетов в сети.
Если значение поля TTL становится равным 0, то такой пакет
более не маршрутизируется и удаляется.
 CheckSum – пересчитывается контрольная сумма всего
IP–пакета. Контрольную сумму необходимо пересчитывать,
потому что изменяется поле TTL.
На канальном уровне у нас адресация ведется на основе MAC
адресов. При отправке пакета на маршрутизатор в качестве MAC
8
Сети ЭВМ и телекоммуникации
v 0.2
адреса назначения устанавливается MAC-адрес соответствующего
сетевого
интерфейса
маршрутизатора.
При
пересылке
маршрутизатором пакета, он изменяет MAC адреса следующим
образом:
 В качестве адреса источника устанавливает MAC
адрес
интерфейса с которого будет отправлен пакет, а в качестве
MAC адреса получателя устанавливает MAC адрес
непосредственно адресата, если адреса находится в камках
подсетей маршрутизатора, либо MAC адрес интерфейса
следующего маршрутизатора.
 При следовании пакета в обратном направлении происходит
аналогичная трансформация данных, но в обратном порядке.
Примечание. Поэтому мы и не можем узнать MAC адрес
адресата, если пакет маршрутизируется.
На рис. 3. приведена наглядная иллюстрация описанного выше
алгоритма маршрутизации. Ситуация детально представлена для
случая пересылки одного пакета с машины 192.168.50.5 на машину
192.168.200.10.
Рис. 3. Алгоритм маршрутизации IP пакет в сети
Ethernet
9
Сети ЭВМ и телекоммуникации
v 0.2
Настройка маршрутизатора на базе
Windows 2003 Server
Пусть у нас имеется сеть, соответствующая рис. 4. Наша задача
состоит в том, чтобы настроить маршрутизатор так, чтобы машины из
подсетей 192.168.198.0 и 192.168.1.0 могли беспрепятственно
взаимодействовать друг с другом.
В качестве маршрутизатора мы будем использовать компьютер
(виртуальную машину) с установленной ОС Windows 2003 Server. В
данной ОС по умолчанию имеется модуль маршрутизации.
Рис. 4. Две подсети, объединенные маршрутизатором
Для начала убедимся, что сетевые интерфейсы нашего будущего
маршрутизатора
настроены
корректно.
Для
ситуации,
представленной на рис. 4, параметры должны быть как на рис. 5
(запись о маршрутизаторе по умолчанию для интерфейса
192.168.1.253 не обязательна).
Рис. 5. Настройки интерфейсов сервера маршрутизации
10
Сети ЭВМ и телекоммуникации
v 0.2
Теперь для запуска настройки маршрутизации необходимо
запустить оснастку «Start->Programs->Administrative Tools->Routing
and Remote Access». При первом запуске данной оснастки надо будет
выбрать пункт «Custom Configuration» (см. рис. 6). Модуль «Routing
and Remote Access» помимо «простой» маршрутизации реализует
множество дополнительных функций. Но на данный момент нам
необходима возможность «Lan Routing» (см. рис. 7).
Рис. 6. Первый запуск конфигуратора маршрутизации
На рис. 8-10 показана настройка маршрутизатора. По сути,
настраивать ничего и не понадобилось. Нужные маршруты уже были
занесены в таблицу маршрутизации автоматически.
На рис. 11. представлена информация о настройке сетевого
интерфейса одной из машин. Обратите внимание, что указан
маршрутизатор по умолчанию 192.168.198.253 (в другой подсети
указываем маршрутизатор 192.168.1.253.) Далее на рис. 12 можно
увидеть таблицу маршрутизации для этой машины. На рис. 13 мы
видим результат проверки доступности самого маршрутизатора. И,
наконец, на рис. 14. виден результат проверки маршрута от машины
192.168.198.5 до машины 192.168.1.2. Маршрутизация работает! Что
нас и интересовало.
11
Сети ЭВМ и телекоммуникации
v 0.2
Рис. 7. Выбор модуля маршрутизации
Рис. 8. Оснастка настройки маршрутизации
12
Сети ЭВМ и телекоммуникации
v 0.2
Рис. 9. Просмотр текущей таблицы маршрутизации
Рис. 10. Текущая таблица маршрутизации
Рис. 11. Настройка сетевого интерфейса одной
из клиентских машин
13
Сети ЭВМ и телекоммуникации
v 0.2
Рис. 12. Таблица маршрутизации машины 192.168.198.5
Рис. 13. Доступен ли маршрутизатор 192.168.198.253?
Рис. 14. Проверка работы маршрутизации пакетов
14
Сети ЭВМ и телекоммуникации
v 0.2
Контрольные вопросы
Что такое сетевая маршрутизация для чего она применяется?
Что такое таблица маршрутизации?
Объясните принцип использования таблицы маршрутизации?
На каком уровне модели OSI/ISO выполняется маршрутизация
пакетов?
5. Кратко объясните принцип работы маршрутизатора.
6. В чем отличие статической маршрутизации от динамической?
7. Каково основное назначение протоколов маршрутизации?
1.
2.
3.
4.
Задание на лабораторную работу
1. Написать
консольную
утилиту
для
анализа
таблицы
маршрутизации. Программа должна по заданному в командной
строке IP-адресу выводить информацию о направлении отправки
пакета. Основную информацию по работе с таблицей
маршрутизации см. в приложении.
2. Организовать 2 подсети аналогично рис. 4. в качестве
маршрутизатора использовать виртуальную машину с ОС Windows
2003 Server с 2-мя виртуальными сетевыми интерфейсами. В
качестве клиентских машин рекомендуется использовать
виртуальные машины на базе Windows 2000.
3. Настроить модуль маршрутизации таким образом, чтобы машины
из разных подсетей могли взаимодействовать друг с другом.
4. Проверить работу сети при помощи утилиты ping.
5. Протрассировать при помощи утилиты tracert путь от машины из
одной подсети в другую.
6. При помощи сниффера, установленного на маршрутизаторе,
проанализировать и зафиксировать изменения в пакете при
прохождении через маршрутизатор.
7. Сделать выводы. Подготовить отчет.
Список рекомендуемой литературы
1. Олифер В.Г., Олифер. Н.А. Компьютерные сети – электронное
издание можно найти на кафедральном сервере http://linux
2. Хелби. С., Принципы маршрутизации в Internet – электронное
издание можно найти на кафедральном сервере http://linux
15
Сети ЭВМ и телекоммуникации
v 0.2
ПРИЛОЖЕНИЕ
Работа с таблицей маршрутизации.
Ниже представлена информация, необходима для работы с таблицей
маршрутизации протокола IP v.4 в ОС Windows NT+.
Необходимые заголовочные файлы:
#include <Iphlpapi.h>
Необходимая библиотека (нужно подключить в проект):
Iphlpapi.lib (iphlpapi.dll)
Структура, описывающая таблицу маршрутизации:
typedef struct _MIB_IPFORWARDTABLE
{
DWORD
dwNumEntries;
// Количество записей
MIB_IPFORWARDROW
table[ANY_SIZE];
// Записи таблицы
}MIB_IPFORWARDTABLE, *PMIB_IPFORWARDTABLE;
Структура, описывающая одну запись таблицы маршрутизации
typedef struct _MIB_IPFORWARDROW
{
DWORD
dwForwardDest;
//
DWORD
dwForwardMask;
//
DWORD
dwForwardPolicy;
//
DWORD
dwForwardNextHop;
//
DWORD
dwForwardIfIndex;
//
DWORD
dwForwardType;
//
DWORD
dwForwardProto;
//
DWORD
dwForwardAge;
//
DWORD
dwForwardNextHopAS; //
DWORD
dwForwardMetric1;
//
DWORD
dwForwardMetric2;
DWORD
dwForwardMetric3;
DWORD
dwForwardMetric4;
DWORD
dwForwardMetric5;
}MIB_IPFORWARDROW, *PMIB_IPFORWARDROW;
Целевой адрес
Маска
Адрес маршрутизатора
Индекс сетевого интерфейса
Значение метрики записи
Пример функции для получения таблицы маршрутизации
BOOL GetForwardTable(PMIB_IPFORWARDTABLE* ppIpForwardTable)
{
if (ppIpForwardTable == NULL) return FALSE;
DWORD dwSize = 0;
BOOL bOrder = FALSE;
DWORD dwStatus = 0;
// Find out how big our buffer needs to be.
dwStatus = GetIpForwardTable(NULL, &dwSize, bOrder);
16
Сети ЭВМ и телекоммуникации
v 0.2
if (dwStatus == ERROR_INSUFFICIENT_BUFFER)
{
// Allocate the memory for the table
*ppIpForwardTable = (PMIB_IPFORWARDTABLE)malloc(dwSize);
if (*ppIpForwardTable == NULL) return FALSE;
}
// Now get the table.
dwStatus = GetIpForwardTable(*ppIpForwardTable, &dwSize,
bOrder);
return (dwStatus == NO_ERROR) ? TRUE : FALSE;
}
Принцип работы с таблицей маршрутизации:
// Получаем заполненную текущую таблицу маршрутизации
PMIB_IPFORWARDTABLE pFT = NULL;
BOOL bResult = GetForwardTable(&pFT);
if (!bResult)
{
printf(“Error!!!”)
exit (-1);
}
// Анализируем таблицу
for (DWORD i=0; i < pIpForwardTable->dwNumEntries; i++)
{
// Обрабатываем каждую запись таблицы
// pIpForwardTable->table[i]
// …
}
// Освобождаем выделенную память
free(pFT);
Для
интерпретации
номера
сетевого
интерфейса
(поле
dwForwardIfIndex) можно использовать следующую функцию:
BOOL GetInterfaceByIndex(ULONG nIfIndex,
TCHAR* sName,
ULONG nBufferSize)
{
if (sName == NULL) return FALSE;
PIP_ADAPTER_INFO pPtr = NULL, pSource = NULL;
ULONG nSize = 0;
DWORD nResult = GetAdaptersInfo(NULL, &nSize);
if (nResult != 0)
{
pPtr = (PIP_ADAPTER_INFO)malloc(nSize);
nResult = GetAdaptersInfo(pPtr, &nSize);
if (nResult != 0)
{
free(pPtr);
17
Сети ЭВМ и телекоммуникации
v 0.2
return FALSE;
}
}
// Ищем нужный интерфейс
while (pPtr != NULL)
{
if (pPtr->Index == nIfIndex)
{
strncpy(sName, pPtr->AdapterName, nBufferSize);
break;
}
pPtr = pPtr->Next;
}
free(pSource);
return TRUE;
}
Описание структуры IP_ADAPTER_INFO:
typedef struct _IP_ADAPTER_INFO {
struct _IP_ADAPTER_INFO* Next;
DWORD ComboIndex;
char AdapterName[MAX_ADAPTER_NAME_LENGTH + 4];
char Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4];
UINT AddressLength;
BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH];
DWORD Index;
UINT Type;
UINT DhcpEnabled;
PIP_ADDR_STRING CurrentIpAddress;
IP_ADDR_STRING IpAddressList;
IP_ADDR_STRING GatewayList;
IP_ADDR_STRING DhcpServer;
BOOL HaveWins;
IP_ADDR_STRING PrimaryWinsServer;
IP_ADDR_STRING SecondaryWinsServer;
time_t LeaseObtained;
time_t LeaseExpires;
} IP_ADAPTER_INFO, *PIP_ADAPTER_INFO;
18
Download