Generic Routing Encapsulation, создание GRE туннелей

GRE – Сетевой протокол от компании CISCO Systems для туннелирования соединений, путем инкапсуляции пакетов сетевого уровня в IP пакеты. С помощью протокола GRE создается непрерывное соединение между двумя узлами ( маршрутизаторами ), через общедоступную сеть. Протокол GRE может быть использован для создания простой частной сети (VPN), между пользователями, подключенными через сеть провайдера, или между пограничными маршрутизаторами с среде провайдера, для обмена обновлениями таблиц маршрутизации.
Имейте в виду, что данный протокол не поддерживает шифрование данных на маршруте, если для вас это критично и основной приоритет безопасность, лучше его не использовать.
Операционная система FreeBSD, полностью поддерживает создание и управление туннелями, протокола GRE. Поддержка GRE, осуществляется на уровне ядра, соответствующую опцию можно включить в конфигурации ядра на стадии конфигурирования и последующей компиляции, если-же по каким-либо причинам это не сделано, при попытке активировать GRE устройство, в ядро динамически будет загружен необходимый модуль ( if_gre.ko ). Самый простой способ создать GRE интерфейс, использовать программу ifconfig, например командой:
# ifconfig gre0 create 
будет создан интерфейс с именем gre0, если при создании интерфейса, не указывать номер устройства, будет назначен первый свободный, например, gre0 у нас уже есть, теперь, командой:
# ifconfig gre create
будет создан интерфейс с именем gre1, как видите команда ifconfig назначила первый свободный номер. С помощью той-же команды ifconfig, можно удалить не используемый интерфейс:
# ifconfig gre1 destroy
Теперь, когда интерфейс GRE создан, нужно настроить всех участников соединения, делается это с помощью все той-же команды ifconfig. Предположим, нам нужно настроить туннель между хостами А и Б, схема выглядит следующим образом: схема gre туннеля Для начала создаем интерфейс gre0 на хосте А и назначаем конечные точки туннеля:
# ifconfig gre0 create
# ifconfig gre0 192.168.10.1 192.168.10.2 netmask 255.255.255.0 
# ifconfig gre0 tunnel 10.0.2.1 10.0.1.1
На хосте Б делаем то-же самое, используя соответствующие адреса:
# ifconfig gre0 create
# ifconfig gre0 192.168.10.2 192.168.10.1 netmask 255.255.255.0
# ifconfig gre0 tunnel 10.0.1.1 10.0.2.1
  • Первой строкой, вышеприведенных команд, мы создаем интерфейс gre0.
  • Второй, назначаем интерфейсу IP адреса, для текущего хоста и для другого конца туннеля.
  • И наконец в третьей строке устанавливаем туннель между хостами, здесь нужно использовать реальные IP адреса сетевых интерфейсов.
Посмотрим настройки туннеля на хосте А:
# ifconfig gre0
gre0: flags=9051metric
0 mtu 1476
tunnel inet 10.0.2.1 --> 10.0.1.1
inet 192.168.10.1 --> 192.168.10.2 netmask 0xffffff00
Значение MTU, будет высчитано и назначено автоматически с учетом GRE протокола. Теперь, когда интерфейсы туннеля подняты ( запущены, приведены в состояние UP ), можно проверить соединение пропинговав с хоста А, командой ping, IP адрес туннеля, хоста Б:
# ping -c3 192.168.10.2PING 192.168.10.2 (192.168.10.2): 56 data bytes
64 bytes from 192.168.10.2: icmp_seq=0 ttl=128 time=0.359 ms
64 bytes from 192.168.10.2: icmp_seq=1 ttl=128 time=2.512 ms
64 bytes from 192.168.10.2: icmp_seq=2 ttl=128 time=0.196 ms
--- 192.168.10.2 ping statistics --- 3 packets transmitted, 3 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 0.196/1.022/2.512/1.055 ms
Итак, мы довольно быстро подняли туннель, с помощью протокола GRE, между хостом А и Б. Тоже самое можно проделать и на маршрутизаторах ( CISCO или Juniper ). В данном примере мы создавали туннель вручную, этого вполне достаточно что-бы «потренироваться на кошках», но что-бы соединение было постоянным, то есть, после перезагрузки настраивалось автоматически, нужно дописать в стартовый скрипт /etc/rc.d следующие строчки:
cloned_interfaces="gre0" ifconfig_gre0="inet inet 192.168.10.1 192.168.10.2 netmask 255.255.255.0 tunnel 10.0.2.1 10.0.1.1"
Таким образом, с помощью переменной cloned_interfaces можно назначить столько туннелей, сколько вам нужно, и обратите внимание, во второй строке мы объединили 2 команды в одну, то-же самое можно сделать и через командную строку.

Комментарии

Не понятно какой внешний а какой внутренний интерфейс из-за этого каша.

а вот тут для ключа tunnel используются другие адреса

http://sshd.su/pages/viewpage.action?pageId=819203

где правда ?

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
Регистр имеет значение
  .ooooo.                 ooooooooo.       oooo                          
888' `Y88. `888 `Y88. `888
888 888 oooo oooo 888 .d88' 888 .oooooooo ooo. .oo.
`Vbood888 `888 `888 888ooo88P' 888 888' `88b `888P"Y88b
888' 888 888 888`88b. 888 888 888 888 888
.88P' 888 888 888 `88b. 888 `88bod8P' 888 888
.oP' `V88V"V8P' o888o o888o .o. 88P `8oooooo. o888o o888o
`Y888P d" YD
"Y88888P'
Введите код, изображенный в стиле ASCII-арт.