Openswan не работает с несколькими правыми подсетями

14

Я пытаюсь использовать Openswan (версия 2.6.37) для подключения IPsec VPN из моей локальной сети к удаленному сайту. Все отлично работает, когда я просто хочу подключиться к одной подсети на удаленном сайте. Однако на удаленном сайте также есть дополнительная подсеть, к которой я хочу получить доступ.

Это моя конфигурация:

conn myConn
        type=tunnel
        left=192.168.139.14
        leftsubnet=192.168.139.0/24
        leftxauthclient=yes
        right=X.X.X.X
        rightsubnet=172.16.1.0/24
        keyexchange=ike
        auth=esp
        authby=secret
        phase2alg=3des-sha1
        pfs=yes

Когда я заменить rightsubnetс rightsubnets, например , так:

rightsubnets={172.16.1.0/24 192.168.3.0/24}

... тогда соединение создано успешно, но доступна только последняя подсеть в списке. Любые попытки пропинговать что-либо в 172.16.1.0подсети не удаются. Если я поменяю порядок подсетей, то я могу пропинговать, 172.16.1.Xно ничего не могу пропинговать в другой подсети. Как будто Openswan использует только последнюю подсеть в списке для создания соединения.

Я что-то здесь не так делаю?

Немного дополнительной информации, о которой я не упомянул (хотя я не уверен, что это актуально): мой клиент Openswan находится за маршрутизатором, использующим NAT, и у меня есть nat_traversal=yesв моем ipsec.confфайле.

FixMaker
источник
Вы используете VLAN? У меня была почти точно такая же проблема, и проблема заключалась в ошибке VLAN
Вы пытались создать две ассоциации безопасности, по одной для каждой подсети?
Gimmesudo
@ Тайк, нет, я не использую VLAN. Мой OpenSwan-клиент находится за маршрутизатором, использующим NAT - я обновил вопрос, чтобы отразить это.
FixMaker
@gimmesudo: я попытался дублировать мою конфигурацию выше для нового соединения ( connection myConn2), со всем идентичным, за исключением rightsubnet. Когда я использую, ipsec auto --up myConnя могу пинговать 172.168.1.X. Когда я пытаюсь установить второе соединение ( ipsec auto --up myConn2), я могу пропинговать 192.168.3.X, но первое соединение полностью умирает.
FixMaker
Для подключения в качестве клиента на многих маршрутизаторах IPSec (например, Cisco), вы будете использовать проще vpnc!
Ф. Хаури

Ответы:

3

Похоже, что обычный разделитель для нескольких подсетей - это запятая , но по крайней мере openswan-2.6.32 работает и с пробелами.

Должна быть зарегистрирована интересная информация, /var/log/secureкоторая может содержать подсказки, почему она не работает. Также опубликовать вывод ip x s shи ip x p sh.

skarap
источник
Если вы попытались переключиться с одного хоста на несколько хостов, обратите внимание, что ключ для нескольких подсетей находится во множественном числе ( rightsubnet*s*), а не в единственном числе.
mgarciaisaia
1

Выполните connнастройку раздела для каждой подсети ОБА конечных точек туннеля. Только один из них (первый запущенный) начнет согласование SA, второй (или более) создаст только новый SPD для дальнейших подсетей.

Эндре Сабо
источник
К сожалению, я не могу сделать это, поскольку удаленная конечная точка является сторонним маршрутизатором FortiGate (не работает OpenSwan). Я начинаю задаваться вопросом, может ли проблема быть связана с тем, что маршрутизатор не может справиться с несколькими туннелями между одними и теми же конечными точками.
FixMaker
1

Если вы используете, rightsubnetsвы должны использовать, leftsubnetsа не leftsubnet. Даже если на этой стороне есть только одна подсеть. Страница man ipsec.conf не очень хорошо объясняет это, но она есть.

У меня были месячные проблемы, и я нашел ответ здесь: /server/571352/openswan-multiple-subnets-routing-issue.

exor314
источник
1
Не тот случай. leftsubnet = {singletone}, должен быть идентичен leftsubnet =. (Я написал код)
mcr
Это было решение, которое работало для меня, используя libeswan 3.15. У меня слева была одна подсеть, а справа - несколько. Если я сконфигурировал левый, используя leftsubnet =, а правый, используя rightsubnets = {}, то будет подключена только последняя правая подсеть. Как только я настроил слева использовать leftsubnets = {} с одной подсетью, он подключился ко всем.
Адам Пламб
1

Похоже, что в OpenSwan есть ошибка, когда списку подсетей в конце нужна дополнительная запятая для корректной работы. Пытаться:

rightsubnets={172.16.1.0/24,192.168.3.0/24,}

Обратите внимание на лишнюю запятую в конце.

Райан Шиллингтон
источник
Это не так, ни у одного из тестовых случаев или примеров нет лишней запятой.
MCR
-3

Так должно быть

rightsubnets={172.16.1.0/24,192.168.3.0/24}

Используйте запятую ( ,), а не пробел для разделения записей.

Мадху
источник
1
Похоже, именно так говорит ответ двухлетней давности.
G-Man говорит: «Восстановите Монику»