Перейти к содержанию

Туннелирование IP#

Обзор технологий туннелирования#

Туннелирование IP - это механизм для инкапсуляции пакетов одного сетевого протокола в пакеты другого протокола. Пакеты инкапсулируемого протокола («пассажирский» протокол) вкладываются в пакеты транспортного протокола (протокола «носителя»). Инкапсулированный пакет перенаправляется в сеть назначения, затем извлекается вложенный пакет, который перенаправляется получателю.

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

  • туннели на основе протокола GRE (Generic Routing Encapsulation) могут быть использованы для транспортировки отличных от IP-протоколов таких как Novell IPX, Banyan VINES, AppleTalk и DECNet. Они также могут использоваться для переноса многоадресных и широковещательных передач, а также трафика протокола IPv6. Для того, чтобы иметь возможность включать туннельные интерфейсы GRE в состав мостовых групп, необходимо создать туннель GRE специального типа. Для этого используется параметр gre-bridge команды interfaces tunnel <tunx> encapsulation;
  • туннели IP-IP могут быть использованы только для переноса трафика протокола IPv4;
  • туннели SIT (Simple Internet Transition) могут быть использованы для транспортировки пакетов протокола IPv6 через сеть с транспортной технологией, поддерживающей только маршрутизацию IPv4.

Логические интерфейсы, которые отправляют пакеты IP в туннельном режиме, называются туннельными интерфейсами.

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

Следует помнить, что туннели GRE, IP-IP и SIT не обеспечивают безопасности передаваемых данных.

Туннели GRE#

Протокол GRE обеспечивает простой универсальный механизм инкапсуляции пакетов различных сетевых протоколов для их переноса другим протоколом. Исходный пакет («пассажирский» пакет) может относиться к одному из произвольных сетевых протоколов — например, это может быть многоадресный пакет, пакет IPv6 или пакет одного из отличных от IP LAN протоколов таких как AppleTalk, Banyan VINES или Novell IPX. В качестве транспортного протокола может быть использован один из маршрутизируемых IP-протоколов. Пакет пассажирского протокола первоначально инкапсулируется в пакет GRE, таким образом создается «туннель» GRE. Затем пакет GRE инкапсулируется в пакет транспортного протокола (протокола «носителя»), который затем перенаправляется в сеть назначения, после чего извлекается исходный пакет и доставляется адресату.

Протокол GRE может быть использован в следующих целях:

  • объединение сетей на базе не-IP-протоколов через глобальную сеть IP. Трафик отличных от IP-протоколов, таких как Novell IPX или Appletalk не может быть маршрутизован через сеть IP. Туннель GRE позволяет создать виртуальный канал типа «точка-точка» между двумя такими локальными сетями через ГВС;
  • маршрутизация пакетов IPv6 через сеть IPv4;
  • шифрование трафика при использовании многоадресной передачи. IPSec, который является стандартным механизмом для обеспечения безопасности в сетях IP, не может быть использован для шифрования трафика при многоадресной передаче. Однако многоадресные пакеты можно инкапсулировать в туннель GRE и затем маршрутизировать через соединение VPN, таким образом инкапсулированные пакеты будут защищены при помощи IPSec.

Туннели GRE не имеют контроля состояния, то есть протокол не имеет средств для автоматического отслеживания состояния или доступности оконечных узлов. Однако существует возможность отслеживать состояние другого оконечного узла, отправляя ему специальные сообщения, подтверждающие активность. Другое оконечное устройство считается неактивным, если оно перестает отвечать на данные сообщения.

GRE не имеет средств для обеспечения безопасности. Существует возможность настроить ключ на каждом из оконечных узлов туннеля, который позволяет оконечным точкам аутентифицировать друг друга. Но следует учитывать, что данный ключ передается в каждом пакете в открытом виде. В том случае если требуется обеспечить безопасность передаваемых данных, GRE может быть использован совместно с IPSec. GRE использует номер протокола IP 47.

Туннели GRE, которые могут быть включены в состав мостовой группы#

Одним из ограничений обычных туннелей GRE является то, что их нельзя включать в состав мостовых групп. Для того чтобы иметь возможность включения туннельных интерфейсов GRE в состав сетевого моста, необходимо создать туннель GRE специального типа, для этого используется параметр gre-bridge команды interfaces tunnel <tunx> encapsulation. Туннели такого типа должны быть использованы только в тех случаях, когда туннельные интерфейсы требуется включить в состав мостовой группы. Более подробная информация о настройке мостовых групп приведена в разделе Настройка мостов документа «Руководство администратора».

Туннели IP-IP#

Протокол инкапсуляции IP-IP определяет механизм, позволяющий вкладывать (инкапсулировать) пакет IP в другой пакет IP, используемый для транспортировки. Например, туннель IP-IP может быть использован для обеспечения прохождения пакетов многоадресной передачи через участок сети (например, туннель IPSec), который не поддерживает многоадресную маршрутизацию. Также туннель IP-IP может быть использован для того, чтобы повлиять на маршрутизацию пакета, или для доставки пакета на мобильное устройство с использованием Mobile IP.

При инкапсуляции IP-IP второй заголовок IP вставляется перед заголовком IP исходного пакета (пакета «пассажира»). В новом заголовке IP в качестве адресов отправителя и получателя указываются адреса оконечных точек туннеля. В заголовке IP исходного пакета указаны первоначальные отправитель и получатель. После того как инкапсулированный пакет приходит в оконечную точку туннеля, внутренний заголовок IP извлекается, и исходный пакет IP доставляется конечному получателю.

Механизм инкапсуляции IP-IP прост и надежен. Однако он имеет ряд ограничений:

  • при использовании туннелирования IP-IP не может быть инкапсулирован широковещательный трафик;
  • при использовании туннелирования IP-IP не может быть инкапсулирован трафик IPv6. Для доставки трафика такого вида может быть использовано туннелирование на базе GRE. Так же, как и GRE, туннелирование IP-IP не имеет средств для обеспечения безопасности передаваемых данных. В том случае если это необходимо, туннелирование IP-IP может быть использовано совместно с IPSec.

Протокол SIT#

Набор протоколов SIT (Simple Internet Transition) был разработан для обеспечения взаимодействия узлов IPv4 и узлов IPv6. Одним из механизмов, обеспечиваемых SIT, является механизм инкапсуляции пакетов IPv6 в пакеты IPv4 для транспортировки их через те сегменты сети, которые поддерживают только маршрутизацию на базе IPv4.

Для создания туннеля SIT используется параметр sit команды interfaces tunnel <tunx> encapsulation.

Туннельные интерфейсы и IPSec#

GRE, IP-IP и SIT туннели не шифруются и не обеспечивают никакой защиты помимо использования паролей, которые в свою очередь передаются открытым текстом в каждом пакете. Это означает, что GRE, IP-IP и SIT туннели сами по себе не обеспечивают адекватной защиты передаваемой информации.

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

  • поддержка стандартных эксплуатационных команд, например, show interfaces;
  • поддержка таких средств, как traceroute и SNMP;
  • динамическое переключение на другой туннель в случае отказа;
  • упрощенные политики IPSec и выявление неисправностей.

Для создания безопасных маршрутизируемых туннелей необходимо использовать туннели GRE, IP-IP и SIT совместно с подключением IPSec, таким образом, чтобы туннель IP был защищен при помощи туннеля IPSec. Пример настройки туннеля IPSec для обеспечения защиты туннеля GRE приведен в разделе Защита туннеля GRE с использованием IPSec.

Примечание

Механизм IPSec доступен только в исполнении Numa Edge VPN.

Туннельные интерфейсы и QoS#

В процессе маркировки трафика происходит кодирование трех старших битов поля ToS. Для туннелей сетевого уровня (туннелей типов GRE, IP-IP и SIT) производится копирование поля ToS из внутреннего во внешний пакет. Копирование поля ToS для туннелей канального уровня не осуществляется.

Для внешнего пакета также предусмотрена возможность принудительного указания значения 6 бит поля DSCP (Differencial Service Code Point) с помощью команды interfaces tunnel <tunx> dscp <значение>.

Настройка туннелирования#

В данном разделе приведены примеры настройки туннелей GRE.

Перед началом настройки#

В этом наборе примеров предполагается использование двух систем Numa Edge с именами узлов edge1 и edge2.

Все интерфейсы Ethernet, используемые в настройке туннеля, должны быть заранее настроены. В этом примере используется интерфейс eth1 на узле edge1 и интерфейс eth1 на узле edge2.

Настройка базового туннеля GRE#

В данном разделе приведены примеры настройки базового туннеля GRE между системами Numa Edge с именами edge1 и edge2. Сначала настраивается узел edge1, затем узел edge2. Для базового туннеля защита при помощи пароля не осуществляется: это значит, что он не обеспечивает безопасность передаваемых данных и не рекомендован к использованию в производственных условиях. После завершения настройки узлы будут настроены в соответствии с рисунком ниже.

gre1

Настройка базового туннеля GRE

Настройка узла edge1#

В примере ниже настраивается туннель GRE от узла edge1 к узлу edge2 через ГВС. В данном примере приведено создание туннельного интерфейса и оконечной точки туннеля на узле edge1:

  • туннельному интерфейсу tun0 на узле edge1 назначается IP-адрес 10.20.20.1 из сети 10.20.20.0/30;
  • в качестве адреса локальной оконечной точки туннеля (local-ip) в этом примере используется адрес 203.0.113.1, назначенный интерфейсу eth1;
  • в качестве IP-адреса удаленного оконечного узла туннеля (remote-ip) используется адрес 198.51.100.1 на узле edge2.

В примере ниже приведено создание туннельного интерфейса и оконечного узла туннеля на узле edge1. Для этого необходимо выполнить следующие действия на узле edge1 в режиме настройки.

Пример – Создание оконечного узла базового туннеля GRE на узле edge1#
  1. Создание туннельного интерфейса и назначение ему IP-адреса:
    [edit]
    admin@edge1# set interfaces tunnel tun0 address 10.20.20.1/30
    
  2. Указание IP-адреса источника для данного туннеля:
    [edit]
    admin@edge1# set interfaces tunnel tun0 local-ip 203.0.113.1
    
  3. Указание IP-адреса удаленного оконечного узла туннеля:
    [edit]
    admin@edge1# set interfaces tunnel tun0 remote-ip 198.51.100.1
    
  4. Указание режима инкапсуляции для туннеля:
    [edit]
    admin@edge1# set interfaces tunnel tun0 encapsulation gre
    
  5. Указание краткого текстового описания для туннеля:
    [edit]
    admin@edge1# set interfaces tunnel tun0 description "GRE tunnel to edge2"
    
  6. Фиксация настройки:
    [edit]
    admin@edge1# commit
    
  7. Вывод настройки:
    1
    2
    3
    4
    5
    6
    7
    [edit]
    admin@edge1# show interfaces tunnel tun0
        address 10.20.20.1/30
        description "Tunnel to edge2"
        encapsulation gre
        local-ip 203.0.113.1
        remote-ip 198.51.100.1
    
  8. Добавление статического интерфейсного маршрута к сети 192.168.20.0/24 через туннель:
    [edit]
    admin@edge1# set protocols static interface-route 192.168.20.0/24 next-hop-interface tun0
    
  9. Фиксация настройки:
    [edit]
    admin@edge1# commit
    

Настройка узла edge2#

В этом разделе приведена настройка оконечного узла туннеля на узле edge2:

  • туннельному интерфейсу tun0 на узле edge2 назначается IP-адрес 10.20.20.2 из сети 10.20.20.0/30;
  • в качестве адреса источника для оконечной точки туннеля (local-ip) в этом примере используется адрес 198.51.100.1;
  • в качестве IP-адреса удаленного оконечного узла туннеля (remote-ip) используется адрес 203.0.113.1 на узле edge1;
  • создается статический маршрут для обеспечения доступа к удаленной локальной сети через созданный туннель.

В примере ниже приведено создание оконечного узла туннеля на узле edge2. Для этого необходимо выполнить следующие действия на узле edge2 в режиме настройки.

Пример – Создание оконечного узла базового туннеля GRE на узле edge2#
  1. Создание туннельного интерфейса и назначение ему IP-адреса:
    [edit]
    admin@edge2# set interfaces tunnel tun0 address 10.20.20.2/30
    
  2. Указание IP-адреса источника для данного туннеля:
    [edit]
    admin@edge2# set interfaces tunnel tun0 local-ip 198.51.100.1
    
  3. Указание IP-адреса удаленного оконечного узла туннеля:
    [edit]
    admin@edge2# set interfaces tunnel tun0 remote-ip 203.0.113.1
    
  4. Указание режима инкапсуляции для туннеля:
    [edit]
    admin@edge2# set interfaces tunnel tun0 encapsulation gre
    
  5. Указание краткого текстового описания для туннеля:
    [edit]
    admin@edge2# set interfaces tunnel tun0 description "GRE tunnel to edge1"
    
  6. Фиксация настройки:
    [edit]
    admin@edge2# commit
    
  7. Вывод настройки:
    1
    2
    3
    4
    5
    6
    7
    [edit]
    admin@edge2# show interfaces tunnel tun0
        address 10.20.20.2/30
        description "Tunnel to edge1"
        encapsulation gre
        local-ip 198.51.100.1
        remote-ip 203.0.113.1
    
  8. Добавление статического интерфейсного маршрута к сети 192.168.40.0/24 через туннель:
    [edit]
    admin@edge2# set protocols static interface-route 192.168.10.0/24 next-hop-interface tun0
    
  9. Фиксация настройки:
    [edit]
    admin@edge2# commit
    

Настройка дополнительных параметров туннеля GRE#

В данном разделе приведены дополнительные параметры настройки для туннельных интерфейсов, определенных в предыдущем примере:

  • настраиваются ключи, позволяющие оконечным точкам аутентифицировать друг друга. Эти ключи должны совпадать на обоих оконечных узлах;
  • для каждого оконечного узла указываются значения TTL, DSCP и MTU;
  • к каждому туннельному интерфейсу применяется политика межсетевого экранирования.

Настройка узла edge1#

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

  • значение TTL для пакетов устанавливается равным 220, значение поля DSCP устанавливается равным 55, а значение MTU для пакетов устанавливается равным 1460;
  • к туннельному интерфейсу применяется две политики межсетевого экранирования:
  • набор tun0-fw-in применяется к пакетам, входящим через туннельный интерфейс;
  • набор правил tun0-fw-out применяется к пакетам, покидающим туннельный интерфейс.

В данном примере предполагается, что эти наборы правил заранее определены.

Так как настройку ключа аутентификации можно указать только при создании туннеля, в примере Добавление значений в настройку оконечного узла туннеля GRE на узле edge1 предполагается создание нового туннеля с параметрами из примера Создание оконечного узла базового туннеля GRE на узле edge1, ниже приведены только отличающиеся параметры.

Для настройки оконечной точки туннеля GRE, необходимо выполнить следующие шаги на узле edge1 в режиме настройки.

Пример – Добавление значений в настройку оконечного узла туннеля GRE на узле edge1#
  1. Установка TTL:
    [edit]
    admin@edge1# set interfaces tunnel tun0 ttl 220
    
  2. Установка DSCP:
    [edit]
    admin@edge1# set interfaces tunnel tun0 dscp 55
    
  3. Установка MTU:
    [edit]
    admin@edge1# set interfaces tunnel tun0 mtu 1460
    
  4. Применение правил межсетевого экрана к входящим пакетам:
    [edit]
    admin@edge1# set interfaces tunnel tun0 policy in firewall tun0‐fw‐in
    
  5. Применение правил межсетевого экрана к исходящим пакетам:
    [edit]
    admin@edge1# set interfaces tunnel tun0 policy out firewall tun0‐fw‐out
    
  6. Фиксация настройки:
    [edit]
    admin@edge1# commit
    
  7. Вывод настройки:
    [edit]
    admin@edge1# show interfaces tunnel tun0
        address 10.20.20.1/30
        description “Tunnel to edge2”
        dscp 55
        encapsulation gre
        firewall {
            in {
                name tun0‐fw‐in
            }
            out {
                name tun0‐fw‐out
            }
        }
        local-ip 203.0.113.1
        remote-ip 198.51.100.1
        mtu 1460
        ttl 220
    

Настройка узла edge2#

В примере Добавление значений в настройку оконечного узла туннеля GRE на узле edge2 приведены дополнительные параметры настройки для оконечного узла туннеля в системе edge2, созданного в примере Создание оконечного узла базового туннеля GRE на узле edge2:

  • значение TTL установлено равным 220, значение поля DSCP установлено равным 55, а значение MTU установлено равным 1460;
  • к туннельному интерфейсу применяются две политики межсетевого экранирования:
  • набор правил tun0-fw-in применяется к пакетам, входящим на туннельный интерфейс;
  • набор правил tun0-fw-out применяется к пакетам, покидающим туннельный интерфейс.

В данном примере предполагается, что эти наборы правил заранее определены.

Так как настройку ключа аутентификации можно указать только при создании туннеля, в примере Добавление значений в настройку оконечного узла туннеля GRE на узле edge2 предполагается создание нового туннеля с параметрами из примера Создание оконечного узла базового туннеля GRE на узле edge2, ниже приведены только отличающиеся параметры.

Для этого необходимо выполнить следующие действия на узле edge2 в режиме настройки.

Пример – Добавление значений в настройку оконечного узла туннеля GRE на узле edge2#
  1. Установка TTL:
    [edit]
    admin@edge2# set interfaces tunnel tun0 ttl 220
    
  2. Установка DSCP:
    [edit]
    admin@edge2# set interfaces tunnel tun0 dscp 55
    
  3. Установка MTU:
    [edit]
    admin@edge2# set interfaces tunnel tun0 mtu 1460
    
  4. Применение правил межсетевого экрана к входящим пакетам:
    [edit]
    admin@edge2# set interfaces tunnel tun0 policy in firewall tun0‐fw‐in
    
  5. Применение правил межсетевого экрана к исходящим пакетам:
    [edit]
    admin@edge2#  set interfaces tunnel tun0 policy out firewall tun0‐fw‐out
    
  6. Фиксация настройки:
    [edit]
    admin@edge2# commit
    
  7. Вывод настройки:
    [edit]
    admin@edge2# show interfaces tunnel tun0
        address 10.20.20.2/30
        description “Tunnel to edge1”
        dscp 55
        encapsulation gre
        firewall {
            in {
                name tun0‐fw‐in
            }
            out {
                 name tun0‐fw‐out
            }
         }
         key 101088
         local‐ip 198.51.100.1
         mtu 1460
         remote‐ip 203.0.113.1
         ttl 220
    

Объединение туннелей GRE в сетевой мост#

Для того чтобы включить туннельный интерфейс в состав сетевого моста, необходимо создать туннель GRE специального типа. Для этого используется параметр 1 команды interfaces tunnel <tunx> bridge-group bridge <brx>. Туннели такого типа должны быть использованы только в тех случаях, когда туннельные интерфейсы требуется включить в состав мостовой группы. Более подробная информация о настройке мостовых групп приведена в разделе Настройка мостов документа «Руководство администратора».