GRE (Generic Routing Encapsulation — общая инкапсуляция маршрутов) — протокол туннелирования пакетов, разработанный компанией Cisco. Основная задача этого протокола — создавать поверх обычного заголовка сетевого уровня новый IP-заголовок, который будет содержать в себе измененный IP-адрес.
Туннелирование — процесс, в ходе которого создается защищенное логическое соединение между двумя конечными точками посредством инкапсуляции различных протоколов. При туннелировании данные упаковываются вместе со служебными заголовками в новый «конверт» для обеспечения конфиденциальности и целостности всей передаваемой информации. Важно отметить, что протокол GRE не обеспечивает шифрование данных и таким образом не дает никаких гарантий безопасности при передаче данных. Для шифрования существуют другие протоколы, которые работают совместно с GRE. Достаточно популярен сегодня для таких целей IPSec.
Источник статьи: http://netclo.ru/osvaivaem-vpn-nastroyka-gre-tunnelya-na-cisco-chas/
Прежде всего рассмотрим ситуацию, которая пояснит в каких случаях применяется туннелирование. Вот есть у нас такая сеть.
В этой схемы две внутренних подсети — 192.168.1.0/24 и 192.168.3.0/24. Каждая из них подключена к маршрутизаторам, которые имеют выход в Интернет с публичными адресами 11.11.11.11 и 33.33.33.33 соответственно. Представим такую ситуацию, когда нам необходимо обеспечить связность между двумя подсетями (например, каждая подсеть — это офис одного предприятия). Локальные (серые) адреса в сети Интернет не маршрутизируются. Для настройки связности необходимо «поднять» на каждом из маршрутизаторов виртуальный туннель (interface Tunnel) и назначить этому туннелю свой IP-адрес (в данном примере используется подсеть 192.168.1.0/30). Также в туннеле указывается source и destination IP-адрес, которые соответствуют публичным адресам. Пример: для маршутизатора A source ip = 11.11.11.11, destination ip = 33.33.33.33. После чего, настраиваем статический маршрут с указанием, что все пакеты, которые имеют адрес назначения внутренней сети, должны пересылаться на созданный туннель.
Выше я описал настройку туннеля в общих словах. Далее я покажу пример настройки GRE-туннеля на конкретном оборудовании Cisco с подробными комментариями.
Конфигурация для Router A:
Router_A(config)#interface fastEthernet0/0 — настройка интерфейса в сторону LAN1
Router_A(config-if)#description LAN — описание интерфейса
Router_A(config-if)#ip address 192.168.1.1 255.255.255.0 — задаем шлюз для LAN1
Router_A(config-if)#no shutdown — включаем интерфейс
Router_A(config-if)#exit
Router_A(config)#interface fastEthernet0/1 — настройка порта в сторону Интернета
Router_A(config-if)#description Internet — описание интерфейса
Router_A(config-if)#ip address 11.11.11.11 255.0.0.0 — задаем публичный IP
Router_A(config-if)#no shutdown — включаем интерфейс
Router_A(config-if)#exit
Router_A(config)#interface Tunnel0 — настройка GRE-туннеля
Router_A(config-if)#ip address 192.168.2.1 255.255.255.252 — задаем IP для первой точки
Router_A(config-if)#tunnel source 11.11.11.11 — подменяем IP-адрес отправителя
Router_A(config-if)#tunnel destination 33.33.33.33 — подменяем IP-адрес получателя
Router_A(config-if)#exit
Router_A(config)#ip route 192.168.3.0 255.255.255.0 Tunnel0 — добавляем статический маршрут в сторону LAN2
Router_A(config)#ip route 0.0.0.0 0.0.0.0 11.11.11.12 — добавляем статический маршрут в сторону провайдера
Аналогичная конфигурация для Router B (без комментариев):
Router_B(config)#interface fastEthernet0/0
Router_B(config-if)#description LAN
Router_B(config-if)#ip address 192.168.3.1 255.255.255.0
Router_B(config-if)#no shutdown
Router_B(config-if)#exit
Router_B(config)#interface fastEthernet0/1
Router_B(config-if)#description Internet
Router_B(config-if)#ip address 33.33.33.33 255.0.0.0
Router_B(config-if)#no shutdown
Router_B(config-if)#exit
Router_B(config)#interface Tunnel0
Router_B(config-if)#ip address 192.168.2.2 255.255.255.252
Router_B(config-if)#tunnel source 33.33.33.33
Router_B(config-if)#tunnel destination 11.11.11.11
Router_B(config-if)#exit
Router_B(config)#ip route 192.168.1.0 255.255.255.0 Tunnel0
Router_B(config)#ip route 0.0.0.0 0.0.0.0 33.33.33.34
Для того, чтобы проверить работоспособность туннеля необходимо выполнить следующие команды.
Пример: проверка GRE-туннеля с RouterA на RouterB
Пингуем из первой подсети во вторую
RouterA>ping 192.168.1.2 source 192.168.3.2
Смотрим состояние туннеля
RouterA>show interface tunnel0
Результат вывода команды show interface Tunnel 0 на RouterA
Как видим туннель поднялся. Теперь проверим связность между компьютером из посети LAN1 и сервером из подсети LAN2.
Два пакета потерялись на ARP-запросе, а дальше пинг идет. Значит мы настроили туннель между двумя подсетями и имеем доступ к серверу.
Напоследок рассмотрим процесс инкапсуляции заголовка GRE в IP-пакет. Анализировать этот процесс удобно с помощью программы-анализатора трафика Wireshark. Ссылка на скачивание программы и инструкция.
GRE-заголовок накладывается «поверх» стандартного IP-пакета. При этом в самом GRE-заголовке содержится так называемый Tunnel IP Header. Именно в нем содержится информация о tunnel source и tunnel destination, которые ранее мы указывали при конфигурации маршрутизаторов. Данные адреса вкладываются в основной пакет, когда он отправляется в публичную сеть. В поле Control Information оригинального IP-пакета содержатся исходные IP-адреса источника и назначения. Таким образом, локальные серые IP-адреса скрыты в пакете, а в маршрутизации участвуют только те адреса которые мы указали в tunnel source и tunnel destination. При передаче пакета в локальную сеть GRE-заголовок отбрасывается и остается «чистый» IP-пакет.
А вот ISMP-запрос от компьютера из LAN1 к серверу LAN2. Пакет «пойман» на участке между маршрутизатором и Интернет. Видно, что стандартный IP-пакет инкапсулируется в GRE, который потом в свою очередь инкапсулируется в новый IP-пакет с адресами источника и назначения: 11.11.11.11 и 33.33.33.33 соответственно.
Как настроить IPSec для того, чтобы зашифровать туннель я напишу в следующей статье.
Источник статьи: http://netclo.ru/osvaivaem-vpn-nastroyka-gre-tunnelya-na-cisco-chas/