В этой статье описаны три варианта подключения локальной сети к Интернет:
- прямое" IP-подключение
- подключение через NAT
- подключение через прокси-сервера
Я
постарался по возможности описать преимущества, недостатки и область
применения каждого метода, а также некоторые возникающие нюансы.
Выбор
конкретного способа подключения зависит от потребностей пользователей,
цели подключения и, в некоторой степени, финансовых возможностей.
Итак, что мы имеем вначале:
компьютер локальной сети, подключенный к
Интернет. У него есть доступ как к Интернету, так и к локальной сети;
локальная
сеть, в которую включен этот компьютер. Наша задача - дать компьютерам
локальной сети доступ к Интернет через подключенный к нему компьютер.
Далее этот компьютер мы будем называть шлюзом или маршрутизатором.
Рассмотрение
способов мы начнем с наименее часто использующегося, наиболее дорогого,
но также наиболее "правильного" и естественного способа, дающего
наибольшие по сравнению с другими способами возможности.
"Прямое" IP-подключение к Internet
Для того, чтобы Ваша локальная сеть была полноценно подключена к Интернету, должны соблюдаться, как минимум, три условия:
- Каждая машина в локальной сети должна иметь "реальный", интернетовский IP-адрес;
- Эти
адреса должны быть не любыми, а выделенными Вашим провайдером для Вашей
локальной сети (скорее всего, это будет подсеть класса C);
- На
компьютере-шлюзе, подключенном к двум сетям - локальной сети и сети
провайдера, должна быть организована IP-маршрутизация, т.е. передача
пакетов из одной сети в другую.
В этом
случае Ваша локальная сеть становится как бы частью Интернета.
Собственно, это тот способ подключения, которым подключены к Интернету
сами Интернет-провайдеры и хостинг-провайдеры.
В
отличие от обычного подключения, рассчитанного на один компьютер, при
таком подключении "под клиента" выделяется не один IP-адрес, а
несколько, так называемая "IP-подсеть". Обычно в прайсах провайдера,
выделяющего подсети, указана стоимость подсети класса C (255 адресов).
В такой подсети первые три байта IP-адреса идентифицируют саму подсеть,
а последнее число - компьютер в данной (Вашей) подсети.
В
качестве компьютера-шлюза провайдеры рекомендуют использовать ПК под управлением клона UNIX (Linux, FreeBSD), т.к., во-первых, многие их
реализации бесплатны и содержат в себе все необходимые компоненты для
организации IP-маршрутизатора и FireWall, а также много других
необходимых или полезных сервисов (которые, в случае использования
Windows, можно найти только в NT или даже 2000), а во-вторых, эти ОС
менее требовательны к ресурсам ПК (в случае отказа от графических
интерфейсов; слышал даже такое, что под управлением Linux с
обслуживанием не очень большой сети справится даже ПК i486). Однако это
необязательно. В крайнем случае в качестве ПО маршрутизатора можно
применить Windows 98 или даже Windows 95. Вопреки распространенному
мнению, что эти ОС не поддерживают возможность маршрутизации, такая
возможность в них есть и включается достаточно просто (после установки
некоторых апдейтов). Как это сделать - очень хорошо описано в статье
Александра Каспина "Скрытые возможности роутинга в Win95". К тому же, в
этом случае на ПК-шлюзе можно работать, как на обычном :-)
При
таком способе подключения Вы можете организовать в своей сети сервисы,
доступные из Интернета - ведь при данном подключении не только Интернет
полностью доступен из Вашей сети, но и Ваша сеть - из Интернета, т.к.
является его частью.
Однако такая
"прозрачность" Вашей сети резко снижает ее защищенность - ведь любые
сервисы в локальной сети, даже предназначенные для "внутреннего"
использования, станут доступными извне через Интернет. Чтобы это не
имело места, доступ в локальную сеть извне несколько ограничивают.
Обычно это делается установкой на шлюзе программы-firewall. Это
своеобразный фильтр пакетов, проходящих из одной сети в другую. Путем
его настройки можно запретить вход-выход из локальной сети пакетов,
соответствующих определенным критериям - типу IP-пакета, IP-адресу
назначения, TCP/UDP-порту и т.п.
Firewall решает такие задачи, как:
- блокировку
доступа извне к определенным TCP/IP-сервисам локальной сети. Обычно
блокируется доступ к TCP-портам "Службы доступа сети Microsoft",
представляющей собой стандартный файловый сервер и сервер печати MS
Windows;
- блокировку доступа к определенным
компьютерам локальной сети. Таким образом, можно запретить доступ извне
ко всем машинам, кроме определенных серверов, предназначенных для
доступа из Интернет.
- защиту от троянских программ на сетевом уровне.
Несмотря
на универсальность такого метода подключения локальной сети к Интернет,
этот метод имеет недостатки. Благодаря им, его реально и используют
только лишь те организации, которым надо сделать свои сервера
доступными из Интернет - в основном, те же интернет-провайдеры и
хостинг-провайдеры, а также информационные службы. Самый главный
недостаток заключается в дороговизне выделения IP-адресов и уж тем
более IP-подсетей, к тому же эту плату надо вносить периодически. К
тому же, сейчас не каждый провайдер выдает реальные IP-адреса - к
примеру, у нас в городе три провайдера выдают виртуальные адреса
(192.168.x.x) и только один - реальные.
Если
же у Вас нет необходимости в установке Интернет-серверов, а подключение
локальной сети Вам нужно с обычными, "клиентскими" намерениями, то для
Вас есть другие, описанные далее способы, не требующие таких больших
затрат и, что самое главное, позволяющие подключить локальную сеть
через обычное подключение с одним внешним IP-адресом.
Подключение через NAT (IP-маскарадинг)
Технология
Network Address Translation (NAT) - "трансляция сетевых адресов"
позволяет нескольким машинам локальной сети иметь доступ к Интернет
через одно подключение и один реальный внешний IP-адрес.
Рассмотрим теоретически, как все это работает.
Для того, чтобы компьютера локальной сети могли устанавливать соединения с серверами сети Интернет, нужно, чтобы:
IP-пакеты, адресованные серверу в Интернет, смогли его достигнуть;
ответные IP-пакеты, идущие от сервера Интернет на машину в локальной сети, также смогли ее достигнуть.
С
первым условием проблем не возникает, а как быть со вторым? Ведь
компьютера локальной сети не имеют своего "реального" интернетовского
IP-адреса! Как же они могут получать IP-пакеты из Интернет?!
А
работает это следующим образом - на компьютере-шлюзе стоит программа
NAT-сервера. Компьютер-шлюз прописан на машинах локальной сети как
"основной шлюз", и на него поступают все пакеты, идущие в Интернет (не
адресованные самой локальной сети). Перед передачей этих IP-пакетов в
Интернет NAT-сервер заменяет в них IP-адрес отправителя на свой,
одновременно запоминая у себя, с какой машины локальной сети пришел
этот IP-пакет. Когда приходит ответный пакет (на адрес шлюза, конечно),
NAT определяет, на какую машину локальной сети его надо направить.
Затем в полученном пакете меняется адрес получателя на адрес нужной
машины, и пакет доставляется этой машине через локальную сеть.
Как
видим, работа NAT-сервера прозрачна для машин локальной сети (как и
работа обычного IP-маршрутизатора). Единственным принципиальным
ограничением этого метода подключения локальной сети к Internet
является невозможность установить _входящее_ TCP-соединение из Интернет
на машину локальной сети. Однако для "клиентских" сетей этот недостаток
превращается в достоинство, резко увеличивающее (по сравнению с первым
методом подключения) их защищенность и безопасность. Администраторы
некоторых провайдеров даже употребляют слова NAT и Firewall как
синонимы.
Однако есть одно "но": работа по
некоторым протоколам предполагает установку TCP-соединений по
инициативе сервера. Так, протокол FTP в стандартном варианте
предусматривает установку TCP-соединений от сервера к клиенту. Правда,
протокол FTP предусматривает так называемый "пассивный" режим (когда
все TCP-соединения инициирует компьютер-клиент), но далеко не со всеми
FTP-серверами можно в этом режиме работать. Поэтому программы
NAT-серверов предусматривают специальную обработку FTP-сеансов, также
вызывая установление этих соединений на себя. Это возможно, потому что
параметры этих соединений предсказуемы.
Вообще,
работать через NAT достаточно удобно. Одно время я полгода работал с
одним провайдером, не зная и не задумываясь, что вся его (провайдера)
сеть подключена к более крупной сети через NAT и имеет один внешний
IP-адрес. При этом связь работала очень даже быстро.
В
качестве NAT-сервера провайдеры также рекомендуют машину под
управлением UNIX-подобной системы. Из Windows-ов штатный NAT-сервис
имеет только Windows 2000 (насчет NT4 - не знаю). На Windows 95/98
можно использовать пакет NAT32.
Подключение через прокси-сервер
Это
самый простой тип подключения. При этом, строго говоря, никакой
маршрутизации IP-пакетов между локальной сетью и сетью Интернет не
происходит. Машины локальной сети работают с Интернет через
программу-посредник, так называемый прокси-сервер, установленный на
компьютере-шлюзе.
Основной особенностью
этого метода является его "непрозрачность". Если, скажем, в случае NAT
программа-клиент просто обращается к Интернет-серверу, не
"задумываясь", в какой сети и через какую маршрутизацию она работает,
то в случае работы через прокси-сервер программа должна явно обращаться
к прокси-серверу. Мало того, клиентская программа должна уметь работать
через прокси-сервер. Однако проблем с этим не возникает - все
современные и не очень браузеры умеют работать через прокси-сервера.
Другой
особенностью является то, что прокси-сервер работает на более высоком
уровне, чем, скажем, NAT. Здесь уже обмен с Internet идет не на уровне
маршрутизации пакетов, а на уровне работы по конкретным прикладным
протоколам (HTTP, FTP, POP3...). Соответственно для каждого протокола,
по которым должны "уметь" работать машины локальной сети, на шлюзе
должен работать свой прокси-сервер.
Некоторые
HTTP прокси-сервера умеют также работать с FTP-серверами. При этом
клиент пользуется обычным браузером и сам работает с таким прокси как
обычно, по протоколу HTTP. Однако такие прокси-сервера позволяют только
скачивать файлы с FTP-серверов и не позволяют их закачивать на сам
сервер (работают только "на прием"). Так что, если работа по FTP нужна,
скажем, для обновления веб-сайта, то придется использовать специальный
FTP-прокси и работать через него при помощи FTP-клиента (FTP Explorer,
CuteFTP и т.п.)
Эта "протокольная
зависимость" и есть основной недостаток этого метода подключения как
самостоятельного. Однако, с другой стороны, "маршрутизация" на таком
высоком уровне может дать и немалые преимущества.
Почти
каждый интернет-провайдер имеет один или несколько прокси- серверов,
через которые рекомендует работать своим клиентам. Несмотря на то, что
это совершенно необязательно (как правило, клиент провайдера может
обращаться к Интернет напрямую), это дает выигрыш в производительности,
а при повременной оплате, соответственно, экономить время он-лайн. Это
происходит потому, что прокси-сервера способны кэшировать (запоминать)
запрашиваемые пользователем документы, и при следующих к ним обращениях
выдавать копию из кэша, что быстрее, чем повторно запрашивать с
интернет-сервера. Кроме того, прокси-сервера могут быть настроены так,
что будут блокировать загрузку баннеров наиболее распространенных
баннерных служб, тем самым также (порой значительно) ускоряя загрузку
веб-страниц.
При установке HTTP прокси
сервера в локальной сети и работе через него за счет кэширования
экономится не только время, но и трафик - потому, что кэширование
происходит в самой локальной сети, "до" канала с провайдером, в котором
считается трафик (при оплате за объем перекачанной информации).
Выбор
прокси-серверов для локальной сети сегодня достаточно широкий. Есть
программные продукты, совмещающие в себе несколько прокси-серверов для
работы по разным протоколам. К таким относятся, например EServ и
WinGate.
EServ - это комплексный программный
продукт, содержащий в себе HTTP, FTP, SMTP/POP3, NNTP, SOCKS и другие
прокси-сервера. Кроме того, эта программа позволит Вам организовать в
локальной сети внутренний веб-сервер, FTP-сервер, электронную почту и
"локальные" группы новостей вашей организации - так, сказать, ваш
собственный "Интернет в миниатюре", довольно органично сочетающийся с
"большим Интернетом" :-) Так, Вы можете настроить локальный
"виртуальный" почтовый домен, при отправке на который письмо попадает
не в Интернет, а в локальный ящик другого пользователя. Аналогично
можно настроить и локальные группы новостей.
EServ
хорошо продуман для работы по коммутируемым модемным каналам связи,
позволяя экономить время подключения к Интернет и не дозваниваться
лишний раз. Так, он содержит встроенный планировщик, позволяющий,
скажем, через определенные интервалы времени запускать прием-отправку
внешней почты и синхронизацию групп новостей. Собственно, планировщик
является универсальным и пригоден не только для планирования заданий
EServ, но и запуска в назначенное время других программ.
Кроме
организации "локальных" служб, сервера в составе EServ позволяют
сделать более удобной работу с Интернет. Так, если вы оплачиваете у
своего интернет-провайдера почтовый домен (адрес EMail в виде
любое_имя@домен) то с помощью EServ Вы можете организовать разбор
принимаемой почты по локальным почтовым ящикам, из которых каждый
пользователь будет брать свою почту, заходя на POP3-сервер EServ под
своим логином и паролем.
WinGate - это тоже
комплексный прокси-сервер, позволяющий работать с Интернет по
протоколам HTTP, FTP, POP3, SMTP, SOCKS. Кроме этого, в нем реализована
интересная функция - Winsock Redirector, которая позволяет компьютерам
локальной сети работать с Интернет так, как если бы они имели на него
непосредственный выход, без использования NAT.
Winsock
Redirector состоит из серверной и клиентской частей. Серверная часть -
это соответствующий сервис WinGate, а клиентская называется WinGate
Internet Client и ставится на компьютера локальной сети из того же
дистрибутива, что и сервер WinGate. Клиентская часть интегрируется с
Winsock-библиотекой, реализующей протоколы TCP/IP в WIndows,
"перехватывает" вызов ее функций и вызывает через сервис
соответствующие функции WinSock на машине-шлюзе, направляя результаты
обратно на машину локальной сети. Через этот сервис нормально работает
даже FTP в обычном режиме! При этом на работу локальной сети WinGate
Internet Client не влияет. Однако он может конфликтовать с другими
программами, также использующими перехват функций библиотеки WinSock.
Но их "в природе" немного, в основном это FireWallы и антивирусы,
проверяющие принимаемую почту. Так, при включенном WinGate Internet
Client у меня не загружался SpiderMail из комплекта DrWeb 4.33. Однако
это, по-моему, не такой серьезный недостаток по сравнению с
возможностями.