Strongswan IPv6 туннельная маршрутизация

1379
Krakonos

Я пытаюсь решить странную проблему в маршрутизации. У меня настроен роутер (Turris, работает под заказ OpenWRT) с туннельным соединением Strongswan ipv6. Это прекрасно работает для самого маршрутизатора, так как его подключение к ipv6 работает нормально (через туннель мой провайдер не предлагает собственный ipv6).

TL; DR: маршруты выбраны не так, как я ожидал, так как наиболее общий, :: / 0, кажется, всегда предпочтительнее, хотя доступно соответствие / 64.

Но когда я попытался распространить это на мою домашнюю сеть, я наткнулся на проблему, и я не могу найти причину.

Хотя ipsec работает, я получаю интерфейс ipsec0 и эти маршруты:

Kernel IPv6 routing table Destination Next Hop Flags Metric Ref Use Iface ::/0 :: U 1024 0 2 ipsec0  2a01:490:19:42::/64 :: U 1024 0 0 br-lan  

Здесь 2a01: 490: 19: 42 :: / 64 - это рейтинг, который я выделил для своей локальной сети, 2a01: 490: 19: 42 :: 1 - это IP-адрес маршрутизатора в этой сети.

Вот некоторые наблюдения:

1) Когда я пингую 2a01: 490: 19: 42 :: 1 с компьютера в моей локальной сети, маршрутизатор отвечает, но отправляет ответ в интерфейс ipsec0. Понятия не имею почему. Не следует ли отдать предпочтение более конкретному префиксу 2a01: 490: 19: 42 :: / 64 на br-lan? Кажется, правильно выбрать исходный IP-адрес 2a01: 490: 19: 42 :: 1.

2) То же самое происходит, когда я пытаюсь отправить пакет из моей локальной сети на другой сайт, например ping6 stackexchange.com. Пакеты попадают на маршрутизатор, пересылаются, сервер отправляет ответ, маршрутизатор получает его ... и отправляет обратно в интерфейс ipsec0.

3) Нет политики xfrm. ip xfrm polничего не возвращает. Но Strongswan работает, и у меня сложилось впечатление, что Strongswan всегда создает определенные политики. В моей предыдущей настройке мне пришлось добавить некоторые из них, чтобы разрешить передачу пакетов в туннель, но я немного озадачен тем, что список политик пуст.

Хорошо, так что не так? Почему наиболее общий маршрут :: / 0 предпочтителен для моих пакетов ipv6?

Спасибо!

0

1 ответ на вопрос

0
Krakonos

Проблема была в том, что ipsec вставил свои правила в другую таблицу маршрутизации (table 220) и создал политику для направления туда трафика:

root@turris:/etc/config# ip rule list 0: from all lookup local  220: from all lookup 220  32766: from all lookup main  32767: from all lookup default  

Но таблица 220содержала только маршрут по умолчанию в туннель ipsec, а не локальную сеть:

root@turris:/etc/config# ip -6 r show table 220 default dev ipsec0 proto static src 2a01:490:19:42::1 metric 1024  

Что неизбежно привело к пересылке всех пакетов в туннель.

Сеть для самого роутера работала только потому, что они были приняты, а не маршрутизированы.

Я исправил это, приказав strongswan вставить правила маршрутизации в основную таблицу, установив charon.routing_table = 254(идентификатор main, как видно на рисунке /etc/iproute2/rt_tables). Мой strongswan.confсейчас выглядит так:

charon { # load_modular = yes plugins { include strongswan.d/charon/*.conf } routing_table = 254 # main } 

Похожие вопросы