Назад | Перейти на главную страницу

Как маршрутизируется мой пакет с туннелем GRE?

Я пытаюсь понять, что именно происходит, когда я создаю туннель GRE.

Моя сеть выглядит так (-> означает прямое подключение):

Я выполнил следующие команды на маршрутизаторе B:

ip tunnel add Tunnel5 mode gre local 10.0.2.1 remote 10.0.3.2
ifconfig Tunnel5 192.168.33.2 netmask 255.255.255.0 up
ip route add 10.0.4.2/32 via 192.168.33.3

со следующей информацией о подключении:

conn routerD_eth0
    type=tunnel
    authby=secret
    left=10.0.2.1
    leftsubnet=10.0.2.1/32
    right=10.0.3.2
    rightsubnet=10.0.3.2/32
    auto=start

И эквивалент на маршрутизаторе D:

ip tunnel add Tunnel5 mode gre local 10.0.3.2 remote 10.0.2.1
ifconfig Tunnel5 192.168.33.3 netmask 255.255.255.0 up
ip route add 10.0.1.1/32 via 192.168.33.2

с участием

conn routerb_eth1
    type=tunnel
    authby=secret
    left=10.0.3.2
    leftsubnet=10.0.3.2/32
    right=10.0.2.1
    rightsubnet=10.0.2.1/32
    auto=start

Вот что я могу наблюдать на маршрутизаторе A, если я пингую с компьютера A на компьютер B:

  1. Трафик входит в eth0 с пунктом назначения 10.0.4.2.

  2. Трафик направляется на новый интерфейс Tunnel5: вызвано добавленным мной правилом маршрутизации (ip route add 10.0.4.2/32 через 192.168.33.3)

  3. ??? Магия ??? Каким-то образом трафик инкапсулируется и направляется обратно к маршрутизатору с новым адресом назначения 10.0.3.2.

  4. Обычные правила маршрутизации OSPF заставляют трафик идти от eth1 к месту назначения.

Что происходит на шаге 3?

Дополнительная информация

Некоторые команды и их выходные данные выполняются на маршрутизаторе A:

$ ip tunnel show
Tunnel5: gre/ip remote 10.0.3.2 local 10.0.2.1

$ setkey -DP
10.0.3.2[any] 10.0.2.1[any] 255
    ...
    /esp/tunnel/10.0.3.2-10.0.2.1/unique:3
    ...

10.0.2.1[any] 10.0.3.2[any] 255
    ...
    /esp/tunnel/10.0.2.1-10.0.3.2/unique:3
    ...

Теория

Маршрутизатор просто знает, основываясь на информации в «ip tunnel show», что трафик, направляемый в Tunnel5, должен быть инкапсулирован с новыми адресами источника и назначения.

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

Затем пакет направляется на маршрутизатор C на основе таблицы маршрутизации.

Просто предположение.

Когда пакет входит в маршрутизатор, он направляется через туннельный интерфейс из-за вашего статического маршрута. маршрутизатор инкапсулирует пакет в пакет GRE с пунктом назначения 10.0.3.2. Затем маршрутизатор направляет этот пакет в соответствии с таблицей маршрутизации (т. Е. Из eth 1). Когда он попадает в маршрутизатор D, пакет декапсулируется и затем маршрутизируется в обычном режиме.