Почему для туннеля IPsec необходимы только 3 политики ip xfrm?


8

У меня есть туннель IPsec между strongswanсайтами и работает между экземпляром (v5.2.0) (сайт A) и RouterOSмаршрутизатором (сайт B). Все работает нормально, узлы в двух частных подсетях, настроенные для сайтов A ( 10.10.0.0/16) и B ( 10.50.0.0/16), могут нормально общаться друг с другом.

Что я не понимаю, хотя это следующий вывод ip xfrm policyна маршрутизаторе сайта А (общедоступные IP-адреса запутаны). Эти политики были созданы strongswan, я не устанавливал и не модифицировал их вручную:

ip xfrm policy 
src 10.50.0.0/16 dst 10.10.0.0/16 
    dir fwd priority 2947 ptype main 
    tmpl src <PUBLIC_IP_B> dst <PUBLIC_IP_A>
        proto esp reqid 1 mode tunnel
src 10.50.0.0/16 dst 10.10.0.0/16 
    dir in priority 2947 ptype main 
    tmpl src <PUBLIC_IP_B> dst <PUBLIC_IP_A>
        proto esp reqid 1 mode tunnel
src 10.10.0.0/16 dst 10.50.0.0/16 
    dir out priority 2947 ptype main 
    tmpl src <PUBLIC_IP_A> dst <PUBLIC_IP_B>
        proto esp reqid 1 mode tunnel

Существует политика для ввода и вывода, но только одна для пересылки (с сайта B на сайт A). Но я все еще могу успешно пинговать, например, 10.50.4.11из 10.10.0.89:

ping -R 10.50.4.11
PING 10.50.4.11 (10.50.4.11): 56 data bytes
64 bytes from 10.50.4.11: icmp_seq=0 ttl=62 time=10.872 ms
RR:     10.10.0.89
    10.50.0.1
    10.50.4.11
    10.50.4.11
    10.50.4.11
    10.10.0.2
    10.10.0.89

Интересная часть этой трассировки маршрута заключается в том, что маршрутизатор сайта A ( 10.10.0.2) отображается только на маршруте назад от цели ping, а маршрутизатор сайта B ( 10.50.0.1) указан только для исходящего маршрута.

Это подтверждает , что есть на самом деле нет необходимости вперед политика на маршрутизаторе узла А для перенаправления 10.10.0.0/16на 10.50.0.0/16через туннель IPsec, но я не понимаю , почему.

Спасибо за любые объяснения!

Ответы:


9

В FWD политика не автоматически генерируется ядром , но вместо того, чтобы получить установлен на манипуляция демона (strongSwan в данном случае).

Они необходимы для того, чтобы трафик передавался на хосты и позади хостов за шлюзом VPN в туннельном режиме.

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

Для исходящего трафика, который не был сгенерирован на самом шлюзе VPN, ищется политика fwd . Если пакет не был зашифрован, это не будет ошибкой, если не найдена соответствующая политика fwd . И если трафик передается между двумя туннелями, политика входящего fwd, установленная с одним, будет действовать как политика исходящего fwd для другого и наоборот. После этого ищется политика out, чтобы решить, следует ли туннелировать пакет. Вот почему политика FWD в исходящем направлении часто не требуется.

Однако, если, например, существует политика удаления / блокировки fwd с низким приоритетом, которая соответствует всему (например, чтобы избежать прохождения трафика через открытый текст, если не установлены туннели), политика fwd в исходящем направлении явно требуется, так как политика блокировки будет в противном случае отбросьте весь незашифрованный трафик. Вот почему strongSwan начал устанавливать политики fwd в обоих направлениях с 5.5.0 .


В предыдущей версии этого ответа говорилось, что единая (входящая) политика fwd является симметричной (т. Е. Что src и dst работают в любом направлении). Это не так, но, как объяснялось выше, во многих ситуациях это не имеет значения.


Понятно, очень интересно. Однако почему пакеты маршрутизируются через политику fwd, если адреса src и dest не совпадают? В приведенном выше примере исходящий пакет от моего ping имеет источник 10.10.0.89, но он обрабатывается политикой fwd, имеющей 10.50.0.0/16 в качестве селектора src ... [e]: Вы на самом деле ответили, сказав src и DST работает в обоих направлениях. Но тогда я думаю, что это не совсем аналогично тому, как работает цепочка FORWARD в iptables.
Дориан

Нет, не в отношении этой конкретной детали. Я пытался уточнить это предложение.
ecdsa

Спасибо, думаю, теперь я понимаю. Знаете ли вы какие-либо ссылки, где указаны такие детали реализации Linux IPsec?
Дориан

1
@dorian: К сожалению, единственная ссылка на Linux IPsec - это источник ядра.
SRobertJames
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.