Трафик в сети складывается случайным образом, однако в нем отражены и некоторые закономерности. Как правило, некоторые пользователи, работающие над общей задачей (например, сотрудники одного отдела) чаще всего обращаются с запросами либо друг к другу, либо к общему серверу, и только иногда они испытывают необходимость доступа к ресурсам компьютеров другого отдела.
Желательно, чтобы структура сети соответствовала структуре информационных потоков. В зависимости от сетевого трафика компьютеры в сети могут быть разделены на группы (сегменты сети). Компьютеры объединяются в группу, если большая часть порождаемых ими сообщений адресована компьютерам этой же группы.
Для разделения сети на сегменты используются мосты и коммутаторы. Они экранируют локальный трафик внутри сегмента, не передавая за его пределы никаких кадров, кроме тех, которые адресованы компьютерам, находящимся в других сегментах. Тем самым сеть распадается на отдельные "фрагменты". Это позволяет более рационально выбирать пропускную способность имеющихся линий связи, учитывая интенсивность трафика внутри каждого сегмента, а также активность обмена данными между сегментами.
Различают мосты внутренние/внешние, выделенные/совмещенные, локальные/удаленные.
Рис.1. Пример схемы сети с использованием мостов
Коммутатор позволяет делить сеть на сегменты и предотвращать ненужный поток данных из одного сегмента в другой. Либо в случае, если идет обращение клиента из одного сегмента в другой, направлять кадры только по тем сегментам, в которых присутствуют адреса отправителя и получателя. В обычных некоммутируемых сетях каждый раз, когда какое-либо устройство начинает передавать данные, т.е. обращается к сети, другие устройства уже не могут этого сделать. Это позволяет избежать коллизий в сети. И хотя данный метод сохраняет целостность передаваемых данных, он не улучшает общую производительность сети. Коммутаторы же позволяют обращаться к сети нескольким подключенным к нему устройствам. Таким образом, увеличивается скорость работы и уменьшаются задержки.
Вообще, главное отличие коммутаторов от концентраторов заключается в том, что коммутатор при подключении к нему других устройств динамически создает таблицу из пар их аппаратных адресов и соответствующих им своих портов. Таким образом, когда коммутатор принимает кадр, он просматривает, кому этот кадр предназначается, находит в своей коммутационной таблице соответствующий аппаратный адрес и порт, к которому подключено устройство с таким адресом, и отправляет этот кадр через обнаруженный порт.
Использование коммутатора в сети позволяет сократить задержку реагирования сети, ускорить передачу файлов, уменьшить количество коллизий и других ошибок при передаче данных, существенно упростить процесс управления большой сетью. Современные коммутаторы поддерживают такие средства, как назначение приоритетов трафика (что особенно важно при передаче в сети речи или видео), функции управления сетью и управление многоадресной рассылкой.
Рис. 2. Пример схемы сети с использованием коммутаторов
Локализация трафика средствами мостов и коммутаторов имеет существенные ограничения. С одной стороны, логические сегменты сети, расположенные между мостами, недостаточно изолированы друг от друга, а именно, они не защищены от так называемых широковещательных штормов. В случае, если какая-либо станция посылает широковещательное сообщение, то это сообщение передается всем станциям всех логических сегментов сети. Защита от широковещательных штормов в сетях, построенных на основе мостов, имеет количественный, а не качественный характер: администратор просто ограничивает количество широковещательных пакетов, которое разрешается генерировать некоторому узлу.
С другой стороны, использование механизма виртуальных сегментов, реализованного в коммутаторах локальных сетей, приводит к полной локализации трафика - такие сегменты полностью изолированы друг от друга, даже в отношении широковещательных кадров. Поэтому в сетях, построенных только на мостах и коммутаторах, компьютеры, принадлежащие разным виртуальным сегментам, не образуют единой сети.
Приведенные недостатки мостов и коммутаторов связаны с тем, что они работают по протоколам канального уровня, в которых в явном виде не определяется понятие части сети (подсети), которое можно было бы использовать при структуризации большой сети.
Среди протоколов канального уровня некоторые обеспечивают доставку данных в сетях с произвольной топологией, но только между парой соседних узлов (например, протокол PPP), а некоторые - между любыми узлами (например, Ethernet), но при этом сеть должна иметь топологию определенного и весьма простого типа, например, древовидную.
При объединении в сеть нескольких сегментов с помощью мостов или коммутаторов продолжают действовать ограничения на ее топологию: в получившейся сети должны отсутствовать петли. Действительно, мост или его функциональный аналог - коммутатор - могут решать задачу доставки пакета адресату только тогда, когда между отправителем и получателем существует единственный путь. Между тем наличие избыточных связей, которые и образуют петли, часто необходимо для лучшей балансировки нагрузки, а также для повышения надежности сети за счет существования альтернативного маршрута в дополнение к основному.
Современные вычислительные сети часто строятся с использованием нескольких различных базовых технологий - Ethernet, Token Ring или FDDI. Такая неоднородность возникает либо при объединении уже существовавших ранее сетей, использующих в своих транспортных подсистемах различные протоколы канального уровня, либо при переходе к новым технологиям.
Когда две или более сетей организуют совместную транспортную службу, то такой режим взаимодействия обычно называют межсетевым взаимодействием (internetworking). Для обозначения составной сети в англоязычной литературе часто также используется термин интерсеть (internetwork или internet).
Для образования единой транспортной системы, объединяющей несколько сетей с различными принципами передачи информации между конечными узлами, служит сетевой уровень. Сетевой уровень позволяет передавать данные между любыми, произвольно связанными узлами сети. Таким образом, объединение различных компьютерных сетей основано на использовании протоколов сетевого уровня.
Протоколы канального уровня не позволяют строить сети с развитой структурой, например, сети, объединяющие несколько сетей предприятия в единую сеть, или высоконадежные сети, в которых существуют избыточные связи между узлами. Сетевой уровень вводится для того, чтобы, с одной стороны, сохранить простоту процедур передачи пакетов для типовых топологий, а с другой стороны, допустить использования произвольных топологий.
Основная идея введения сетевого уровня состоит в том, чтобы оставить технологии, используемые в объединяемых сетях, в неизменном виде, но добавить в кадры канального уровня дополнительную информацию - заголовок сетевого уровня, на основании которого можно было бы находить адресата в сети с любой базовой технологией. Заголовок пакета сетевого уровня имеет унифицированный формат, не зависящий от форматов кадров канального уровня тех сетей, которые могут входить в объединенную сеть.
Заголовок сетевого уровня должен содержать адрес назначения и другую информацию, необходимую для успешного перехода пакета из одной сети в другую сеть (см. лекцию 16). К такой информации может относиться, например:
В качестве адресов отправителя и получателя в составной сети используется не MAC-адрес, а IP-адрес, содержащий информацию о номере сети и номере компьютера в данной сети. В канальных протоколах поле "номер сети" отсутствует - предполагается, что все узлы принадлежат одной сети. Явная нумерация сетей позволяет протоколам сетевого уровня составлять точную карту межсетевых связей и выбирать рациональные маршруты при любой их топологии, используя альтернативные маршруты, если они имеются, что не умеют делать мосты.
Таким образом, внутри сети доставка сообщений регулируется канальным уровнем. А доставкой пакетов между сетями занимается сетевой уровень.
Реализация протокола сетевого уровня подразумевает наличие в сети специального устройства - маршрутизатора (см. лекцию 10). Маршрутизаторы объединяют отдельные сети в общую составную сеть. К каждому маршрутизатору могут быть присоединены несколько сетей (по крайней мере, две).
Уточним, что понимается под термином сеть в протоколах сетевого уровня:
В сложных составных сетях всегда существует несколько альтернативных маршрутов для передачи пакетов между двумя конечными узлами. Задачу выбора маршрутов из нескольких возможных решают маршрутизаторы, а также конечные узлы.
Маршрутизатор выбирает маршрут на основании своего представления о текущей конфигурации сети и соответствующего критерия выбора маршрута. Обычно в качестве критерия выступает время прохождения маршрута, которое в локальных сетях совпадает с длиной маршрута, измеряемой в количестве пройденных узлов маршрутизации (в глобальных сетях принимается в расчет и время передачи пакета по каждой линии связи).
Процесс прохождения пакетов с данными от одного компьютера до другого можно пронаблюдать с помощью программы Traceroute. Откройте во время подключения к Сети командную строку, наберите в командной строке tracert и через пробел нужный IP-адрес, нажмите Enter.
В результате вам будет выдан путь пакетов от вашего компьютера до того, IP-адрес которого вы указали в команде tracert, а также указано время (в миллисекундах), которое потребовалось пакетам для прохождения каждого отрезка пути. Практически все IP-адреса в списке пройденных пакетом узлов принадлежат встреченным на пути маршрутизаторам. Первый адрес списка принадлежит вашему компьютеру, а последний – Интернет-ресурсу, путь к которому вы решили отследить.
В служебной информации каждого пакета с данными есть параметр TTL (Time to Live - время жизни пакета, см. лекцию 16, протокол ICMP). Он показывает, сколько узлов сети Интернет этот пакет еще может пройти. На каждом из узлов, через которые следует пакет, этот параметр уменьшается на единицу, и при достижении им значения 0 пакет уничтожается. Это сделано для того, чтобы пакеты не циркулировали по замкнутым цепям. Однако, если это значение слишком мало, пакет может не успеть дойти до нужного маршрутизатора. Данный параметр можно изменить в реестре Windows.
Каждый маршрутизатор ведет свою таблицу маршрутизации , содержащей сведения о том, к каким маршрутизаторам из числа подключенных к данному маршрутизатору следует обращаться, чтобы отправить полученный пакет на тот или иной ресурс Сети с тем или иным IP-адресом, т.е. попросту говоря, на какой из подключенных к нему кабелей эти пакеты данных отправлять. Таким образом, маршрутизатор "знает", на какой порт отправить принятый пакет.
Маршрутизатор распределяет приходящие к нему пакеты данных исключительно по своим подключениям: по тем кабелям и оптоволоконным линиям, которые подсоединены к нему самому. Т.к. в памяти остальных маршрутизаторов тоже есть соответствующие таблицы маршрутизации, т. они перенаправят данные дальше, на следующий маршрутизатор. Так будет до тех пор, пока они наконец не попадут на маршрутизатор, к которому подключен компьютер с нужным IP-адресом.
Как нетрудно понять, при подключении нового маршрутизатора с новым набором IP-адресов, ранее в Сети не присутствовавших, необходимо сообщить уже имеющимся ее участникам о появившейся новой части Интернета и показать им путь к ней. Новый маршрутизатор сообщает другим маршрутизаторам о том, к каким IP-адресам он имеет прямой доступ (анонсирует себя). Те, получив эту информацию, вносят ее в свои таблицы. При поступлении к ним пакета, адресованного на эти IP-адреса, они просто его пересылают на этот новый маршрутизатор. А потом процесс повторяется, остальные маршрутизаторы тоже узнают о новых IP-адресах и помещают информацию о них в свои таблицы маршрутизации, указывая в качестве направления отправки пакетов на них тот маршрутизатор, от которого они получили информацию.
Так информация о новой части Сети постепенно расходится по маршрутизаторам. В настоящее время в сети Интернет для того, чтобы самые отдаленные ее уголки узнали о новоподключенных ресурсах, требуется 2-3 часа. В принципе, пока маршрутизатор отдельной сети, подключенной к Интернету, не получит данные о них (т.е. информацию о том, что эти ресурсы существуют, и о том, какие у них IP-адреса), с компьютеров этой сети доступ к новым ресурсам будет невозможен, несмотря на то, что физически соединение этих ресурсов с сетью Интернет уже будет реализовано.
Процесс анонсирования маршрутизаторов, т.е. оповещения своих «коллег» об IP-адресах, которыми они «заведуют», происходит не только при первом подключении маршрутизатора к Сети. Он совершается постоянно, ведь IP-адреса могут изыматься у одной сети и передаваться другой, меду маршрутизаторами может устанавливаться новое соединение для более быстрого обмена данными. Так что каждый маршрутизатор постоянно сообщает своему окружению о «подведомственной» ему «территории», а остальные отслеживают изменения этой информации.
Взаимодействие маршрутизаторов осуществляется по протоколам маршрутизации (см. лекцию 16) RIP (Routing Information Protocol) и OSPF (Open Shortest Path First).
Маршрутизаторы разных сетей соединены между собой мощными линями связи, обычно оптоволоконными. Для того чтобы более эффективно выполнять распространение данных по Интернету, существуют «маршрутизаторы маршрутизаторов», т.е. маршрутизаторы, к которым подключаются другие маршрутизаторы, а не отдельные компьютеры (в отличие от обычных маршрутизаторов их принято именовать роутерами, несмотря на то, что слово router и означает «маршрутизатор»). Образуется как бы мегасеть из серверов-маршрутизаторов отдельных сетей университетов, фирм, предприятий и провайдеров с роутером во главе. Роутеры тоже соединены между собой кабелями, образу паутинообразную структуру соединений.
Поскольку Сеть благодаря соединениям меду маршрутизаторами имеет паутинообразную структуру, очень часты случаи, когда какой-нибудь маршрутизатор получает описанным выше способом информацию о нескольких возможных путях доступа к какому-либо IP-адресу. В таком случае маршрутизатор обменивается данными с ресурсами Интернета, располагающимися по этим IP-адресам, и высчитывает, какой из обнаруженных путей наиболее быстрый и надежный. Именно такой путь и используется. Подобная проверка проводится регулярно, тем самым в зависимости от состояния Сети оптимальный путь между двумя ее ресурсами может меняться.
Большинство современных маршрутизаторов поддерживают протокол NAT (Network Address Translation), базирующийся на сеансовом уровне и по сути представляющий собой протокол трансляции сетевых адресов. NAT позволяет реализовать множественный доступ компьютеров локальной (частной) сети (каждый из которых имеет собственный внутренний IP-адрес) в Интернет, используя всего один внешний IP-адрес WAN-порта маршрутизатора. При этом все компьютеры во внутренней локальной сети становятся невидимыми извне, но для каждого из них внешняя сеть является доступной. Протокол NAT пропускает в сеть только те данные из Интернета, которые поступили в результате запроса от компьютера из локальной сети.
Протокол NAT решает две главные задачи:
Принцип работы протокола NAT достаточно прост. Когда клиент внутренней сети устанавливает связь с сервером внешней сети, открывается сокет, определяемый IP-адресом источника, портом источника, IP-адресом назначения, портом назначения и сетевым протоколом. Когда приложение передает данные через этот сокет, то IP-адрес источника и порт источника вставляются в пакет в поля параметров источника. Поля параметров пункта назначения будут содержать IP-адрес сервера и портсервера.
Устройство NAT (маршрутизатор) перехватывает исходящий из внутренней сети пакет и заносит в свою внутреннюю таблицу сопоставления портов источника и получателя пакета, используя IP-адрес назначения, порт назначения, внешний IP-адрес устройства NAT, внешний порт, сетевой протокол, а также внутренние IP-адрес и порт клиента. Затем устройство NAT транслирует пакет, преобразуя в пакете поля источника: внутренние IP-адрес и порт клиента заменяются внешними IP-адресом и портом устройства NAT.
Преобразованный пакет пересылается по внешней сети и в итоге попадает на заданный сервер. Получив пакет, сервер будет направлять ответные пакеты на внешний IP-адрес и порт устройства NAT (маршрутизатора), указывая в полях источника свои собственные IP-адрес и порт.
Устройство NAT принимает эти пакеты от сервера и анализирует их содержимое на основе своей таблицы сопоставления портов. Если в таблице будет найдено сопоставление порта, для которого IP-адрес источника, порт источника, порт назначения и сетевой протокол из входящего пакета совпадают с IP-адресом удаленного узла, удаленным портом и сетевым протоколом, указанным в сопоставлении портов, то NAT выполнит обратное преобразование: заменит внешний IP-адрес и внешний порт в полях назначения пакета на IP-адрес и внутренний порт клиента внутренней сети. Однако если в таблице сопоставления портов не находится соответствия, то входящий пакет отвергается и соединение разрывается.
В некоторых маршрутизаторах возможно отключение NAT-протокола. Однако имеются модели, где NAT-протокол активирован и отключить его невозможно. При этом важно, чтобы маршрутизатор мог частично обойти ограничения NAT-протокола. Дело в том, что не все сетевые приложения пользуются протоколами, способными взаимодействовать с NAT. Поэтому все маршрутизаторы имеют функции, позволяющие наложить ограничения на использование протокола NAT. Сервер, устанавливаемый во внутренней сети и являющийся прозрачным для протокола NAT, называют виртуальным сервером (Virtual Server). Прозрачным для протокола NAT может быть не весь сервер, а лишь определенные приложения, запускаемые на нем. Для того чтобы реализовать виртуальный сервер во внутренней сети, на маршрутизаторе используется технология перенаправления портов.
Маршрутизаторы могут быть реализованы не только как специальное оборудование, но и программно. В этом случае программы-роутеры устанавливаются, как правило, на сервер локальной сети или просто на одну из рабочих станций, имеющую подключение к Интернету. Рассмотрим некоторые из этих аппаратно-программных средств:
Итак, для соединения отдельных компьютерных сетей (например, региональных) между собой необходим маршрутизатор. Подсоединение отдельной локальной сети к глобальной осуществляется также с помощью маршрутизатора. При этом маршрутизаторы могут быть реализованы аппаратно, в виде отдельного специального устройства-маршрутизатора, или программно - как программа-маршрутизатор. Такие программы называются router (маршрутизатор), proxy (прокси-сервер) и gateway (межсетевой шлюз).
При подключении компьютера к Интернету провайдер выделяет ему постоянный или динамический IP-адрес. Но если к Интернету подключен компьютер, который является к тому же частью локальной сети, и необходимо обеспечить доступ к Сети c остальных ее компьютеров, возникает проблема: IP-адрес, выделенный для компьютера, имеющего доступ в Сеть (а значит, и для всей этой сети), один, а компьютеров много – и как распределять по ним пришедшие пакеты, имеющие один и тот же IP-адрес?
В таких случаях используется межсетевой шлюз (англ. gateway). Это программа, которая как бы подменяет собой Интернет для локальной сети и локальную сеть для Интернета. Получив запрос от одного из компьютеров локальной сети, допустим, на загрузку web-страницы, она запоминает, от какого компьютера этот запрос пришел, и делает запрос в Интернет на загрузку той же страницы, но уже от своего имени, т.е. с IP-адреса того компьютера, на котором установлен межсетевой шлюз. После загрузки запрошенной страницы межсетевой шлюз передает ее по локальной сети тому компьютеру, с которого был сделан запрос.
Обмен данными между компьютерами локальной сети и межсетевым шлюзом происходит по тому же протоколу, что и обмен данными во всем Интернете, – TCP/IP. Поэтому в локальной сети каждый компьютер имеет свой внутренний IP-адрес, по которому с ним могут общаться другие компьютеры, в том числе и межсетевой шлюз. Иными словами, шлюз имеет два IP-адреса: для «своих» – тот, который присвоен ему в локальной сети, а для Интернета – тот, который присвоен ему провайдером.
Такой шлюз может существовать и между двумя локальными сетями. Принцип тот же: у компьютера два адреса – по одному для каждой сети.
Внутренние IP-адреса полагается брать из диапазона 192.168.ххх.ххх, чтобы не было совпадения с каким-либо из существующих в Интернете адресов. Указанный диапазон специально зарезервирован для использования в локальных сетях, и серверов с адресами из него нет.
Характерный пример межсетевого шлюза – средство общего доступа к Интернету, имеющееся в Windows 2000/XP (Internet Connection Sharing, ICS).
Первая задача прокси-сервера – это кэширование данных. Web-страницы, хоть раз запрошенные с одного из компьютеров локальной сети, сохраняются на прокси-сервере некоторое время (срок зависит от его настроек). Поэтому работа с Интернетом через прокси-сервер может идти несколько быстрее, чем при прямом подключении к Сети, ведь однажды загруженные страницы будут грузиться с прокси-сервера, а не из Интернета.
Кроме того, прокси-сервер обеспечивает определенную защиту от «взлома»: при наличии прокси-сервера проникнуть на компьютеры локальной сети из Интернета значительно труднее по сравнению с сетью, в которой каждый компьютер имеет свой IP-адрес.
К тому же при работе с ресурсами Интернета из локальной сети через прокси-сервер «выследить» конкретный компьютер будет практически невозможно. Максимум, что можно будет узнать, это адрес прокси-сервера. Но для этого необходима соответствующая настройка прокси-сервера – он должен быть «анонимным». Неанонимный прокси-сервер сохраняет в отправляемых через него данных пометки об IP-адресе отправителя.
Поскольку прокси-сервер фактически играет роль универсального Интернет-сервера для всех компьютеров локальной сети, для работы с ним необходимо указать его «координаты» в настройках программ для работы с Интернетом. К примеру, в браузере Microsoft Internet Explorer 6.0 это делается в диалоговом окне Сервис – Свойства обозревателя – Подключение. В этой версии браузера прокси-сервер настраивается отдельно для каждого подключения.
К прокси-серверу компьютеры должны обращаться по какому-либо порту. По умолчанию для такой работы выделяется порт 80, но тут есть одна особенность: если на компьютере помимо прокси-сервера запущен также и web-сервер для доступа из Интернета к сайту, расположенному на этом же компьютере, то 80-й порт будет использоваться именно web-сервером, и прокси-сервер (а также программы для работы с ресурсами Интернета) придется настроить на работу по другому порту.
Строго говоря, чтобы работать через прокси-сервер, не обязательно подключаться именно к его локальной сети. Если необходимы возможность кэширования web-страниц или защита от «взлома» (или выслеживания), можно настроить свой компьютер на работу с каким-нибудь прокси-сервером не из локальной сети, а из Интернета, просто указав его IP-адрес (конечно, если он постоянный). Тогда для прокси-сервера этот компьютер станет как бы частью его локальной сети. Однако перед тем как воспользоваться прокси-сервером для защиты от выслеживания, не помешает проверить его на анонимность – удостовериться, что он не сохраняет пометку о настоящем IP-адресе работающего с ним компьютера в проходящих через него данных.
Разумеется, администратор прокси-сервера может и запретить доступ к нему извне, если он не заинтересован в такой повышенной нагрузке. Как правило, провайдер услуг Интернета предоставляет свой прокси-сервер только собственным клиентам (информация о том, через какого провайдера подключился пользователь, может быть получена путем анализа его IP-адреса). В этом случае его клиенты имеют возможность выбора – пользоваться прокси-сервером или нет. В Интернете есть и общедоступные прокси-серверы, с которыми могут работать все желающие. Списки общедоступных и анонимных прокси-серверов приводятся, например, на сайтах http://proxylist.virtualave.net, http://www.multiproxy.org/anonlist.htm, http://proxycheck.spylog.ru. Кроме того, неплохие результаты даст поиск в Сети по словам типа «анонимный прокси».
Протестировать прокси-сервер на анонимность можно с помощью специальных программ, например Proxy Checker (http://proxylist.virtualave.net/pchecker.htm) или Anonymity 4 Proxy (http://www.inetprivacy.com). Кроме того, услуги по такому тестированию предоставляют некоторые сайты, например http://www.all-nettools.com, http://www.leader.ru/secure/who.html, http://www.proxysite.com.
В целях большей гарантии анонимности можно использовать цепочку прокси-серверов, посылая каждый запрос через несколько анонимных прокси-серверов. В этом случае применяют специальные программы – ту же Anonymity 4 Proxy, MultiProxy (http://www.multiproxy.org), Stealth Anonimizer (http://www.members.xoom.it/AlucciNaxion/Prog.htm) или SocksChain (http://www.ufasoft.com/socks). Anonymity 4 Proxy, например, умеет работать со множеством прокси-серверов, даже совершая каждое новое посещение того же или нового web-сайта через другой прокси-сервер. В большинстве браузеров, в том числе и в Microsoft Internet Explorer, возможности работать через цепочку прокси-серверов нет.
Прокси-сервер можно использовать лишь для работы с web-страницами (т.е. по протоколу HTTP), а по всем остальным протоколам работать без него. Для этого надо опять-таки особым способом настроить браузер. В Microsoft Internet Explorer 6.0 для этого служит вкладка «Дополнительно» окна настройки свойств соединения. Такой подход имеет смысл, когда прокси-сервер работает недостаточно быстро и выигрыш в скорости получается лишь для web-страниц за счет их кэширования.
Из-за хорошей системы кэширования данных некоторые пользователи Интернета устанавливают прокси-сервер на своем компьютере.
Наиболее известными прокси-серверами для небольших сетей на настоящее время являются программы WinGate и WinProxy (для Windows) и SQUID (для Linux), их можно найти на подавляющем большинстве компакт-дисков с программами для работы в Интернете.
Поскольку маршрутизатор выполняет функцию шлюза между локальной сетью и Интернетом, было бы логично наделить его такой функцией, как защита внутренней сети от несанкционированного доступа. Поэтому практически все современные маршрутизаторы класса SOHO имеют встроенные аппаратные брандмауэры, называемые также сетевыми экранами, или firewall. Конечно, существуют брандмауэры и в виде отдельных аппаратных решений, но интеграция брандмауэра с маршрутизатором позволяет снизить совокупную стоимость оборудования.
Брандмауэры анализируют весь трафик между двумя сетями, соединяемыми посредством маршрутизатора, на предмет соответствия его определенным критериям. Если трафик отвечает заданным условиям, то брандмауэр пропускает его через себя (производит маршрутизацию). В противном случае, то есть если не соблюдены установленные критерии, трафик блокируется брандмауэром. Брандмауэры фильтруют как входящий, так и исходящий трафик, а также позволяют управлять доступом к определенным сетевым ресурсам или приложениям. Они могут фиксировать все попытки несанкционированного доступа к ресурсам локальной сети и выдавать предупреждения о попытках проникновения.
Брандмауэры способны осуществлять фильтрацию сетевых пакетов, основываясь на адресах отправителя и получателя и номерах портов, — данная функция называется адресной фильтрацией. Кроме того, брандмауэры могут фильтровать специфические типы сетевого трафика, например HTTP, ftp или telnet, а также способны фильтровать трафик, основываясь на анализе атрибутов сетевых пакетов.
Существуют две методологии функционирования брандмауэров: согласно первой брандмауэр пропускает через себя весь трафик, за исключением того, который отвечает определенным критериям; вторая заключается в том, что брандмауэр, наоборот, блокирует весь трафик, кроме соответствующего определенным критериям.
Возможности брандмауэров и степень их интеллектуальности зависят от того, на каком уровне эталонной модели OSI они функционируют. Чем выше уровень OSI, на основе которой построен брандмауэр, тем выше обеспечиваемый им уровень защиты.
Напомним, что модель OSI (Open System Interconnection) включает семь уровней сетевой архитектуры. Первый, самый нижний уровень — физический. За ним следуют канальный, сетевой, транспортный, сеансовый уровни, уровень представления и прикладной уровень, или уровень приложений.
Для того чтобы обеспечивать фильтрацию трафика, брандмауэр должен работать как минимум на третьем уровне модели OSI, то есть на сетевом уровне. На этом уровне происходит маршрутизация пакетов на основе преобразования MAC-адресов в сетевые адреса. С точки зрения протокола TCP/IP этот уровень соответствует уровню IP (Internet Protocol). Получая информацию сетевого уровня, брандмауэры способны определить адрес источника и получателя пакета и проверить, допустима ли передача трафика между данными адресатами. Однако информации сетевого уровня недостаточно для анализа содержимого пакета. Брандмауэры, функционирующие на транспортном уровне модели OSI, получают больше информации о пакетах и являются более интеллектуальными схемами защиты сетей. Если брандмауэры работают на уровне приложений, им доступна полная информация о сетевых пакетах, поэтому такие брандмауэры обеспечивают наиболее надежную сетевую защиту.
Профессиональные брандмауэры захватывают каждый входящий пакет, прежде чем он будет передан адресату и принят его операционной системой. Благодаря этому очень сложно получить контроль над компьютером, защищенным таким брандмауэром.
Все брандмауэры можно условно разделить на четыре категории в соответствии с теми уровнями модели OSI, на которых они работают:
Брандмауэры типа пакетных фильтров являются самыми простыми наименее интеллектуальными. Они работают на сетевом уровне модели OSI или на IP-уровне стека протоколов TCP/IP. Такие брандмауэры в обязательном порядке присутствуют в любом маршрутизаторе, поскольку все маршрутизаторы могут работать как минимум на третьем уровне модели OSI.
В пакетных фильтрах каждый пакет, прежде чем быть переданным, анализируется на предмет соответствия критериям передачи или блокировки передачи. В зависимости от пакета и сформированных критериев передачи брандмауэр может передать пакет, отвергнуть его или послать уведомление инициатору передачи. Критерии, или правила, передачи пакетов могут формироваться на основе IP-адресов источника и получателя, номеров портов источника и получателя и используемых протоколов.
Преимуществом пакетных фильтров является их низкая цена. Кроме того, они практически не влияют на скорость маршрутизации, то есть не оказывают негативного влияния на производительность маршрутизатора.
Шлюзы сеансового уровня — это брандмауэры, работающие на сеансовом уровне модели OSI или на уровне TCP (Transport Control Protocol) стека протоколов TCP/IP. Они отслеживают процесс установления TCP-соединения (организацию сеансов обмена данными между узлами сети) и позволяют определить, является ли данный сеанс связи легитимным. Данные, передаваемые удаленному компьютеру во внешней сети через шлюз на сеансовом уровне, не содержат информации об источнике передачи, то есть все выглядит таким образом, как будто данные отправляются самим брандмауэром, а не компьютером во внутренней (защищаемой) сети. Все брандмауэры на основе NAT-протокола являются шлюзами сеансового уровня (протокол NAT будет описан далее).
К преимуществам шлюзов сеансового уровня относится их низкая цена, к тому же они не оказывают существенного влияния на скорость маршрутизации. Однако шлюзы сеансового уровня не способны осуществлять фильтрацию отдельных пакетов.
Шлюзы прикладного уровня, которые также называются proxy-серверами, функционируют на прикладном уровне модели OSI, отвечающем за доступ приложений в сеть. На этом уровне решаются такие задачи, как перенос файлов, обмен почтовыми сообщениями и управление сетью. Получая информацию о пакетах на прикладном уровне, такие шлюзы могут реализовывать блокировку доступа к определенным сервисам. Например, если шлюз прикладного уровня сконфигурирован как Web-proxy, то любой трафик, относящийся к протоколам telnet, ftp, gopher, будет заблокирован. Поскольку данные брандмауэры анализируют пакеты на прикладном уровне, они способны осуществлять фильтрацию специфических команд, например http:post, get и т.д. Эта функция недоступна ни пакетным фильтрам, ни шлюзам сеансового уровня. Шлюзы прикладного уровня могут также использоваться для регистрации активности отдельных пользователей и для установления ими сеансов связи. Эти брандмауэры предлагают более надежный способ защиты сетей по сравнению со шлюзами сеансового уровня и пакетными фильтрами, однако в значительно большей степени оказывают влияние на уменьшение скорости маршрутизации.
Брандмауэы типа Stateful Packet Inspection (SPI) объединяют в себе преимущества пакетных фильтров, шлюзов сеансового уровня и шлюзов прикладного уровня. Фактически это многоуровневые брандмауэры, которые работают одновременно на сетевом, сеансовом и прикладном уровнях.
SPI-брандмауэры осуществляют фильтрацию пакетов на сетевом уровне, определяют легитимность установления сеанса связи, основываясь на данных сеансового уровня, и анализируют содержимое пакетов, используя данные прикладного уровня.
SPI-брандмауэры обеспечивают наиболее надежную защиту сетей и применяются во многих современных маршрутизаторах.
Рассмотрим типичный набор функций маршрутизаторов, используемых для подключения к Интернету небольшой локальной сети.
Поскольку маршрутизаторы являются пограничными сетевыми устройствами, то есть устанавливаются на границе между двумя сетями или между локальной сетью и Интернетом, то они должны иметь как минимум два порта (см. Рис. 3). К одному из этих портов подключается локальная сеть, и этот порт называется внутренним LAN-портом. Ко второму порту подключается внешняя сеть (Интернет), и этот порт называется внешним WAN-портом. Как правило, маршрутизаторы класса SOHO (т.е. для небольших локальных или домашних сетей) имеют один WAN-порт и несколько (от одного до четырех) внутренних LAN-портов, которые объединяются в коммутатор. В большинстве случаев WAN-порт коммутатора имеет интерфейс 10/100Base-TX, и к нему может подключаться xDSL-модем с соответствующим интерфейсом либо сетевой Ethernet-кабель.
Рис. 3. Пример использования маршрутизатора в небольшой локальной сети
В некоторых моделях маршрутизаторов, кроме WAN-порта, есть последовательный порт для подключения аналогового модема. Как правило, этот порт предназначен для создания резервного низкоскоростного соединения по коммутируемой линии с провайдером.
Учитывая широкое распространение беспроводных сетей, создан целый класс так называемых беспроводных маршрутизаторов. Эти устройства, кроме классического маршрутизатора с WAN- и LAN-портами, содержат интегрированную точку беспроводного доступа, поддерживающую протокол IEEE 802.11a/b/g. Беспроводной сегмент сети, которую позволяет организовать точка доступа, относится к внутренней сети с точки зрения маршрутизатора, и в этом смысле компьютеры, подключаемые к маршрутизатору беспроводным образом, ничем не отличаются от компьютеров сети, подключенных к LAN-порту.
Любой маршрутизатор, как устройство сетевого уровня, имеет свой IP-адрес. Кроме того, IP-адрес есть и у его WAN-порта. К примеру, маршрутизатор может иметь следующий IP-адрес:
При этом у его WAN-порта может быть такой адрес:
Компьютеры, подключаемые к LAN-портам маршрутизатора, должны иметь IP-адрес той же подсети, что и сам маршрутизатор. Кроме того, в сетевых настройках этих ПК необходимо задать адрес шлюза по умолчанию, совпадающий с IP-адресом маршрутизатора. К примеру, в рассмотренном выше случае сетевые настройки ПК, подключаемого к LAN-порту, могут быть следующими:
Устройство, подключаемое к WAN-порту со стороны внешней сети, должно иметь IP-адрес из той же подсети, что и WAN-порт маршрутизатора. В нашем случае это могут следующие сетевые настройки:
В рассмотренном выше примере использовался так называемый статический способ задания IP-адреса (Static IP), который поддерживают все маршрутизаторы. Его следует применять для ознакомления с возможностями работы маршрутизатора или для его тестирования. Однако в реальных условиях чаще используется динамический (Dynamic IP) способ задания IP-адреса, когда маршрутизатор выступает в роли DHCP-клиента, автоматически получая IP-адрес, адрес шлюза по умолчанию и сервера DNS от провайдера (DHCP-сервера). Этот способ обеспечивает провайдеру достаточную гибкость при конфигурировании своей сети и поддерживается всеми провайдерами.
Для того чтобы сделать доступными из внешней сети определенные приложения, запускаемые на сервере во внутренней сети (например, Web-сервер или ftp-сервер), в маршрутизаторе необходимо задать соответствие между портами, используемыми определенными приложениями, и IP-адресами тех виртуальных серверов внутренней сети, на которых эти приложения работают. В этом случае говорят о перенаправлении портов (Port mapping). В результате любой запрос из внешней сети на IP-адрес WAN-порта маршрутизатора (но не виртуального сервера) по указанному порту будет автоматически перенаправлен на указанный виртуальный сервер.
Существует несколько способов конфигурирования виртуального сервера. В простейшем случае задается статическое перенаправление портов, то есть IP-адрес виртуального сервера, разрешенный порт приложения на этом виртуальном сервере (Private Port) и порт запроса (Public Port). Если, к примеру, открыт доступ к Web-серверу (порт 80), расположенному во внутренней сети с IP-адресом 192.168.1.10, то при обращении из внешней сети по адресу 10.0.0.254 (адрес WAN-порта) по 80-му порту этот пакет будет перенаправлен маршрутизатором на Web-сервер. Если же происходит обращение по тому же адресу, но по 21-му порту, то такой пакет будет отвергнут маршрутизатором.
Маршрутизаторы позволяют создавать несколько статических перенаправлений портов. Так, на одном виртуальном сервере можно открыть сразу несколько портов или создать несколько виртуальных серверов с различными IP-адресами. Однако при статическом перенаправлении портов нельзя перенаправлять один порт на несколько IP-адресов, то есть порт может соответствовать только одному IP-адресу. Таким образом, невозможно, например, сконфигурировать несколько Web-серверов с разными IP-адресами — для этого придется менять порт Web-сервера по умолчанию и при обращении по 80-му порту в настройке маршрутизатора в качестве Private Port указывать измененный порт Web-сервера.
Большинство моделей маршрутизаторов позволяют также задавать статическое перенаправление группы портов, то есть ставить в соответствие IP-адресу виртуального сервера сразу группу портов. Такая возможность полезна в том случае, если необходимо обеспечить работу приложений, использующих большое количество портов, например игр или аудио/видеоконференций. Количество перенаправляемых групп портов в разных моделях маршрутизаторов различно, но, как правило, их не менее десяти.
Статическое перенаправление портов позволяет лишь отчасти решить проблему доступа из внешней сети к сервисам локальной сети, защищаемой NAT-устройством. Однако существует и обратная задача — обеспечить пользователям локальной сети доступ во внешнюю сеть через NAT-устройство. Дело в том, что некоторые приложения (например, Интернет-игры, видеоконференции, Интернет-телефония и другие, требующие одновременного установления множества сессий) не совместимы с NAT-технологией. Для того чтобы решить эту проблему, используется так называемое динамическое перенаправление портов, которое задается на уровне отдельных сетевых приложений.
В случае если маршрутизатор поддерживает данную функцию, необходимо задать номер внутреннего порта (или интервал портов), связанный с конкретным приложением (как правило, его обозначают Trigger Port), и номер внешнего порта (Public Port), который будет сопоставляться с внутренним портом.
При активации динамического перенаправления портов маршрутизатор следит за исходящим трафиком из внутренней сети и запоминает IP-адрес компьютера, от которого этот трафик исходит. При поступлении данных обратно в локальный сегмент включается перенаправление портов, и данные пропускаются внутрь. По завершении передачи перенаправление отключается, вследствие чего любой другой компьютер может создать новое перенаправление уже на свой IP-адрес.
Динамическое перенаправление портов используется в основном для служб, предусматривающих кратковременные запросы и передачу данных, поскольку если один компьютер применяет перенаправление данного порта, то другой в это же время перенаправление того же самого порта использовать не может. Если нужно настроить работу приложений, которым необходим постоянный поток данных и которые занимают порт на длительное время, то динамическое перенаправление помогает мало. Однако и в этом случае возможно решение проблемы, заключающееся в использовании демилитаризованной зоны.
Демилитаризованная зона (DMZ-зона) — это еще один способ перенаправления портов. Данную возможность предоставляет большинство современных маршрутизаторов. При размещении в зоне DMZ компьютера внутренней локальной сети он становится прозрачным для протокола NAT. Фактически это означает, что компьютер внутренней сети виртуально располагается до брандмауэра. Для ПК, находящегося в DMZ-зоне, осуществляется перенаправление всех портов на один внутренний IP-адрес, что позволяет организовать передачу данных из внешней сети во внутреннюю.
Если, к примеру, сервер с IP-адресом 192.168.1.10, находящийся во внутренней локальной сети, размещен в DMZ-зоне, а сама локальная сеть защищена NAT-устройством, то поступивший из внешней сети по адресу WAN-порта маршрутизатора запрос будет переадресован по любому порту на IP-адрес 192.168.1.10, то есть на адрес виртуального сервера в DMZ-зоне.
В настоящее время существует множество технологий аутентификации пользователей, поддерживаемых маршрутизаторами. Впрочем, если говорить о коммутаторах класса SOHO, то наиболее распространенными методами аутентификации являются следующие:
Использование пароля и имени пользователя типично для коммутируемых соединений, когда маршрутизатор имеет дополнительный последовательный порт для подключения аналогового модема. В этом случае, как и при традиционной настройке удаленного соединения с применением аналогового модема, в маршрутизаторе при конфигурации последовательного порта указываются номер телефона провайдера, имя пользователя и пароль.
Использование аутентификации по MAC-адресу встречается довольно редко и подразумевает привязку соединения к MAC-адресу маршрутизатора. Смысл данной технологии достаточно прост: каждое сетевое устройство имеет свой уникальный MAC-адрес длиной 6 байт, или 12 шестнадцатеричных цифр. Подлинность пользователя проверяется провайдером с использованием запроса MAC-адреса маршрутизатора.
Аутентификация по MAC-адресу имеет один подводный камень: при подключении модема к новому маршрутизатору или к компьютеру соединение перестает работать. Для того чтобы этого не происходило, многие модели маршрутизаторов позволяют задавать внешний MAC-адрес.
Использование протокола PPPoE (Point-to-Point Protocol over Ethernet) для аутентификации пользователей поддерживается практически всеми моделями современных маршрутизаторов. Этот протокол является расширением протокола PPP, который был специально разработан для применения протокола TCP/IP в последовательных соединениях, к которым относятся коммутируемые соединения. Фактически, данный протокол предлагает механизм инкапсуляции TCP-пакетов для их передачи по последовательным соединениям. К примеру, протокол PPP используется для организации коммутируемого доступа в Интернет.
PPPoE (как и PPP) не является протоколом аутентификации в чистом виде, однако механизм аутентификации можно рассматривать в качестве составной части этого протокола. При аутентификации по протоколу PPPoE требуется указать имя и пароль.
Любой современный маршрутизатор не только может быть DHCP-клиентом, но и может иметь встроенный DHCP-сервер, что позволяет автоматически присваивать IP-адреса всем клиентам внутренней сети. В настройках DHCP-сервера, как правило, указываются начало и конец диапазона выделяемых IP-адресов. Кроме того, иногда в заданном диапазоне можно указать IP-адреса, которые не будут динамически присваиваться клиентам.
Большинство маршрутизаторов в той или иной степени поддерживают возможность создания виртуальных частных сетей (Virtual Private Networking, VPN), что позволяет организовывать защищенное соединение с локальной (внутренней) сетью извне.
Для создания VPN-сетей, как правило, используются три протокола: сквозной туннельный протокол (Point-to-Point Tunneling Protocol, PPTP), протокол IPsec и туннельный протокол второго уровня (Layer 2 Tunneling Protocol, L2TP).
Режимы функционирования VPN
Существует два режима функционирования VPN: сквозной (Pass Through) и активный. В первом случае маршрутизатор без вмешательства передает входящий и исходящий VPN-трафики, пропуская через себя инкапсулированные пакеты данных без просмотра их содержимого. Если маршрутизатор поддерживает режим VPN Pass Through, то необходимо только настроить соединение на VPN-клиентах (компьютеры во внутренней сети) таким образом, чтобы клиенты из внутренней сети могли свободно подключаться к серверу VPN снаружи. Однако при совместном использовании NAT- и VPN-туннелей могут возникать проблемы.
В активном режиме маршрутизатор выступает в роли сервера и может устанавливать VPN-соединение с узлом локальной сети, с другими шлюзами и маршрутизаторами или же в обоих направлениях.