Я намагаюся з’ясувати, що саме відбувається, коли я створюю тунель GRE.
Моя мережа виглядає так (-> означає безпосередньо підключений):
- Комп'ютер A (eth0: 10.0.1.1) ->
- (eth0: 10.0.1.2) Маршрутизатор B (eth1: 10.0.2.1) ->
- (eth0: 10.0.2.2) Маршрутизатор C (eth1: 10.0.3.1) ->
- (eth0: 10.0.3.2) Маршрутизатор D (eth1: 10.0.4.1) ->
- (ет.: 10.0.4.2) Комп'ютер E
Я виконав наступні команди на маршрутизаторі 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:
Трафік надходить у eth0 із призначенням 10.0.4.2.
Трафік спрямовується на новий інтерфейс Tunnel5: Викликаний правилом маршрутизації, який я додав (ip route add 10.0.4.2/32 через 192.168.33.3)
??? Магія ??? Якимось чином трафік інкапсулюється та направляється назад до маршрутизатора з новою адресою призначення 10.0.3.2
Звичайні правила маршрутизації OSPF призводять до того, що трафік виходить з етикету1 і переходить до місця призначення.
Що відбувається на кроці 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.
Просто здогадка.