openswan несколько проблем маршрутизации подсетей

Я пытаюсь установить OpenSwan (2.6.32) на CentOS 6.5 (финал) для подключения удаленного шлюза VPC на облаке Amazon. Я разбудил туннель. Однако только трафик из/в последний диапазон IP, определенный в leftsubnets, направляется. Первые работы в течение краткой секунды (возможно, прежде чем второй туннель произошел), затем больше никакой маршрутизации. Ниже моя конфигурация.

conn aws-vpc
    leftsubnets={10.43.4.0/24 10.43.6.0/24}
    rightsubnet=10.43.7.0/24
    auto=start
    left=206.191.2.xxx
    right=72.21.209.xxx
    rightid=72.21.209.xxx
    leftid=206.191.2.xxx
    leftsourceip=10.43.6.128
    authby=secret
    ike=aes128-sha1;modp1024
    phase2=esp
    phase2alg=aes128-sha1;modp1024
    aggrmode=no
    ikelifetime=8h
    salifetime=1h
    dpddelay=10
    dpdtimeout=40
    dpdaction=restart
    type=tunnel
    forceencaps=yes

После запускают сервис IPsec:

# service ipsec status
IPsec running  - pluto pid: 8601
pluto pid 8601
2 tunnels up
some eroutes exist

# ip xfrm policy
src 10.43.6.0/24 dst 10.43.7.0/24 
dir out priority 2344 ptype main 
tmpl src 206.191.2.xxx dst 72.21.209.xxx
    proto esp reqid 16389 mode tunnel
src 10.43.7.0/24 dst 10.43.6.0/24 
dir fwd priority 2344 ptype main 
tmpl src 72.21.209.xxx dst 206.191.2.xxx
    proto esp reqid 16389 mode tunnel
src 10.43.7.0/24 dst 10.43.6.0/24 
dir in priority 2344 ptype main 
tmpl src 72.21.209.xxx dst 206.191.2.xxx
    proto esp reqid 16389 mode tunnel
src 10.43.4.0/24 dst 10.43.7.0/24 
dir out priority 2344 ptype main 
tmpl src 206.191.2.xxx dst 72.21.209.xxx
    proto esp reqid 16385 mode tunnel
src 10.43.7.0/24 dst 10.43.4.0/24 
dir fwd priority 2344 ptype main 
tmpl src 72.21.209.xxx dst 206.191.2.xxx
    proto esp reqid 16385 mode tunnel
src 10.43.7.0/24 dst 10.43.4.0/24 
dir in priority 2344 ptype main 
tmpl src 72.21.209.xxx dst 206.191.2.xxx
    proto esp reqid 16385 mode tunnel

Я не думаю, что брандмауэр играет любую роль здесь, когда я выключил его полностью только для проверения соединений. маршруты работают как ожидалось также. Если я определяю единую сеть на левой стороне, индивидуально на разделенном тестовом соединении, я могу достигнуть любого подсети. Только то, когда я определяю leftsubets, затем, какой бы ни диапазон является последним, будет направлено в конце. Какой бы ни на первом месте, работы в течение краткой секунды, прежде чем это прекратило направлять.

Я не мог найти, что у кого-либо в Интернете есть подобная проблема... кто-то может просветить меня?

удачи,

филиал

3
задан 31 January 2014 в 19:55
3 ответа

Когда вы используете leftsubnets , вы должны использовать rightubnet , а не rightubnet . Как указано на http://linux.die.net/man/5/ipsec.conf :

Если оба leftsubnets = и rightsubnets = определена, будут созданы все комбинации туннелей подсети.

5
ответ дан 3 December 2019 в 05:27

Попробуйте использовать:

leftsubnets={10.43.4.0/24,10.43.6.0/24,}

вместо:

leftsubnets={10.43.4.0/24 10.43.6.0/24}

Примечание: добавьте две запятые. После первого и последнего тоже.

1
ответ дан 3 December 2019 в 05:27

Это связано с ошибкой в ​​том, как реализация IPSec в AWS обрабатывает SPI (индексы параметров безопасности). Вы можете подробно прочитать об этом на веб-сайте libreswan , но в результате libreswan работает с двумя диапазонами, устанавливая два туннеля (в вашем случае, вероятно, aws-vpc / 1x1 и aws-vpc / 1x2 ). OpenSWAN и StrongSWAN делают то же самое.

Каждый из этих туннелей имеет свою собственную SA (ассоциацию безопасности), каждый из которых идентифицируется парой SPI, один для трафика, который вы отправляете (ваш SPI), а другой для трафика, отправляемого Amazon (их SPI). Amazon, несмотря на то, что установил свой SPI # 1 для любого туннеля, появляющегося первым, заменяет его на SPI # 2, когда появляется второй туннель (вместо того, чтобы сохранить SPI # 1 для туннеля 1 и использовать SPI # 2. просто для туннеля два, как надо). Трафик отправляется в первый нижний туннель AWS с использованием вашего SPI №1, но Amazon шифрует ответы своим SPI №2, что, естественно, приводит к сбою расшифровки трафика на вашей стороне.

Вот почему первый туннель работает очень недолго, пока не появится второй туннель. Если через некоторое время вы заставите на своей стороне регенерацию SPI для туннеля 1, он начнет работать, но новый SPI № 1 Amazon заменит их старый SPI для туннеля 2, а туннель 2 перестанет работать, как только туннель 1 возобновит обслуживание. .

Я сталкивался с этим дважды с разницей в несколько лет, последний раз вчера, поэтому я не думаю, что AWS сможет это исправить. Похоже, что это не влияет на коммерческие реализации IPSec (или AWS уже исправил бы это к настоящему времени), я предполагаю , потому что они действительно не имеют концепции туннелей между подсетями, а просто объединяют кучу все туннели хост-хост используют одни и те же SPI. Однако это только предположение.

Изменить : как ни странно, благодаря тому, что я потратил неделю на работу над этим для клиента, у которого был хороший контракт на поддержку AWS, я теперь подтвердил, что libreswan сказал о последнем SPI, неправильно заменяющем любые ранее установленные. . Amazon также подтвердила, что они это делают, и что одна сущность vpn- может, по их мнению, поддерживать только одну пару SPI. Их совет - настроить S / WAN так, чтобы создавался только один туннель, а затем направлять по нему трафик к определенным адресатам.

К счастью, libreswan теперь поддерживает это в версии 3.18 или новее, при условии, что у вас достаточно новое ядро ​​Linux. Я могу подтвердить, что CentOS 7 удовлетворяет обоим пунктам.

Их подробное описание в их вики , но в результате вы устанавливаете туннель с очень широкими диапазонами источника и назначения ( 0.0.0.0/0 ), используя Linux Virtual Устройство туннельного интерфейса ( vti ), затем скажите libreswan не настраивать маршрутизацию через него ( vti-routing = no ). Затем вы можете выбрать места назначения для достижения через этот туннель с помощью простых операторов маршрута ( ip route add 10.0.0.0/8 dev vti01 ).

У меня это работает в производстве. Он даже поддерживает несколько одновременных туннелей, более поздние из которых используют различные параметры конфигурации mark = и vti-interface = . Amazon также теперь поддерживает связывание VPN с транзитным шлюзом (TGW), с которым, в свою очередь, могут быть связаны многие VPN в одном регионе AWS, поэтому вам действительно нужен только один VPN на регион AWS, который можно масштабировать.

3
ответ дан 30 January 2020 в 06:07

Теги

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