У меня есть VPN типа "сеть-сеть", в которой одна подсеть находится на удаленной стороне, а две - на локальной:
conn site-to-site
leftsubnet = 10.10.0.0/16,10.11.0.0/16
rightsubnet = 10.50.0.0/16
Все работает нормально, но у меня проблема, когда "неправильный" локальный IP-адрес вставляется в таблицу маршрутизации strongSwan:
$ ip route show table 220
10.50.0.0/16 via <REDACTED> dev eth-ext src 10.11.0.1
strongSwan выбирает локальный IP-адрес 10.11.0.0/16
подсеть в качестве исходного IP-адреса для туннеля IPsec (т.е. 10.11.0.1
), но я бы хотел использовать второй (10.10.0.1
).
Я пробовал установить leftsourceip
к 10.10.0.1
, но, похоже, это не подействовало. Есть ли другой элемент конфигурации, который я могу использовать, чтобы указать strongSwan, какой локальный IP-адрес использовать в качестве исходного IP-адреса для своей таблицы маршрутизации?
Если вы не отключите установку маршрута через charon.install_routes
и вручную установить маршрут (до или после установления соединения), в настоящее время нет прямого способа контролировать это. Требуются ли в первую очередь конкретные маршруты (установленные strongSwan), зависит от существующих маршрутов и согласованных селекторов трафика.
strongSwan устанавливает маршрут для каждой локальной и удаленной подсети (выбирая исходный адрес в соответствующей локальной подсети), поэтому, если у вас есть несколько локальных подсетей, эти маршруты будут конфликтовать (все имеют одно и то же место назначения) и, в зависимости от версии strongSwan, либо первый или последний установленный маршрут останется в ядре. Таким образом, вы можете попробовать поэкспериментировать с порядком локальных подсетей, но это может не сработать, если их где-то изменить.
Чтобы вручную установить маршруты, когда установлен CHILD_SA, вверх вниз сценарий, или ребенок мероприятие предоставляется через VICI может быть использовано.
В заключение, leftsourceip
используется для виртуальный IP функция (т.е. запускает запрос виртуального IP от респондента).