Ipsec vpn что это
Пока что в серии криптосистем мы познакомились с общей терминологией криптографии и криптосистемой SSH (включая её конфигурацию). Сегодняшнюю статью я начну с с описания того, как работает VPN, а затем расскажу о стандарте IPSec. VPN, или Virtual Private Network, что в переводе означает Виртуальная Частная Сеть — это криптосистема, позволяющая защитить данные при передаче их по незащищенной сети, такой как Интернет. Несмотря на то, что данное описание подходит и для криптосистемы SSH, VPN имеет другое предназначение. SSH разрабатывался как средство, позволяющее пользователю безопасно зайти и удалённо управлять другим компьютером. Цель VPN — прозрачный доступ к ресурсам сети, где пользователь может делать всё то, что он делает обычно независимо от того, насколько он удалён. По этой причине VPN приобрёл популярность среди дистанционных работников и офисов, которые нуждаются в совместном использовании ресурсов территориально разделённых сетей.
VPN Туннели
- Каждый из узлов идентифицирует друг друга перед созданием туннеля, чтобы удостовериться, что шифрованные данные будут отправлены на нужный узел
- Оба узла требуют заранее настроеной политики, указывающей какие протоколы могут использоваться для шифрования и обеспечения целостности данных
- Узлы сверяют политики, чтобы договориться об используемых алгоритмах; если это не получается, то туннель не устанавливается
- Как только достигнуто соглашение по алгоритмам, создаётся ключ, который будет использован в симметричном алгоритме для шифрования/расшифровки данных
Есть несколько стандартов регламентирующих вышеописанное взаимодействие. Вы, должно быть, слышали о некоторых из них: L2TP, PPTP, и IPSec. Т.к. IPSec — наиболее широко поддерживаемый стандарт, который имеет в арсенале наибольшее количество сокращений, оставшуюся часть статьи стоит посвятить именно ему.
IPSec
Стандарт IPSec был разработан для повышения безопасности IP протокола. Это достигается за счёт дополнительных протоколов, добавляющих к IP пакету собственные заголовки, которые называются инкапсуляциями. Т.к. IPSec — стандарт Интернет, то для него существуют RFC (Requests For Comments). Если есть интерес покопаться во внутренностях IPSec, то следующие RFC с http://www.rfc-editor.org/ могут оказаться полезными:
RFC 2401 IPSec RFC 2402 AH RFC 2406 ESP RFC 2409 IKE
Приведём краткое описание каждого, чтобы получить необходимую информацию для понимания следующей статьи, посвящённой настройке IPSec VPN на FreeBSD системе. Начнём с сокращений, а затем посмотрим как они укладываются в общую картину создания виртуальной частной сети.
AH (Authentication Header) — протокол заголовка идентификации. Обеспечивает целостность путём проверки того, что ни один бит в защищаемой части пакета не был изменён во время передачи. Не будем вдаваться в подробности, какая часть пакета защищается и где находятся данные AH заголовка, т.к. это зависит от используемого типа шифрования и в деталях, с диаграммами описывается в соответствующем RFC. Отметим лишь, что использование AH может вызвать проблемы, например, при прохождении пакета через NAT устройство. NAT меняет IP адрес пакета, чтобы разрешить доступ в Интернет с закрытого локального адреса. Т.к. пакет в таком случае изменится, то контрольная сумма AH станет неверной. Также стоит отметить, что AH разрабатывался только для обеспечения целостности. Он не гарантирует конфиденциальности путём шифрования содержимого пакета.
ESP (Encapsulating Security Protocol) — инкапсулирующий протокол безопасности, который обеспечивает и целостность и конфиденциальность. В режиме транспорта ESP заголовок находится между оригинальным IP заголовком и заголовком TCP или UDP. В режиме туннеля заголовок ESP размещается между новым IP заголовком и полностью зашифрованным оригинальным IP пакетом.
Т.к. оба протокола — AH и ESP добавляют собственные заголовки, они имеют свой ID протокола, по которому можно определить что последует за заголовком IP. Если вспомнить статью TCP Protocol Layers Explained, то в ней сказано, что каждый тип заголовка имеет собственный номер. Например, для TCP это 6, а для UDP — 17. При работе через firewall важно не забыть настроить фильтры, чтобы пропускать пакеты с ID AH и/или ESP протокола. Для AH номер ID — 51, а ESP имеет ID протокола равный 50. При создании правила не забывайте, что ID протокола не то же самое, что номер порта.
Третий протокол, используемый IPSec — это IKE или Internet Key Exchange protocol. Как следует из названия, он предназначен для обмена ключами между двумя узлами VPN. Насмотря на то, что генерировать ключи можно вручную, лучшим и более масштабируемым вариантом будет автоматизация этого процесса с помощью IKE. Помните, что ключи должны часто меняться, и вам наверняка не хочется полагаться на свою память, чтобы найти время для совершения этой операции вручную. Главное — не забудьте настроить правило на файрволе для UPD порта с номером 500, т.к. именно этот порт используется IKE.
SA (Security Association), что можно приближённо перевести как «связь или ассоциация безопасности» — это термин IPSec для обозначения соединения. При настроенном VPN, для каждого используемого протокола создаётся одна SA пара (т.е. одна для AH и одна для ESP). SA создаются парами, т.к. каждая SA — это однонаправленное соединение, а данные необходимо передавать в двух направлениях. Полученные SA пары хранятся на каждом узле. Если ваш узел имеет SA, значит VPN туннель был установлен успешно.
Т.к. каждый узел способен устанавливать несколько туннелей с другими узлами, каждый SA имеет уникальный номер, позволяющий определить к какому узлу он относится. Это номер называется SPI (Security Parameter Index) или индекс параметра безопасности.
SA храняться в базе данных c названием, кто бы подумал — SAD (Security Association Database) или БД ассоциаций безопасности. Мы встретимся с ней ещё раз при настройке IPSec VPN.
Каждый узел IPSec также имеет вторую БД — SPD или Security Policy Database (БД политики безопасности). Она содержит настроенную вами политику узла. Большинство VPN решений разрешают создание нескольких политик с комбинациями подходящих алгоритмов для каждого узла, с которым нужно установить соединение.
Какие настройки включает в себя политика?
- Симметричные алгоритмы для шифрования/расшифровки данных
- Криптографические контрольные суммы для проверки целостности данных
- Способ идентификации узла. Самые распространнённые способы — это предустановленные ключи (pre-shared secrets) или RSA сертификаты.
- Использовать ли режим туннеля или режим транспорта
- Какую использовать группу Diffie Hellman
- Как часто проводить переидентификацию узла
- Как часто менять ключ для шифрования данных
- Использовать ли PFS
- Использовать ли AH, ESP, или оба вместе
При создании политики, как правило, возможно создание упорядоченного списка алгоритмов и Diffie Hellman групп. В таком случае будет использована первая совпавшая на обоих узлах позиция. Запомните, очень важно, чтобы всё в политике безопасности позволяло добиться этого совпадения. Если за исключением одной части политики всё остальное совпадает, узлы всё равно не смогут установить VPN соединение. При настройе VPN между различными системами уделите время изучению того, какие алгоритмы поддерживаются каждой стороной, чтобы иметь выбор наиболее безопасной политики из возможных.
Фаза Один и Фаза Два
Теперь давайте посмотрим как всё это работает вместе. Установка и поддержка VPN туннеля происходит в два этапа. На первом этапе (фазе) два узла договариваются о методе идентификации, алгоритме шифрования, хэш алгоритме и группе Diffie Hellman. Они также идентифицируют друг друга. Всё это может пройти в результате обмена тремя нешифрованными пакетами (т.н. агрессивный режим) или через обмен шестью нешифрованными пакетами (стандартный режим — main mode). Предполагая, что операция завершилась успешно, создаётся SA первой Фазы — Phase 1 SA (также называемый IKE SA) и процесс переходит к Фазе Два.
На втором этапе генерируются данные ключей, узлы договариваются насчёт используемой политики. Этот режим, также называемый быстрым режимом (quick mode), отличается от первой фазы тем, что может установиться только после первого этапа, когда все пакеты второй фазы шифруются. Такое положение дел усложняет решение проблем в случае неполадок на второй фазе при успешном завершении первой. Правильное завершение второй фазы приводит к появлению Phase 2 SA или IPSec SA, и на этом установка туннеля считается завершённой.
Когда же это всё происходит? Сначала на узел прибывает пакет с адресом назначения в другом домене шифрования, и узел инициирует Фазу Один с тем узлом, который отвечает за другой домен. Допустим, туннель между узлами был успешно установлен и ожидает пакетов. Однако, узлам необходимо переидентифицировать друг друга и сравнить политику через определённое время. Это время известно как время жизни Phase One или IKE SA lifetime.
Узлы также должны сменить ключ для шифрования данных через другой отрезок времени, который называется временем жизни Phase Two или IPSec SA lifetime. Phase Two lifetime короче, чем у первой фазы, т.к. ключ необходимо менять чаще. Типичное время жизни Phase Two — 60 минут. Для Phase One оно равно 24 часам.
Ваша задача заключается в том, чтобы сконфигурировать оба узла с одинаковыми параметрами времени жизни. Если этого не произойдёт, то возможен вариант, когда изначально туннель будет установлен успешно, но по истечении первого несогласованного промежутка времени жизни связь прервётся. Странные проблемы могут возникнуть и в том случае, когда время жизни Фазы Один меньше аналогичного параметра Фазы Два. Если настроенный ранее туннель виснет, то первая вещь, которая нуждается в проверке — это время жизни на обоих узлах. В заключение стоит упомянуть, что при смене политики на одном из узлов, изменения вступят в силу только при следующем наступлении Фазы Один. Чтобы изменения вступили в силу немедленно, надо убрать SA для этого туннеля из SAD. Это вызовёт пересмотр соглашения между узлами с новыми настройками политики безопасности.
Теперь у нас есть достаточно информации для создания IPSec VPN на вашей FreeBSD машине. Демонстрация необходимых настроек — тема следующей статьи.
Dru Lavigne — инструктор Marketbridge Technologies в Оттаве и администратор Open Protocol Resource.
Copyright ╘ 2005 O’Reilly Media, Inc.
IPSec VPN: что это такое и как это работает
Интернет-протокол безопасности (IPSec) представляет собой набор протоколов, обычно используемых VPN-сервисами для создания безопасного соединения через интернет.
Набор протоколов IPSec предлагает такие функции, как туннелирование и криптография для обеспечения безопасности. Вот почему VPN-сервисы в основном используют IPSec для создания защищенных туннелей.
IPSec VPN также широко известен как «VPN поверх IPSec».
Краткое изложение
IPSec обычно применяется на уровне IP в рамках сетевой инфраструктуры. Он функционирует в двух основных режимах: туннельном и транспортном.
В большинстве случаев VPN-сервисы используют туннельный режим для обеспечения безопасности и инкапсуляции всех IP-пакетов, в то время как транспортный режим обеспечивает защиту только содержимого данных внутри IP-пакета, не затрагивая его внешнюю оболочку.
В комплекте протоколов IPSec VPN предоставляются продвинутые функции аутентификации, сжатия данных и шифрования для защиты VPN-соединений.
IPSec дает возможность выбирать из разнообразных алгоритмов, протоколов безопасности и методов обмена ключами для защиты взаимодействия между сетевыми узлами.
Chapters
- Что такое IPSec?
- Режимы работы IPSec VPN
- Криптографические алгоритмы для IPSec
- Как работает IPSec?
- IPsec VPN против SSL VPN
Что такое IPSec?
Набор протоколов IPSec для VPN включает в себя Заголовок аутентификации (AH), Защищенный карго (ESP), Протокол ассоциации и управления ключами безопасности интернета (ISAKMP) и Сжатие полезной нагрузки IP (IPComp).
- Заголовок аутентификации (AH): AH предлагает аутентификацию источника данных IP-пакетов (датаграмм), обеспечивает целостность без подключения и защиту от атак повторного воспроизведения (благодаря методу скользящего окна). AH также предлагает значительную аутентификацию как для IP-заголовков, так и для протоколов верхнего уровня.
- Защищенный карго (ESP): ESP отвечает за предоставление аутентификации, целостности и конфиденциальности данных. ESP также обеспечивает конфиденциальность полезной нагрузки и аутентификацию сообщений в рамках набора протоколов IPSec. В режиме туннеля он инкапсулирует весь IP-пакет, а в режиме транспорта защищается только полезная нагрузка.
- Протокол ассоциации и управления ключами безопасности интернета (ISAKMP): ISAKMP занимается ассоциациями безопасности (SAs) — набором предварительно согласованных ключей и алгоритмов, используемых сторонами при создании VPN-туннеля. К ним относятся Kerberized Internet Negotiation of Keys (KINK) и обмен ключами интернета (IKE и IKEv2).
- Сжатие полезной нагрузки IP (IPComp): IPComp — это протокол сжатия низкого уровня, который уменьшает размер IP-пакетов, улучшая тем самым уровень связи между двумя сторонами. Это полезно, когда связь слишком медленная, например, при перегруженных каналах связи. IPComp не предлагает безопасности и должен использоваться с AH или ESP через VPN-туннели.
Режимы работы IPSec VPN
Давайте рассмотрим, как сравниваются два режима работы IPSec VPN:
Туннельный режим IPSec
VPN-шифрование в туннельном режиме инкапсулирует каждый исходящий пакет с новыми IPSec-пакетами, используя ESP. Туннельный режим также использует AH для аутентификации серверной стороны.
Таким образом, IPSec использует туннельный режим на безопасных шлюзах, таких как брандмауэр, который соединяет две общающиеся стороны.
Транспортный режим
Транспортный режим шифрует и аутентифицирует IP-пакеты, отправляемые между двумя общающимися сторонами.
В связи с этим транспортный режим часто используется для связи «точка-точка» между сторонами, учитывая, что он не изменяет IP-заголовок исходящих пакетов.
Криптографические алгоритмы для IPSec
IPSec опирается на безопасные алгоритмы, соответствующие принципам конфиденциальности, целостности и подлинности.
Олгоритмы включают в себя:
- Алгоритмы аутентификации, такие как RSA, PSK и криптография на эллиптических кривых.
- Симметричные алгоритмы шифрования, такие как AES-CBC и GCM, HMAC-SHA, TripleDES и ChaCha20-Poly1305.
- Алгоритмы обмена ключами, такие как обмен ключами с использованием эллиптических кривых Диффи-Хеллмана и обмен ключами Диффи-Хеллмана.
Как работает IPSec?
Ниже представлен общий пошаговый план того, как работает IPSec.
Обычно процесс начинается с того, что хосты (общающиеся стороны) устанавливают, что входящие или исходящие пакеты должны использовать IPSec.
Если пакеты активируют политики IPSec, то процесс продолжается следующим образом:
- Переговоры и обмен ключами: На этом этапе происходит аутентификация хостов и определение используемых политик. В первой фазе хосты создают безопасный канал. Переговоры проводятся либо в основном режиме (для большей безопасности), либо в агрессивном режиме (для более быстрого установления IP-канала).
Все хосты соглашаются использовать IKE для настройки IP-канала в основном режиме. В агрессивном режиме инициирующий хост предлагает IKE для настройки IP-канала, и другой хост соглашается.
Во второй фазе хосты договариваются и соглашаются на использование криптографических алгоритмов во время сеанса. - Передача: На этом этапе происходит обмен данными между хостами. Обычно IPSec разбивает данные на пакеты перед отправкой по сети. Пакеты включают в себя несколько сегментов, таких как полезная нагрузка и заголовки. IPSec также добавляет трейлеры и другие сегменты, содержащие информацию об аутентификации и шифровании.
- Окончание передачи: Это последний шаг, и он включает завершение работы IPSec защищенного канала. Завершение происходит, когда обмен данными завершен или сеанс истек. Криптографические ключи также удаляются.
IPsec VPN против SSL VPN
Помимо IPSec VPN, многие из лучших VPN-провайдеров также могут использовать SSL VPN для обеспечения безопасного подключения через интернет. В зависимости от необходимого уровня безопасности, VPN-провайдеры могут реализовывать оба протокола или выбирать один из них.
SSL VPN-соединения основаны на протоколе Transport Layer Security (TLS). В отличие от IPSec, который работает на уровне IP, TLS работает на транспортном уровне. Таким образом, безопасность и применение IPSec VPN и SSL VPN различаются.
С IPSec VPN ваш трафик защищен при передаче между частными сетями и хостами; вкратце, вы можете защитить всю свою сеть. Таким образом, IPSec VPN надежен для IP-ориентированных использований и приложений.
SSL VPN защищает трафик между удаленными пользователями. В большинстве случаев SSL VPN-соединения работают с хостами, поддерживающими приложения на основе браузера.
Frequently Asked Questions
Some people found answers to these questions helpful
What network port does IPSec often use?
IPSec often uses UDP port 500 for ISAKMP and UDP port 4500 to pass through firewalls, NAT is allowed.
Which one is better, SSL VPN or IPSec VPN?
The applications of each protocol set them apart. For instance, IPSec VPN lets users remotely access the entire network and its apps. However, SSL VPN allows users remote tunnel access to particular apps on the network.
Can IPSec be hacked?
Internet Protocol Security (IPSec) is widely regarded as secure. However, according to Snowden leaks, NSA targeted the IPSec encryptions by inserting various vulnerabilities. According to other reports, hackers can break some of IPSec’s encryption. It all depends on the implementation used.
What are the uses of IPSec?
Internet Protocol Security (IPSec) is a protocol suite that secures packet-level traffic over a network. You can use IPSec to secure information between two parties. Furthermore, IPSec is responsible for data integrity, originality, authentication, and confidentiality.
Is IPSec the same as VPN?
Simply put, Internet Protocol Security (IPSec) is like a traditional VPN technology. The protocol suite was first launched in 1990 and has received significant upgrades since, making it a widely used protocol in the VPN industry.
Загадочный IPsec. Все, что ты хотел узнать об IPsec, но не догадывался спросить

IPsec — сложный стек протоколов. На клиентской стороне он обычно автоматизирован, что в сочетании с его названием легко может вызвать у пользователя ощущение полной безопасности. Однако не всегда оправданное. Только IPsec из протоколов, пригодных для организации VPN, поддерживают все сетевые ОС, поэтому у тебя есть неплохой шанс с ним столкнуться. И чтобы быстро настраивать соединения и правильно оценивать их безопасность, нужно понимать, как работает протокол.
Из чего состоит IPsec?
IPsec — это не один протокол, а три или четыре, смотря как считать. В OpenVPN и других решениях на основе TLS все просто: устанавливается соединение по TCP или UDP, согласовываются параметры, а затем передаются данные.
В IPsec за согласование параметров и собственно передачу данных отвечают разные протоколы. В Linux, BSD и многих специализированных ОС маршрутизаторов туннель можно настроить вручную, без помощи управляющего протокола.
AH и ESP
Три основных компонента безопасности — доступность, аутентичность и конфиденциальность. IPsec может обеспечивать аутентичность, при этом ничего не делая для конфиденциальности.
Протокол AH (Authentication Header) добавляет в пакет специальный заголовок с контрольной суммой. На практике он используется редко, поскольку никак не способствует конфиденциальности.
Тем не менее его можно встретить в приложениях, где важна только аутентичность. К примеру, протокол маршрутизации OSPFv2 использовал пароли и суммы MD5 для защиты от поддельных анонсов, а его наследник OSPFv3 не включает никакой функциональности для защиты — вместо этого предлагается использовать IPsec в транспортном (прозрачном) режиме и с одной подписью AH без шифрования.
ESP (Encapsulated Security Payload) шифрует содержимое пакета и добавляет хеши. Его можно использовать в двух режимах — транспортном и туннельном. Это сейчас в сетях IPv4 любой VPN немыслим без маршрутизации частных (серых) адресов через туннель, поскольку со внешним миром хосты общаются через NAT. Но IPsec старше NAT и изначально шифровал только полезную нагрузку пакетов, не трогая заголовки, — это и есть транспортный режим.
В туннельном режиме ESP шифрует весь пакет и передает его как полезную нагрузку, на другой стороне он извлекается, расшифровывается и маршрутизируется дальше.
Что интересно, оба они не работают поверх TCP или UDP, а используют отдельные номера протоколов IP. Во всяком случае, по умолчанию — ESP может быть инкапсулирован в UDP для работы через NAT, но об этом позже.
Фреймворк для управляющих протоколов — ISAKMP
Общие принципы согласования настроек безопасности описывает ISAKMP (Internet Security Association and Key Management Protocol). Он описан в RFC 2408.
ISAKMP не является законченным сетевым протоколом. Это фреймворк, который описывает требования к безопасной работе протоколов обмена настройками безопасных соединений, терминологию и общий формат пакетов, но ничего не говорит о конкретных протоколах обмена ключами, шифрования и прочего — это остается на совести реализаций.
Именно из ISAKMP происходят термины Phase 1 и Phase 2, которые часто можно встретить в интерфейсе настройки маршрутизаторов и в описаниях настроек для подключения. Phase 1 — согласование параметров безопасного обмена данными о настройках. Phase 2 — согласование параметров собственно защиты передаваемого трафика хостов или приложений.
Самая популярная и практически единственная реализация ISAKMP — IKE.
Управляющий протокол — IKE
IKE (Internet Key Exchange) — реальный управляющий протокол IPsec на основе ISAKMP. На практике можно сказать, что Phase 1 — согласование настроек IKE, а Phase 2 — согласование настроек ESP.
В UNIX-подобных системах IKE — это единственная часть стека IPsec, которая работает в виде обычного процесса. Само шифрование реализовано в ядре, и демон IKE передает ему параметры после согласования со второй стороной. В Linux это происходит через netlink или команды ip xfrm .
![]()
INFO
Подсистема XFRM в Linux обычно ассоциируется с IPsec, но может выполнять и другие преобразования, например сжатие полезной нагрузки.
Популярные пакеты «для IPsec» вроде StrongSWAN и LibreSWAN реализуют именно IKE.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Как настроить VPN IPsec
Рассказываем, как запустить виртуальную машину VPN IPsec для маршрутизации трафика из облачной сети в удаленную точку подключения и делимся примером отказоустойчивой схемы с двумя виртуальными машинами VPN IPsec.
Введение
Технология IPsec VPN позволяет построить туннель для передачи трафика серых (приватных) сетей через публичный интернет. При этом используется шифрование данных для их защиты, за счет чего и достигается безопасность. Чаще всего VPN на базе IPsec используют для site-to-site подключений, когда необходимо соединить две географически разнесенных сети, например, в двух разных дата-центрах, и нет возможности построить VPN по выделенным каналам связи.
В этой статье покажем, как запускать виртуальную машину с VPN IPsec для маршрутизации трафика из облачной сети в удаленную точку подключения. В примере используем демон strongSwan. Во второй части разберем пример отказоустойчивой схемы с двумя виртуальными машинами VPN IPsec.
Исходные данные
- виртуальная машина запущенная на образе Ubuntu 20.04 с двумя портами,
- первый порт виртуальной машины подключен к публичной сети (и используется как default route),
- второй порт подключен к приватной сети, которую необходимо маршрутизировать.
Облачный сервер
Разверните виртуальную машину в пару кликов.
Предполагаемая схема настройки и адресация выглядит следующим образом:
Эта схема без отказоустойчивости, так как инстанс VPN один и в случае его отказа сеть перестанет работать. В этой статье предполагается что у вас уже есть левая часть схемы, то есть VPN инстанс в другом облаке с настроенной виртуальной машиной или инстансом IPsec.
На стороне Selectel у вашей виртуальной машины для IPsec настроено два порта с адресами 188.68.206.154 и 192.168.10.10 для публичной и приватной сети соответственно.
Настройка VPN с одним инстансом
Подключаемся к виртуальной машине по SSH и начинаем настройку. Первым делом необходимо установить демон strongSwan и включить его в автозагрузку:
sudo apt update sudo apt install -y strongswan sudo systemctl enable strongswan-starter
Далее необходимо включить маршрутизацию пакетов между интерфейсами, так как наша виртуальная машина будет служить шлюзом для приватной сети и отправлять трафик через публичную сеть с шифрованием.
sudo cat /etc/sysctl.d/99-vpn-ipsec.conf net.ipv4.ip_forward = 1 net.ipv6.conf.all.forwarding = 1 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.send_redirects = 0 EOF sudo sysctl -p /etc/sysctl.d/99-vpn-ipsec.conf
Эти команды создают конфигурационный файл sysctl и применяют его. Далее нам необходимо создать основной конфигурационный файл IPsec для strongSwan:
sudo cat /etc/ipsec.conf config setup charondebug="all" uniqueids=yes strictcrlpolicy=no conn site-to-site-vpn type=tunnel authby=secret left=%defaultroute leftid=188.68.206.154 leftsubnet=192.168.10.0/24 right=51.250.46.166 rightsubnet=192.168.20.0/24 ike=aes256-sha2_256-modp1024! esp=aes256-sha2_256! keyingtries=0 ikelifetime=1h lifetime=8h dpddelay=30 dpdtimeout=120 dpdaction=restart auto=start EOF
Важные опции, которые требуют настройки в зависимости от вашего окружения и используемых адресов:
leftid — публичный адрес самой виртуальной машины IPsec, в нашем случае это 188.68.206.154, в другом окружении адрес будет другим;
leftsubnet — приватная сеть. Это сеть, которая создана в облаке Selectel для других виртуальных машин. Из нее необходимо иметь доступ к виртуальным машинам в другом облаке;
right — публичный адрес удаленной виртуальной машины, то есть в нашем случае 51.250.46.166;
rightsubnet — удаленная приватная сеть. Это сеть, которая была создана в другом облаке и используется там для виртуальных машин.
Подробнее по остальным опциям можно почитать в официальной документации.
После создания основного файла конфигурации необходимо также создать файл с секретом, который будет содержать пароль для подключения:
sudo cat /etc/ipsec.secrets 188.68.206.154 51.250.46.166 : PSK "" EOF
Где — пароль, указанный с обеих сторон тоннеля, то есть на обеих виртуальных машинах VPN IPsec.
Перезагружаем IPsec демон и проверяем статус подключения:
sudo systemctl restart strongswan-starter ipsec status
Настройка отказоустойчивой схемы
Так выглядит отказоустойчивая схема.
В отличии от предыдущей схемы, в качестве IP-адреса шлюза в приватной сети и в качестве основного адреса для VPN-туннеля будут использоваться VIP-адреса. Они будут перемещаться между виртуальными машинами с помощью VRRP.
Чтобы настроить отказоустойчивую схему, необходимо запустить еще одну такую же виртуальную машину для VPN. Будем ее называть vpn2, а первую виртуальную машину — vpn1.
Далее на второй виртуальной машине воспроизводятся те же базовые настройки, что и на первой:
sudo apt update sudo apt install -y strongswan sudo systemctl enable strongswan-starter sudo cat /etc/sysctl.d/99-vpn-ipsec.conf net.ipv4.ip_forward = 1 net.ipv6.conf.all.forwarding = 1 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.send_redirects = 0 EOF sudo sysctl -p /etc/sysctl.d/99-vpn-ipsec.conf
Перед IPsec необходимо настроить VRRP с помощью демона keepalived. Устанавливаем эту службу:
sudo apt install -y keepalived
Настраиваем VRRP-конфигурацию так, чтобы:
- оба VIP перемещались одновременно, были в одной группе;
- при смене статуса инстанса с MASTER на BACKUP и обратно необходимо, чтобы IPsec выключался и включался соответственно, так как туннель должен быть построен только от одной виртуальной машины в один момент времени.
Настраиваем VRRP на виртуальной машине vpn2:
sudo cat /usr/local/sbin/notify-ipsec.sh #!/bin/bash TYPE=\$1 NAME=\$2 STATE=\$3 case \$STATE in "MASTER") /usr/sbin/ipsec restart ;; "BACKUP") /usr/sbin/ipsec stop ;; "FAULT") /usr/sbin/ipsec stop exit 0 ;; *) /usr/bin/logger "ipsec unknown state" exit 1 ;; esac EOF sudo chmod a+x /usr/local/sbin/notify-ipsec.sh sudo cat /etc/keepalived/keepalived.conf vrrp_sync_group G1 < group < EXT INT >notify "/usr/local/sbin/notify-ipsec.sh" > vrrp_instance INT < state BACKUP interface eth1 virtual_router_id 11 priority 25 advert_int 1 authentication < auth_type PASS auth_pass > virtual_ipaddress < 192.168.120.100/24 >nopreempt garp_master_delay 1 > vrrp_instance EXT < state BACKUP interface eth0 virtual_router_id 22 priority 25 advert_int 1 authentication < auth_type PASS auth_pass > virtual_ipaddress < 188.68.206.158/29 >nopreempt garp_master_delay 1 > EOF
Эти команды создают два файла:
- /usr/local/sbin/notify-ipsec.sh — скрипт, который будет вызываться при смене статуса VRRP и будет выключать/включать IPsec;
- /etc/keepalived/keepalived.conf — файл конфигурации keepalived для двух групп.
Далее необходимо перезагрузить keepalived и включить его в автозапуске:
sudo systemctl restart keepalived sudo systemctl enable keepalived
После этого можно приступать к настройке IPsec на vpn2. Конфигурационный файл теперь будет немного другим, так как туннель должен строиться с VIP-адреса, а не с адреса на интерфейсе.
sudo cat /etc/ipsec.conf config setup charondebug="all" uniqueids=yes strictcrlpolicy=no conn site-to-site-vpn type=tunnel authby=secret left=%defaultroute leftid=188.68.206.158 leftsubnet=192.168.10.0/24 right=51.250.46.166 rightsubnet=192.168.20.0/24 ike=aes256-sha2_256-modp1024! esp=aes256-sha2_256! keyingtries=0 ikelifetime=1h lifetime=8h dpddelay=30 dpdtimeout=120 dpdaction=restart auto=start EOF
Файл с секретом создается тоже с VIP-адресом:
sudo cat /etc/ipsec.secrets 188.68.206.158 51.250.46.166 : PSK "" EOF
Настройка vpn2 окончена. Приступаем к настройке vpn1, так как на первой виртуальной машине тоже надо запустить VRRP и подправить конфигурацию IPsec.
Так как эта схема строится для отказоустойчивости, большинство конфигурационных файлов будут точно такими же как и на vpn2. Исключение — роль VRRP у этого инстанса будет MASTER. Устанавливаем keepalived, создаем конфигурацию и скрипт контроля IPsec:
sudo apt install -y keepalived sudo cat /usr/local/sbin/notify-ipsec.sh #!/bin/bash TYPE=\$1 NAME=\$2 STATE=\$3 case \$STATE in "MASTER") /usr/sbin/ipsec restart ;; "BACKUP") /usr/sbin/ipsec stop ;; "FAULT") /usr/sbin/ipsec stop exit 0 ;; *) /usr/bin/logger "ipsec unknown state" exit 1 ;; esac EOF sudo chmod a+x /usr/local/sbin/notify-ipsec.sh sudo cat /etc/keepalived/keepalived.conf vrrp_sync_group G1 < group < EXT INT >notify "/usr/local/sbin/notify-ipsec.sh" > vrrp_instance INT < state MASTER interface eth1 virtual_router_id 11 priority 25 advert_int 1 authentication < auth_type PASS auth_pass > virtual_ipaddress < 192.168.120.100/24 >nopreempt garp_master_delay 1 > vrrp_instance EXT < state MASTER interface eth0 virtual_router_id 22 priority 25 advert_int 1 authentication < auth_type PASS auth_pass > virtual_ipaddress < 188.68.206.158/29 >nopreempt garp_master_delay 1 > EOF sudo systemctl enable keepalived
Пароль , указанный в конфигурации, должен быть одинаковым на обеих виртуальных машинах VPN.
Далее нам надо обновить IPsec-конфигурацию и конфигурацию секрета IPsec так, чтобы там был указан VIP вместо основного адреса. То есть конфигурация IPsec и конфигурация секрета будет идентична на vpn1 и vpn2.
sudo cat /etc/ipsec.conf config setup charondebug="all" uniqueids=yes strictcrlpolicy=no conn site-to-site-vpn type=tunnel authby=secret left=%defaultroute leftid=188.68.206.158 leftsubnet=192.168.10.0/24 right=51.250.46.166 rightsubnet=192.168.20.0/24 ike=aes256-sha2_256-modp1024! esp=aes256-sha2_256! keyingtries=0 ikelifetime=1h lifetime=8h dpddelay=30 dpdtimeout=120 dpdaction=restart auto=start EOF sudo cat /etc/ipsec.secrets 188.68.206.158 51.250.46.166 : PSK "" EOF
Перезагружаем keepalived и проверяем статус IPsec:
sudo systemctl restart keepalived ipsec status
Заключение
В этой инструкции мы рассказали, как запустить виртуальную машину VPN IPsec для маршрутизации трафика из облачной сети в удаленную точку подключения и разобрали пример отказоустойчивой схемы с двумя виртуальными машинами VPN IPsec.
Зарегистрируйтесь в панели управления
И уже через пару минут сможете арендовать сервер, развернуть базы данных или обеспечить быструю доставку контента.