Резюме: я думаю, что мне не хватает некоторых маршрутов на моем сервере Ubuntu, подключающемся к AWS VPN с помощью Strongswan Ipsec. Есть идеи, какие маршруты мне нужны на моем сервере?
Я пытаюсь настроить VPN с маршрутизацией BGP с сервера на AWS. У меня это работало со статической маршрутизацией VPN, поэтому я знаю, что моя сторона AWS и ipsec верны. Однако BGP оказывается сложным.
Я использую Strongswan на Ubuntu в качестве «клиентской» стороны. Мои туннели ipsec работают (подтверждено статус ipsec
и в консоли AWS). Проблема заключается в том, что мой клиент BGP (frr) не может подключиться к процессу BGP в AWS (и наоборот).
Взяв один из двух туннелей, IP а
выглядит так:
5: туннель1@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1419 qdisc состояние noqueue НЕИЗВЕСТНО группа по умолчанию qlen 1000
ссылка/ipip 1.2.3.4 партнер 2.3.4.5
инет 169.254.10.146 одноранговый узел 169.254.10.145/30 глобальный туннель1
valid_lft навсегда
Интерфейс создается с помощью скрипта, называемого Strongswan, который выглядит следующим образом:
IP-туннель добавить ${VTI_INTERFACE} локальный ${PLUTO_ME} удаленный режим ${PLUTO_PEER} ключ vti ${PLUTO_MARK_IN_ARR[0]}
sysctl -w net.ipv4.conf.${VTI_INTERFACE}.disable_policy=1
sysctl -w net.ipv4.conf.${VTI_INTERFACE}.rp_filter=2 || sysctl -w net.ipv4.conf.${VTI_INTERFACE}.rp_filter=0
IP-адрес добавить ${VTI_LOCALADDR} удаленный ${VTI_REMOTEADDR} dev ${VTI_INTERFACE}
IP-ссылка установлена ${VTI_INTERFACE} до mtu ${MTU}
iptables -t mangle -I FORWARD -o ${VTI_INTERFACE} -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
iptables -t mangle -I INPUT -p esp -s ${PLUTO_PEER} -d ${PLUTO_ME} -j MARK --set-xmark ${PLUTO_MARK_IN}
У меня есть такой маршрут:
169.254.10.144/30 devтуннель1 ссылка на область ядра прото src 169.254.10.146
Я могу пропинговать свой локальный (клиентский) конец (169.254.10.146), но пинг на удаленном конце говорит:
PING 169.254.10.145 (169.254.10.145) 56 (84) байт данных.
From 169.254.10.146 icmp_seq=1 Целевой хост недоступен
Несмотря на сообщение о том, что он недоступен, я вижу пакет на интерфейсе туннеля, хотя не похоже, что он фактически отправляется по туннелю в AWS (по крайней мере, статистика AWS Cloudwatch не показывает дополнительной активности).
Один из шагов отладки BGP — попытаться подключиться по telnet к соседу (169.254.10.145) через порт 179, но это не удается из-за «нет маршрута к хосту». Любопытно, что я вижу, как AWS пытается подключиться к моему BGP-клиенту в tcpdump на туннельном интерфейсе:
12:49:45.860899 IP 169.254.10.145.43731 > 169.254.10.146.179: флаги [S], seq 857645259, win 26880, параметры [mss 1375,sackOK,TS val 3261400514 ecr 0],nop,wscale 7
12: 49: 45.860931 IP 169.254.10.146.179> 169.254.10.145.43731: флаги [S.], SEQ 2284055933, ACK 857645260, Win 64249, Options [MSS 1379, Sackok, TS Vall 93642871313131313. ECR 3004141414. ], длина 0
Похоже, мой сервер возвращает пакет ACK, но соединение не устанавливается. Если я останавливаю службу BGP, мы начинаем отправлять RST-ответы:
12:52:02.055473 IP 169.254.10.145.43679 > 169.254.10.146.179: флаги [S], seq 2280717367, win 26880, параметры [mss 1375,sackOK,TS val 3261536708 ecr 0],nop,wscale 7
12:52:02.055498 IP 169.254.10.146.179 > 169.254.10.145.43679: Флаги [R.], seq 0, ack 1, win 0, длина 0
Исходя из этого, я предполагаю, что пакет ACK ядра и мой пакет ping проходят через туннельный интерфейс, но на самом деле не попадают в ipsec или не идут в AWS.
Тогда кажется, что мне нужно добавить какие-то дополнительные маршруты, но я не могу понять, что может потребоваться. Такое ощущение, что у меня уже все на месте. Я просмотрел бесчисленное количество примеров и инструкций, но лишь немногие из них показывают то, чего у меня нет, и еще меньше тех, кто подтверждает, что мне нужны именно те маршруты, которые, по моему мнению, мне нужны, или какие маршруты необходимы для работы BGP. Любая помощь очень ценится.