Несмотря на то что производители большинства современных программ и устройств стараются сделать их максимально удобными и простыми для пользователя, им далеко не всегда удается свести все варианты настроек к ответам на простые вопросы. Точнее, не совсем так — это пользователям далеко не всегда удается понять, что именно у них спрашивают...
А так как в следующих статьях мы будем говорить о более продвинутых функциях обеспечения безопасности вашей сети, то для начала придется разобраться с основами ее функционирования. Сразу хочу оговориться, что рассказ будет очень конспективным и упрощенным, но при желании вы без проблем сможете найти дополнительную информацию по всем затронутым вопросам...
Основы Интернета
Вы наверняка уже знаете, что все компьютеры в Интернете адресуются с помощью IP-адресов: наборов из четырех чисел от 0 до 255, причем каждый адрес является уникальным — в каждый момент времени в Интернете не может существовать двух компьютеров с одинаковыми адресами.
Помимо адресов при пересылке данных указываются еще и порты. Порт — это число от 1 до 65535, определяющее, какая именно программа должна обрабатывать данные. Например, если вы открыли два окна браузера и запрашиваете какие-то веб-страницы, то у каждого окна будет свой порт и данные, отправляемые веб-сервером, будут содержать указание на этот порт, что позволит браузеру понять, какие данные в каком окне выводить.
Серверы, как правило, слушают стандартные порты, а клиенты для подключения используют любые свободные
Существуют стандартные порты, которые используются для тех или иных служб, а также свободные, которые операционная система может использовать при необходимости. Например, веб-серверы слушают порт 80, поэтому какой бы браузер вы ни использовали, он будет отправлять запрос именно на него (если только в адресе не будет явно указан какой-то другой порт и вы используете именно HTTP-протокол). В то же время порт, используемый конкретным окном браузера, назначается операционной системой из числа свободных в данный момент и может быть практически любым. Порты с 1 по 1024 зарезервированы для различных стандартных служб.
Общение в Интернете происходит между серверами и клиентами. Сервер — это программа, которая ждет команды от клиентов, а потом их выполняет. Клиенты, соответственно, эти команды отдают. Например, ваш браузер (клиент) командует веб-серверу: "Покажи-ка мне страницу такую-то!" Сервер эту страницу находит, пересылает клиенту и ждет дальнейших указаний.
NAT — Network Address Translation
Выше говорилось, что в Интернете не может быть двух компьютеров с одинаковыми IP-адресами. Однако если посмотреть на предложения провайдеров, то можно увидеть, что вместе с быстрым подключением, как правило, предоставляется всего один адрес. Что же делать, если у вас дома несколько компьютеров?
Пакеты, предназначенные для зарезервированных локальных адресов, не маршрутизируются
Существует несколько диапазонов IP-адресов, предназначенных для использования исключительно в локальных сетях. Наиболее употребительны адреса 192.168.0.xxx и 192.168.1.xxx. Вы можете без опаски назначать их своим компьютерам, не спрашивая ни у кого разрешения на их использование. Но вот напрямую подключить компьютер с таким адресом к Интернету у вас не выйдет — первый же маршрутизатор (стоящий у вашего провайдера) просто отбросит данные, отправленные с подобного адреса.
Трансляция адресов меняет адрес отправителя с локального на внешний
Однако вы можете установить в своей сети специальный маршрутизатор, который называется NAT-прокси, masquerade-прокси или ICS (Internet Connection Sharing в терминологии Windows). Существуют некие тонкие различия между ними, но на данном этапе ими можно пренебречь. Основная идея работы подобного устройства очень проста: у него есть два интерфейса (например, две сетевые карты), одному из которых соответствует внешний IP-адрес (выданный провайдером), а второму — внутренний (назначенный вами). При получении из вашей сети какого-то пакета данных, предназначенного для передачи в Интернет, NAT-прокси запомнит, что с такого-то внутреннего адреса был отправлен пакет на такой-то внешний адрес. Затем он перешлет пакет получателю, но уже от своего имени, используя свой «честный» IP-адрес. Получив ответ, он вспомнит отправителя пакета и перешлет пакет ему, используя его внутренний адрес.
Попробуем рассмотреть на примере. Вы со своего компьютера (IP-адрес 192.168.1.5) с порта 2222 (порт назначен операционной системой автоматически) запрашиваете страницу с сервера spb-flowers.listsoft.ru (IP-адрес 195.242.9.4, порт 80). Ваш компьютер отправляет этот пакет в шлюз по умолчанию (IP-адрес 192.168.1.1 — вы указали его при настройке протокола, и именно он и связывает вашу домашнюю сеть с Интернетом). Получив ваш пакет и увидев, что он предназначен для передачи в Интернет, ваш NAT-прокси выбирает у себя свободный порт (например, 5555) и записывает в какой-то внутренней таблице что-нибудь вроде 192.168.1.5 2222 5555, после чего отправляет запрос со своего внешнего интерфейса, но указав в качестве источника себя самого (IP-адрес 195.131.151.17 — адрес, выданный вам провайдером, порт 5555). Получив с spb-flowers.listsoft.ru ответ на порт 5555 (сервер посылает ответ на тот же порт, с которого пришел запрос), NAT-прокси смотрит свою таблицу соответствий, находит порт 5555 и пересылает полученные данные на обнаруженный в таблице адрес 192.168.1.5, порт 2222. И вы успешно видите появившуюся в браузере страницу с насекомоядными растениями...
Port forwarding
Вышеописанная схема вполне успешно работает до тех пор, пока во внутренней сети находятся только клиенты, инициирующие соединение. Но что случится, если мы захотим разместить у себя в локальной сети небольшой сервер, чтобы наши знакомые могли смотреть, скажем, наши фотографии, не выходя из дома?
Увы, ничего не выйдет. Все попытки указать наш локальный адрес (192.168.1.5) для подключения ни к чему не приведут — пакеты не дойдут. А при указании нашего внешнего адреса (195.131.151.17) знакомые получат честный ответ от NAT-прокси, что веб-сервер на нем не запущен.
Помимо всего прочего NAT является еще одним уровнем защиты вашей локальной сети
Однако есть возможность это ограничение обойти. Мы можем сказать нашему NAT-прокси, что, например, все пакеты, приходящие на порт 80, надо перенаправлять на тот же порт компьютера 192.168.1.5 нашей локальной сети. И, о чудо, наши знакомые обнаружат, что без каких бы то ни было проблем могут подключиться к серверу, указав наш внешний IP-адрес. Точно так же при желании мы можем «поднять» в нашей сети и другие серверы — почту, FTP, игры и так далее.
Компьютер, доступный из Интернета, является уязвимой точкой вашей сети
Единственное, о чем следует помнить, — это то, что теперь наш сервер становится видимым для всего Интернета. А это означает, что вам надо, во-первых, отслеживать все обновления установленного у вас сервера, проверять, не было ли выявлено каких-то уязвимостей, и так далее, а во-вторых, контролировать, кто имеет к нему доступ, а кто — нет (например, используя персональный программный файрвол, вы можете ограничить диапазон IP-адресов пользователей, имеющих право подключаться к серверу).
DMZ
В некоторых, впрочем достаточно редких, случаях требуется использовать какие-то очень хитрые правила для передачи внешних данных в вашу локальную сеть. Причем правила эти могут быть настолько сложными, что перенаправление портов не сможет вам помочь. В этом случае можно использовать DMZ (Demilitarized Zone).
DMZ как бы помещает указанный компьютер перед брандмауэром, открывая все его порты для доступа извне. Точнее, не совсем так — будут порты открыты или нет, зависит от настройки компьютера, но пакеты, предназначенные для них, будут успешно достигать вашего компьютера. То есть DMZ — это то же самое, что и указание перенаправления всех портов на ваш компьютер.
DHCP
Сокращение DHCP означает Dynamic Host Configuration Protocol. Как можно понять из названия, назначение DHCP-сервера — автоматически назначать IP-адреса компьютерам вашей сети и сообщать им всю остальную необходимую для конфигурирования информацию. Использование DHCP оправдано в больших компаниях, но в небольших офисах или домашних сетях значительно удобнее конфигурировать компьютеры вручную — это позволит использовать в сети такие продвинутые функции, как, например, перенаправление портов, о котором шла речь выше.
В небольших сетях DHCP можно не использовать
Как показывает практика, наиболее удобно в подобных небольших сетях назначить статические адреса для всех «больших» компьютеров, а DHCP использовать для настройки ноутбуков и карманных компьютеров, которые могут эпизодически подключаться и отключаться.
Туннели
Туннели позволяют установить логическое соединение между двумя компьютерами. При этом для клиентов, использующих соединение через туннель, все будет выглядеть так, как будто компьютеры на обеих сторонах туннеля соединены прямым проводом. Это достигается с помощью инкапсуляции IP-пакетов — помещения одного пакета внутрь другого. В зависимости от используемого протокола данные могут шифроваться.
Туннели позволяют связывать в том числе и локальные сети с немаршрутизируемыми адресами
Выглядит это не так сложно, как кажется. Например, вы знаете, что пакеты, предназначенные для внутренних сетей (192.168.xxx.xxx), не маршрутизируются. Но если у вас есть две локальные сети, соединенные туннелем, то маршрутизатор в одной сети, получив пакет, предназначенный для другой сети, просто возьмет его целиком (включая все служебные заголовки) и поместит в область данных другого пакета, который будет переслан на другой конец туннеля точно так же, как и любой нормальный пакет, — через множество промежуточных хостов. Получатель же извлечет исходный пакет и передаст уже в свою сеть. Благодяря этому во вложенном пакете не останется никакой информации о его путешествии, а для клиентов все будет выглядеть так, как будто этот пакет неким магическим образом перенесся из одного конца туннеля в другой. Или не магическим, а просто по прямому проводу.
Ссылки по теме
Статья получена: hostinfo.ru