Вопрос или проблема
Существует организация, для которой мне нужно настроить IPsec туннель.
У этой организации есть внутренний фаервол.
У меня есть виртуальная машина, которая находится за пределами организации в Интернете.
На виртуальной машине установлена AlmaLinux 9.
Я выбрал “Libreswan” в качестве своего решения для IPsec. Самое простое. Не “strongSwan”, потому что оно, по всей видимости, более сложное и не так хорошо интегрировано в RHEL, как “Libreswan”.
Я хочу, чтобы моя виртуальная машина соединялась с фаерволом.
И мы хотим построить туннель между внутренней и внешней сетью через IPsec.
Мне лично нужно настроить виртуальную машину, которая будет обеспечивать вход в туннель.
С другой стороны, то есть в организации, туннель уже был построен.
Человек, который управляет внутренним фаерволом и построил туннель для внутренней сети, дал мне следующие данные для доступа:
IKEv2 с шифрованием AES256, аутентификация SHA265 и группа Диффи-Хеллмана 14.
IPSec с теми же параметрами.
Для IKE организация установила срок действия 28800 секунд, для IPSec – 3600 секунд.
Организация использует предварительно установленный ключ, который выглядит так:
……../…………………..
Я заменил реальные символы на точки.
Еще один момент: Виртуальная машина снаружи и фаервол внутри используют только IP-адреса для IPsec, а не имена хостов или доменные имена.
IP-адрес виртуальной машины – “a.a.a.a”.
IP-адрес фаервола – “b.b.b.b”.
Подсеть внутри организации – “c.c.c.0/24”.
Моя конфигурация Libreswan внутри виртуальной машины выглядит так…
/etc/ipsec.d/your-vpn.conf:
conn your-vpn
authby=secret
auto=start
ikev2=insist
keyexchange=ike
ike=aes256-sha256;modp2048
phase2alg=aes256-sha256
salifetime=3600s
ikelifetime=28800s
pfs=yes
left=a.a.a.a
[email protected]
leftsubnet=0.0.0.0/0
right=b.b.b.b
[email protected]
rightsubnet=c.c.c.0/24
Эта конфигурация не работает.
Есть различные ошибки. И сначала мне нужно выяснить, какая из ошибок является наиболее важной.
В “ipsec.conf” я установил запись “plutodebug=all”, которая на самом деле дает мне более подробную отладочную информацию.
И ошибка, которую я определил как, вероятно, наиболее важную, следующая:
“your-vpn” #1: dropping unexpected IKE_SA_INIT message containing
NO_PROPOSAL_CHOSEN notification; message payloads: N; missing
payloads: SA,KE,Ni
Я думаю, что самый важный вопрос, который я мог бы задать здесь, был бы таков:
Если кто-то с опытом работы с “Libreswan” должен был бы настроить такой туннель, с какой конфигурации бы он начал?
Является ли показанная мной конфигурация хорошей идеей? Или в ней уже есть что-то ОЧЕВИДНО неверное?
Что насчет строки IKE?
Имеет ли значение, если я введу “ike=aes256-sha256;modp2048” или “ike=aes256-sha256;dh14”? Может ли это вообще иметь значение?
Я буду очень рад получить ответы на свои вопросы.
С наилучшими пожеланиями,
user1143436
Ответ или решение
Для настройки IPsec-туннеля с использованием Libreswan и устранения проблемы, связанной с сообщением об ошибке "NO_PROPOSAL_CHOSEN", вам нужно внимательно пересмотреть конфигурацию и учесть несколько важных моментов.
1. Анализ ошибки:
Ошибка "dropped unexpected IKE_SA_INIT message containing NO_PROPOSAL_CHOSEN notification" означает, что ваша конфигурация не соответствует предложенным параметрам конфигурации на стороне организации. Это может происходить по нескольким причинам:
- Некорректные параметры шифрования: Проверьте, что параметры шифрования, хэширования и группы Диффи-Хеллмана совпадают с теми, что были предоставлены администратором внутреннего фаервола.
- Некорректные значения для IKE и ESP: Убедитесь, что все криптографические алгоритмы и параметры для IKEv2 правильно указаны.
2. Оптимизация конфигурации:
Ваш файл конфигурации /etc/ipsec.d/your-vpn.conf
требует некоторых изменений. Например, следует учесть следующие рекомендации:
conn your-vpn
authby=secret
auto=start
ikev2=insist
keyexchange=ike
ike=aes256-sha256;modp2048
phase2alg=aes256-sha256
salifetime=3600s
ikelifetime=28800s
pfs=yes
left=a.a.a.a
leftid=a.a.a.a
leftsubnet=0.0.0.0/0
right=b.b.b.b
rightid=b.b.b.b
rightsubnet=c.c.c.0/24
3. Объяснение изменений:
-
leftid и rightid: Эти параметры устанавливают идентификаторы для обеих сторон туннеля. Убедитесь, что они совпадают с IP-адресами, которые Вы используете (то есть
leftid
— это ваш IP-адрес, аrightid
— это IP-адрес фаервола). -
modp2048: Убедитесь, что группа Диффи-Хеллмана правильно указана. Если администратор на стороне организации использует
group14
, тоmodp2048
является правильным выбором, и эти параметры работают правильно. -
ike/aes256-sha256: Убедитесь, что все предложенные параметры совпадают с параметрами на стороне организации. Если необходимо использовать
sha265
, возможно, вам потребуется уточнить, правильно ли заданы алгоритмы на обеих сторонах.
4. Проверка подлинности:
- PreShared Key: Убедитесь, что вы правильно указали предварительный общий ключ (pre-shared key) в отдельном файле (например, в
/etc/ipsec.secrets
). Формат должен быть таким:a.a.a.a : PSK "ваш_pre_shared_key"
5. Логи и диагностика:
- Логи: Используйте
plutodebug=all
, чтобы диагностировать любые проблемы, используя командуipsec verify
для проверки состояния вашей конфигурации. - tcpdump: Используйте
tcpdump
для захвата пакетов и наблюдения, идет ли трафик между вашим IP и IP-файрвола.
Заключение:
Убедитесь, что все параметры вашего IPsec-туннеля совпадают с теми, которые предоставляет организация. После внесения изменений и проверки всех параметров, перезапустите сервис Libreswan и наблюдайте за логами для любого сообщения об ошибках. Удачи!