Туннель

Материал из Wikipedia

Перейти к: навигация, поиск

Туннель - это механизм позволяющий объединить две удалённые и не связанные физически сети в единую логическую структуру. Если говорить простыми словами, то туннель является отдельным виртуальным проводом, протянутым от одного компьютера к другому.

Содержание

Как это работает?

Представьте себе шоколадные конфеты на фабрике которые оборачиваются в фантики, в туннеле происходит именно так. Каждый исходящий пакет оборачивается (инкапсулируется) в другой IP-(или GRE-) пакет, а в поле "протокол" ставится пометка в виде цифры (47 для GRE или 4 для IPIP). При этом размер каждого пакета, который будет отправлен к другому концу туннеля увеличивается на 20 байт (как раз из-за той самой обертки), по сравнению с обычным траффиком.

Применение

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

Использование туннелей позволяет также решить проблему реализации единой транспортной среды в сети коллективного доступа для предоставления услуг различным клиентам несколькими провайдерами. То есть независимо от места подключения клиента к единой транспортной сети, он может быть соединён туннелем и получать услуги от конкретного провайдера.

Туннель является постоянным типом подключения и, в отличие от сеансовой связи (VPN, Dial-up), требует наличия постоянных IP-адресов на двух компьютерах между которыми он устанавливается и не подходит для клиентов использующих GPRS, VPN, *DSL или Dial-Up без постоянного адреса, в качестве исходящего канала.

Примеры использования

Существует несколько различных способов организации туннелей. В семействе операционных систем Unix реализованы IP Encapsulation within IP и IP Encapsulation within GRE в cоответствии с RFC, в Windows же такая поддержка отсутсвует, либо требует хорошего знания операционной системы и принципов работы Интернет, а также установки сторонних программ и драйверов, которые поддерживаются только их авторами (исключение составляет Windows 2000 Server SP4. В этой операционной системе есть возможность настроить IPIP туннель используя службу RRAS). IPIP и GREIP туннели также обеспечиваются маршрутизаторами Cisco.

Практически, туннель реализуется в виде соединения точка-точка (P2P) между двумя маршрутизаторами. Весь поток, проходящий через такой линк, инкапсулируется в IP пакеты (или GRE, в зависимости от выбранного протокола) и доставляется к конечной точке линка через уже существующую транспортную среду. Для конфигурации туннеля необходимы 4 параметра:

  • адрес локального конца P2P линка
  • адрес удалённого конца P2P линка
  • адрес источника, подставляемый в исходящих пакетах
  • адрес получателя, подставляемый в исходящих пакетах

Адреса P2P линка устанавливаются с помощью команды ifconfig для интерфейса tunN

Внимание: в приведенном примере IP адреса некорректны и реально существовать не могут. Это сделано умышленно, для предотвращения использования конкретно этого примера в реальной жизни. При конфигурации собственного туннеля следует использовать другие IP адреса: предварительно согласованные с владельцем другой стороны туннеля, либо выданные провайдером по вашему запросу.

ifconfig tun0 10.120.120.2 pointopoint 10.120.120.1 up

Все остальные параметры задаются с помощью команды tun:

ip tun add tun0 mode ipip local 323.323.323.323 remote 545.545.545.545 ttl 255

В данном примере конфигурируется туннель с адресами 10.120.120.2 → 10.120.120.1 Исходящие пакеты будут упаковываться в IP- (или GRE-) дэйтаграммы и отправляться по адресу 545.545.545.545 (для GRE-IP тоже самое, только меняется mode ipip на mode gre)

При этом важно, чтобы адрес 545.545.545.545 был безусловно доступен через какой-либо другой интерфейс маршрутизатора, кроме самого туннеля. Скорее всего, для этого потребуется использование явной статической маршрутизации (это является обязательным условием при использовании спутникового доступа в Интернет)

route add host 545.545.545.545 gw <текущий шлюз по умолчанию>

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

tunX: looping... 

В качестве адреса источника будет подставляться адрес 323.323.323.323 Адрес 545.545.545.545 должен быть действительным адресом одного из интерфейсов маршрутизатора и быть доступным со стороны удалённого конца P2P линка через имеющуюся сеть.

С обратной стороны P2P линка все настройки выглядят в точности наоборот:

ifconfig tun0 10.120.120.1 pointopoint 10.120.120.2 up
ip tun add tun0 mode ipip local 545.545.545.545 remote 323.323.323.323 ttl 255

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

interface Tunnel0 
 ip address 10.120.120.1 255.255.255.252 
 tunnel source 545.545.545.545
 tunnel destination 323.323.323.323
 tunnel mode ipip


Какой туннель лучше?

IPIP или GREIP?

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

Инкапсулированный или нет? В чем разница?

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

См. Также.

Личные инструменты