Операционные системы - статьи

         

А зачем оно нужно?


Зачем нужен firewall - и так понятно. Вы же не хотите, чтобы ваш компьютер, или вся сеть, подключенная к интернету, были доступны всем желающим. Доступ должен разрешаться только туда, куда вы решите. А одним из простых вариантов firewall'а как раз и является фильтр пакетов.

Маскарадинг - вещь менее очевидная. Если у вас один компьютер с dial-up подключением, то он вам и не нужен. А как быть, если у вас в организации локальная сеть, и все хотят в интернет, а провайдер дал вам один-единственный IP-адрес? Или того хуже, вы организовали сеть дома с соседями, а dial-up у вас один, да еще с динамическим адресом? Ну или просто ваша жена скучает, когда вы бродите по интернету, и вы купили ей отдельный компьютер, и даже соединили его со своим, а телефонная линия у вас все равно одна и dial-up account тоже?

Можно, конечно, поставить прокси-сервер. Но это требует времени и некоторых усилий по настройке самого сервера, и клиентских программ. Вдобавок, он обеспечивает работу только ограниченного набора протоколов. Маскарадинг позволяет избежать этих трудностей.

В некоторых организациях маскарадинг применяется даже если у машин есть реальные IP-адреса, чтобы скрыть внутреннюю структуру сети. Снаружи это выглядит так, как будто все запросы исходят от единственной машины-шлюза.

Замечу, что "локальная сеть" может состоять из двух или более компьютеров (или даже виртуальных компьютеров на одном физическом), и совершенно неважно, как именно они соединены между собой (Ethernet, последовательный, параллельный или инфракрасный порт, USB или еще как-нибудь). Не играет особой роли и протокол, по которому эти компьютеры общаются между собой, подойдет и SLIP, и PLIP, и PPP, и IP-туннель над другим протоколом.. Единственное, что действительно требуется - чтобы этот протокол поддерживал передачу IP-пакетов.

Как выбрать адреса для машин в локальной сети? Если ваш интернет-провайдер выделил вам пул адресов, то адреса надо брать из него. Если же вам выделяется только один адрес (в том числе, и динамический) то в локальной сети настоятельно рекомендуется выбирать адреса из специально выделенных диапазонов 192.168.0.*, 172.16.0.0 - 172.31.255.255 или 10.*.*.* (так называемые fake-адреса, не маршрутизирующиеся глобально). (См.
RFC 1597). Сконфигурированный для маскарадинга шлюз может менять заголовки IP-пакетов, пришедших из вашей локальной сети и отправлять их получателю уже со своего реального IP-адреса. В полученных снаружи ответных пакетах он меняет адрес получателя обратно на fake-адрес и пересылает пакет по назначению.

Вы, конечно, можете назначить своим компьютерам и чужие реальные адреса, но это чревато некоторыми неприятностями. При использовании маскарадинга вы не сможете связаться с удаленными хостами, которым эти адреса принадлежат по праву (поскольку ваш шлюз будет думать, что они находятся в вашей локальной сети). При отсутствии маскарадинга у вас просто не установится ни одно соединение, поскольку никто, кроме вашего шлюза, не будет маршрутизировать пакеты для чужих адресов в вашу сеть.

Вот два примера для более четкого понимания, зачем и как можно настроить локальную сеть для работы с интернетом:

Пример 1: локальная сеть и единственный реальный IP-адрес

У вас есть локальная сеть, единственный выход в интернет (например, dial-up по ppp, хотя это не существенно) и шлюзовой компьютер с реальным выделенным IP-адресом (например, 1.2.3.4). На интерфейсе локальной сети этот компьютер имеет адрес 192.168.1.1. В локальной сети находится компьютер myhost с адресом 192.168.1.100, с которого вы хотите пользоваться интернет-браузером. Как это реализовать?

Вариант 1 (прозрачное проксирование): на компьютере firewall устанавливается proxy-сервер, все пакеты из локальной сети, адресованные на внешние http-серверы заворачиваются в этот proxy-сервер, который посылает запросы вовне со своего реального адреса 1.2.3.4, а полученные ответы пересылает обратно в локальную сеть. При этом браузер на машине myhost конфигурируется как для прямого соединения с интернетом, потому такое проксирование и называется прозрачным. С точки зрения удаленного http-сервера соединение устанавливается с вашего шлюза. С точки зрения браузера соединение устанавливается с удаленным сервером.

Вариант 2 (маскарадинг): у всех пакетов из локальной сети, адресованных вовне, адрес отправителя меняется на 1.2.3.4, а у приходящих в ответ пакетов адрес получателя заменяется на 192.168.1.100 и они пересылаются на машину myhost.


С точки зрения удаленного сервера соединение устанавливается с вашим шлюзом. С точки зрения браузера соединение устанавливается с удаленным сервером.

Пример 2: локальная сеть с реальными IP-адресами

У вас есть локальная сеть с постоянным подключением к интернету. Все машины в локальной сети имеют реальные IP-адреса из пула 1.2.3.x. Шлюзовой компьютер имеет IP-адрес 1.2.3.4. Внутри сети установлен компьютер с адресом 1.2.3.10, который вы хотите сделать доступным для всего интернета, но только в качестве http-сервера.

В такой конфигурации фильтр пакетов может использоваться для ограничения доступа, в частности, внутрь вашей сети из остального интернета.

Вариант 1 (редиректор): пересылка пакетов из интернета внутрь вашей сети и обратно запрещена. На шлюзе на определенном порту ожидает входящих соединений программа, называемая редиректором. При установке соединения извне она также устанавливает соединение с сервером внутри вашей сети и производит прозрачную пересылку данных в обе стороны. С точки зрения вашего сервера соединение устанавливается с вашего же шлюза. С точки зрения удаленного клиента в интернете соединение устанавливается со шлюзом. Преимущество в том, что никакие другие соединения с вашим сервером из интернета не могут быть установлены, что сильно повышает безопасность. Недостаток в том, что сервер не может определить, с каким клиентом он реально работает.

Вариант 2 (требуется ядро 2.1.x или выше, либо патченное на предмет ipportfw 2.0.x): идея примерно та же, что и при редиректе, но реализуется другим способом. Ядро меняет адрес получателя для определенных пакетов и пересылает их в локальную сеть. С точки зрения сервера соединение устанавливается с удаленным клиентом, с точки зрения клиента соединение устанавливается со шлюзом. Недостаток предыдущего варианта устраняется: сервер видит реального клиента.


Содержание раздела