- Введение
- Add a client certificate
- Android
- Config sections
- Configure ikev2 vpn clients
- Conn sections
- Delete a client certificate
- Description
- Host to host tunnel :
- Ikev2 disconnects after one hour
- In our case :
- License
- Os x (macos)
- Other known issues
- Remove ikev2
- Revoke a client certificate
- Troubleshooting
- Vpn-туннель установлен, но у компьютера нет доступа в интернет:
- Windows 7, 8.x and 10
- Использование клиента charon-cmd для разовых подключений
- Клиент windows не подключается:
- Настройка ipsec vpn
- Настройка windows с помощью графических инструментов
- Подключение из android
- Подключение из macos
- Политики маршрутов
- Создание объектов адреса
- Создать политику vpn-соединения (phase2)
- Управление strongswan как службой
- Шаг 1 — установка strongswan
- Шаг 2 — создание центра сертификации
- Шаг 3 — генерирование сертификата для сервера vpn
- Шаг 4 — настройка strongswan
- Шаг 4. сборка и установка libreswan в ubuntu
- Шаг 5 — настройка аутентификации vpn
- Шаг 5: запустите и включите службу libreswan ipsec
- Шаг 6 — настройка брандмауэра и переадресации ip ядра
- Шаг 7 — тестирование подключения vpn на windows, macos, ubuntu, ios и android
- Заключение
Введение
Виртуальная частная сеть (VPN) позволяет выполнять защищенное шифрование трафика, передаваемого через незащищенные сети, например, в кафе, на конференции или в аэропорту.
Internet Key Exchange v2 или IKEv2 — это протокол, который позволяет создавать прямые туннели IPSec между сервером и клиентом. IPSec обеспечивает шифрование сетевого трафика в виртуальных частных сетях IKEv2. IKEv2 изначально поддерживается на ряде платформ (OS X 10.11 , iOS 9.1 , Windows 10) без дополнительных приложений и легко решает проблемы с подключением клиентов.
В этом обучающем руководстве мы настроим сервер IKEv2 VPN с помощью StrongSwan на сервере Ubuntu 20.04. Затем вы узнаете, как подключиться к нему с помощью клиентов Windows, macOS, Ubuntu, iOS и Android.
Add a client certificate
To generate certificates for additional IKEv2 clients, just run the helper script again. Or you may refer to step 4 in this section.
sudo ikev2.sh --addclient [client name]
Android
- Securely transfer the generated
.sswanfile to your Android device. - Install strongSwan VPN Client from Google Play.
- Launch the strongSwan VPN client.
- Tap the “more options” menu on top right, then tap Import VPN profile.
- Choose the
.sswanfile you transferred from the VPN server.
Note: To find the.sswanfile, tap the three-line menu button, then browse to the location you saved the file. - On the “Import VPN profile” screen, tap IMPORT CERTIFICATE FROM VPN PROFILE, and follow the prompts.
- On the “Choose certificate” screen, select the new client certificate, then tap Select.
- Tap IMPORT.
- Tap the new VPN profile to connect.
If your device runs Android 6.0 or older, click here for additional instructions.
If your device runs Android 6.0 (Marshmallow) or older, in order to connect using the strongSwan VPN client, you must make the following change on the VPN server: Edit /etc/ipsec.d/ikev2.conf on the server. Append authby=rsa-sha1 to the end of the conn ikev2-cp section, indented by two spaces. Save the file and run service ipsec restart.
Config sections
At present, the only config section known to the IPsec software is the one named setup, which contains information used when the software is being started (see ipsec_setup(8)). Here’s an example:
config setup logfile=/var/log/pluto.log plutodebug=all
Parameters are optional unless marked “(required)”.
The currently-accepted parameter names in a config setup section are:
protostack
Configure ikev2 vpn clients
Read this in other languages: English, 简体中文.
Note: The password for client configuration files can be found in the output of the IKEv2 helper script. If you want to add or export IKEv2 client(s), just run the helper script again. Use option -h to show usage information.
Conn sections
A conn section contains a connection specification, defining a network connection to be made using IPsec. The name given is arbitrary, and is used to identify the connection to ipsec_auto(8) Here’s a simple example:
conn snt left=10.11.11.1 leftsubnet=10.0.1.0/24 leftnexthop=172.16.55.66 leftsourceip=10.0.1.1 right=192.168.22.1 rightsubnet=10.0.2.0/24 rightnexthop=172.16.88.99 rightsourceip=10.0.2.1 keyingtries=%forever
Delete a client certificate
Important: Deleting a client certificate from the IPsec database WILL NOT prevent VPN client(s) from connecting using that certificate! For this use case, you MUSTrevoke the client certificate instead of deleting it.
First, read the important note above. Then click here for instructions.
Important: Please first read the important note above. If you still want to delete a certificate, refer to the steps below. This action cannot be undone!
To delete a client certificate:
List certificates in the IPsec database:
certutil -L -d sql:/etc/ipsec.d
Example output:
Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI IKEv2 VPN CA CTu,u,u ($PUBLIC_IP) u,u,u vpnclient u,u,uDelete the client certificate and private key. Replace “Nickname” below with the nickname of the client certificate you want to delete, e.g.
vpnclient.(Optional) Delete the previously generated client configuration files (
.p12,.mobileconfigand.sswanfiles) for this VPN client, if any.
Description
The ipsec.conf file specifies most configuration and control information for the Libreswan IPsec subsystem. (The major exception is secrets for authentication; see ipsec.secrets(5).) Its contents are not security-sensitive.
ipsec.conf is a text file, consisting of one or more sections. White space followed by # followed by anything to the end of the line is a comment and is ignored, as are empty lines that are not within a section.
A line that contains include and a file name, separated by white space, is replaced by the contents of that file, preceded and followed by empty lines. If the file name is not a full pathname, it is considered to be relative to the directory that contains the including file.
include /etc/ipsec.d/*.conf
The intention of the include facility is mostly to permit keeping information on connections, or sets of connections, separate from the main configuration file. This permits such connection descriptions to be changed, copied to the other security gateways involved, etc., without having to constantly extract them from the configuration file and then insert them back into it.
The first significant line of the file may specify a version of this specification for backwards compatibility with freeswan and openswan. It is ignored and unused. For compatibility with openswan, specify:
version 2
A section begins with a line of the form:
type name
where type indicates what type of section follows, and name is an arbitrary name that distinguishes the section from others of the same type. (Names must start with a letter and may contain only letters, digits, periods, underscores, and hyphens.)
Lines within the section are generally of the form
parameter=value
(note the mandatory preceding white space). There can be white space on either side of the =. Parameter names follow the same syntax as section names, and are specific to a section type. Unless otherwise explicitly specified, no parameter name may appear more than once in a section.
An empty value stands for the system default value (if any) of the parameter, i.e. it is roughly equivalent to omitting the parameter line entirely. A value may contain white space only if the entire value is enclosed in double quotes (“); a value cannot itself contain a double quote, nor may it be continued across more than one line.
Numeric values are specified to be either an “integer” (a sequence of digits) or a “decimal number” (sequence of digits optionally followed by `.’ and another sequence of digits).
There is currently one parameter that is available in any type of section:
also
Host to host tunnel :
In this case, follow the same steps just you don’t have to disable source and destination check and also no need of changing route table.
In you datacentre Box, add the route table to allow traffic from the AWS machine IP :
Something like :
iptables -A INPUT -s 35.201.104.15-j ACCEPTNote: Mentioned IP’s are just example and subjected to change as per your network infrastructure.
Hope this is useful!! Please share your feedback 🙂
Ikev2 disconnects after one hour
If the IKEv2 connection disconnects automatically after one hour (60 minutes), apply this fix: Edit /etc/ipsec.d/ikev2.conf on the VPN server (or /etc/ipsec.conf if it does not exist), append these lines to the end of section conn ikev2-cp, indented by two spaces:
ikelifetime=24h
salifetime=24h
Save the file and run service ipsec restart. As of 2021-01-20, the IKEv2 helper script was updated to include this fix.
In our case :
AWS tunnel IP : 35.201.104.15AWS Range : 10.100.0.0/16On-Prem IP : 200.114.100.106Subnet OnPrem : 172.100.0.0/16
7. Time for command line action:
License
Copyright (C) 2021-2021 Lin Song
This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License
Attribution required: please include my name in any derivative and let me know how you have improved it!
Os x (macos)
First, securely transfer the generated .mobileconfig file to your Mac, then double-click and follow the prompts to import as a macOS profile. When finished, check to make sure “IKEv2 VPN” is listed under System Preferences -> Profiles.
To connect to the VPN:
- Open System Preferences and go to the Network section.
- Select the VPN connection with
Your VPN Server IP(or DNS name). - Check the Show VPN status in menu bar checkbox.
- Click Connect.
(Optional feature) You can choose to enable VPN On Demand. This is an “always-on” feature that can automatically connect to the VPN while on Wi-Fi. To enable, check the Connect on demand checkbox for the VPN connection, and click Apply.
Other known issues
- The built-in VPN client in Windows may not support IKEv2 fragmentation (this feature requires Windows 10 v1803 or newer). On some networks, this can cause the connection to fail or have other issues. You may instead try the IPsec/L2TP or IPsec/XAuth mode.
- If using the strongSwan Android VPN client, you must update Libreswan on your server to version 3.26 or above.
Remove ikev2
If you want to remove IKEv2 from the VPN server, but keep the IPsec/L2TP and IPsec/XAuth (“Cisco IPsec”) modes (if installed), run the helper script again and select the “Remove IKEv2” option. Note that this will delete all IKEv2 configuration including certificates and keys, and cannot be undone!
Alternatively, you can manually remove IKEv2. Click here for instructions.
To manually remove IKEv2 from the VPN server, but keep the IPsec/L2TP and IPsec/XAuth (“Cisco IPsec”) modes, follow these steps. Commands must be run as root. Note that this will delete all IKEv2 configuration including certificates and keys, and cannot be undone!
Rename (or delete) the IKEv2 config file:
mv /etc/ipsec.d/ikev2.conf /etc/ipsec.d/ikev2.conf.bak
Note: If you used an older version (before 2020-05-31) of the IKEv2 helper script or instructions, file
/etc/ipsec.d/ikev2.confmay not exist. In this case, please instead remove theconn ikev2-cpsection from file/etc/ipsec.conf.(Important) Restart the IPsec service:
List certificates in the IPsec database:
certutil -L -d sql:/etc/ipsec.d
Example output:
Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI IKEv2 VPN CA CTu,u,u ($PUBLIC_IP) u,u,u vpnclient u,u,uDelete the Certificate Revocation List (CRL), if any:
Delete certificates and keys. Replace “Nickname” below with each certificate’s nickname. Repeat these commands for each certificate. When finished, list certificates in the IPsec database again, and confirm that the list is empty.
Revoke a client certificate
In certain circumstances, you may need to revoke a previously generated VPN client certificate. To revoke a certificate, run the helper script again and select the appropriate option.
Alternatively, you may manually revoke a client certificate. This can be done using crlutil. See example steps below, commands must be run as root.
Check the database, and identify the nickname of the client certificate you want to revoke.
certutil -L -d sql:/etc/ipsec.d
Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI IKEv2 VPN CA CTu,u,u ($PUBLIC_IP) u,u,u vpnclient-to-revoke u,u,uIn this example, we will revoke the certificate with nickname
vpnclient-to-revoke, issued byIKEv2 VPN CA.Find the serial number of this client certificate.
Certificate: Data: Version: 3 (0x2) Serial Number: 00:cd:69:ff:74 ... ...From the output, we see that the serial number is
CD69FF74in hexadecimal, which is3446275956in decimal. It will be used in the next steps.Create a new Certificate Revocation List (CRL). You only need to do this once for each CA.
CRL Info: : Version: 2 (0x1) Signature Algorithm: PKCS #1 SHA-256 With RSA Encryption Issuer: "O=IKEv2 VPN,CN=IKEv2 VPN CA" This Update: Sat Jun 06 22:00:00 2020 CRL Extensions:Add the client certificate you want to revoke to the CRL. Here we specify the certificate’s serial number in decimal, and the revocation time in GeneralizedTime format (YYYYMMDDhhmmssZ) in UTC.
CRL Info: : Version: 2 (0x1) Signature Algorithm: PKCS #1 SHA-256 With RSA Encryption Issuer: "O=IKEv2 VPN,CN=IKEv2 VPN CA" This Update: Sat Jun 06 22:02:00 2020 Entry 1 (0x1): Serial Number: 00:cd:69:ff:74 Revocation Date: Sat Jun 06 22:01:00 2020 CRL Extensions:Note: If you want to remove a certificate from the CRL, replace
addcert 3446275956 20200606220210Zabove withrmcert 3446275956. For othercrlutilusage, read here.Finally, let Libreswan re-read the updated CRL.
Troubleshooting
Read this in other languages: English, 简体中文.
See also:Check logs and VPN status, IKEv1 troubleshooting and Advanced usage.
Vpn-туннель установлен, но у компьютера нет доступа в интернет:
- По умолчанию VPN-клиент Windows IKEv2 будет пытаться отправить весь трафик через туннель и поэтому на шлюзе необходимо добавить правило политики маршрутизации, чтобы позволить Интернет трафику из IKEv2 VPN туннеля получить доступ к Интернет через WAN подключение шлюза.
- Убедитесь, что DNS-записи были добавлены для VPN. Чтобы проверить это, перейдите в Configuration -> VPN -> IPSec VPN на шлюзе.
На вкладке “VPN Connection” отредактируйте правило IKEv2 и проверьте настройку «Configuration Payload».
KB-00185
Windows 7, 8.x and 10
Securely transfer the generated
.p12file to your computer, then import it into the “Computer account” certificate store. To import the.p12file, run the following from an elevated command prompt:Alternatively, you can manually import the
.p12file. Click here for instructions. Make sure that the client cert is placed in “Personal -> Certificates”, and the CA cert is placed in “Trusted Root Certification Authorities -> Certificates”.On the Windows computer, add a new IKEv2 VPN connection. For Windows 8.x and 10, it is recommended to create the VPN connection using the following commands from a command prompt, for improved security and performance. Windows 7 does not support these commands, you may manually create the VPN connection (see below).
Alternatively, you can manually create the VPN connection. Click here for instructions. If you specified the server’s DNS name (instead of its IP address) during IKEv2 setup, you must enter the DNS name in the Internet address field.
(This step is required if you manually created the VPN connection) Enable stronger ciphers for IKEv2 with a one-time registry change. Download and import the
.regfile below, or run the following from an elevated command prompt. Read more here.
To connect to the VPN: Click on the wireless/network icon in your system tray, select the new VPN entry, and click Connect. Once successfully connected, you can verify that your traffic is being routed properly by looking up your IP address on Google. It should say “Your public IP address is Your VPN Server IP”.
If you get an error when trying to connect, see Troubleshooting.
Использование клиента charon-cmd для разовых подключений
Чтобы управлять StrongSwan как службой, вам нужно выполнить следующие шаги по настройке.
Сначала обновите свой локальный кэш пакетов с помощью apt
Затем установите StrongSwan и необходимые плагины для аутентификации:
Теперь вам потребуется копия сертификата СА в каталоге /etc/ipsec.d/cacerts, чтобы ваш клиент мог проверить подлинность сервера. Запустите следующую команду, чтобы скопировать файл ca-cert.pem в каталог:
На этом этапе вы можете подключиться к серверу VPN с помощью charon-cmd, используя сертификат СА сервера, IP-адрес сервера VPN и настроенное имя пользователя.
Запустите следующую команду для подключения к VPN в любое время:
При запросе укажите пароль пользователя VPN. После этого вы подключитесь к VPN. Чтобы отключиться, нажмите CTRL C в терминале и дождитесь, пока соединение не будет закрыто.
Клиент windows не подключается:
- У клиента установлены какие-либо другие VPN-клиенты? Только одно приложение может использовать службы IKE / IPSec одновременно, если на компьютере установлен (и работает) другой клиент VPN, например клиент Cisco IPSec, TheGreenBow, ShrewSoft и т. Д., Вам потребуется полностью закрыть приложение и перезапустите службы IKE / IPSec, чтобы «Соединение IKEv2» могло их использовать.
Чтобы перезапустить службы на вашем компьютере, откройте диалоговое окно RUN. Вы можете получить к нему доступ, нажав клавиши Windows R на клавиатуре.
Введите «services.msc» и нажмите « ОК» или нажмите клавишу Enter / Return.
Прокрутите список вниз, чтобы найти «IKE и AuthIP Модули ключей IPsec » и «Агент политики IPsec», чтобы перезапустить эти службы.
- Отключите Firewall на компьютере, чтобы убедиться, что он не блокирует VPN-подключение
- Проверьте политику IPSec, созданную на шлюзе, и убедитесь, что для нее настроены правильные криптоалгоритмы для Phase1 и Phase2
- Если туннель все еще не подключается, пожалуйста, проверьте еще раз настройку IPSec VPN
- Убедитесь, что прошивка обновлена, и обратитесь в службу технической поддержки для дальнейшей проверки. Чтобы проверить текущую версию прошивки на USG, перейдите в раздел Maintenance -> File Manager -> Firmware Package
Настройка ipsec vpn
IPSec VPN состоит из двух фаз: Phase-1 (также известная как IKE) и Phase-2 (также известная как IPSec). Целью Phase-1 является установлениезащищенного канала связи с использованием алгоритма обмена ключами Диффи-Хеллмана (DH) для генерации общего секретного ключа для шифрования связи IKE.
Это согласование приводит к единственной двунаправленной ассоциации безопасности (SA) ISAKMP. Аутентификация может быть выполнена с использованием предварительно общего ключа (пароля) или сертификата. Во время Phase-2 удаленный клиент IPSec использует безопасный канал, установленный в Phase-1, для согласования SA для IPSec. В результате переговоров получается как минимум две однонаправленные SA, одна входящая и одна исходящая.
Создание политики VPN Gateway (Phase1)
Чтобы создать политику VPN Phase1, перейдите в “Configuration -> VPN -> IPSec VPN” и выберите вкладку « VPN Gateway ». Нажмите кнопку Add (Добавить), чтобы вставить новое правило VPN.
Настройка windows с помощью графических инструментов
Вначале импортировать сертификат root, выполнив следующие шаги:
- Нажмите
WINDOWS R, чтобы открыть диалоговое окно Выполнить и введитеmmc.exe, чтобы открыть консоль управления Windows. - Из меню Файл перейдите в раздел Добавить или удалить оснастку, выберите Сертификаты из списка доступных оснасток и нажмите Добавить.
- Чтобы разрешить VPN работать для любых пользователей, выберите Учетная запись компьютера и нажмите Далее.
- Поскольку мы выполняем настройку на локальном компьютере, выберите пункт Локальный компьютер и нажмите Готово.
Под узлом Корень консоли откройте запись Сертификаты (локальный компьютер), раскройте Доверенные корневые центры сертификации и выберите запись Сертификаты:

- В меню Действие выберите пункт Все задачи и нажмите Импорт, чтобы открыть мастер импорта сертификатов. Нажмите Далее, чтобы пролистать вводное окно.
- На экране Импортируемый файл нажмите кнопку Обзор, убедитесь, что вы изменили тип файла с “X.509 Certificate (.cer;.crt)” на “All Files (.) и выберите сохраненный ранее файл
ca-cert.pem. Затем нажмите Далее. - Убедитесь, что Хранилище сертификатов имеет значение Доверенные корневые центры сертификации и нажмите Далее.
- Нажмите Готово, чтобы импортировать сертификат.
Затем выполните следующие шаги по настройке VPN:
- Откройте Панель управления и перейдите в Центр управления сетями и общим доступом.
- Нажмите Создание и настройка нового подключения или сети и выберите пункт Подключение к рабочем месту.
- Выберите пункт Использовать мое подключение к Интернету (VPN).
- Введите данные сервера VPN. Введите доменное имя сервера или IP-адрес в поле Адрес в Интернете, затем введите в поле Имя пункта назначения описание своего соединения VPN. Затем нажмите Готово.
Подключение из android
Выполните следующие шаги по импорту сертификата:
- Отправьте себе электронное письмо с прикрепленным сертификатом CA. Сохраните сертификат CA в папку «Загрузки».
- Загрузите клиент StrongSwan VPN из магазина Play Store.
- Откройте приложение. Нажмите значок «подробнее» (…) в правом верхнем углу и выберите Сертификаты СА.
- Снова нажмите значок «подробнее» … в правом верхнем углу. Выберите пункт Импорт сертификата.
- Найдите файл сертификата CA в папке «Загрузки» и выберите его для импорта в приложение.
Теперь сертификат импортирован в приложение StrongSwan, и вы можете настроить соединение VPN следующим образом:
Подключение из macos
Выполните следующие шаги по импорту сертификата:
- Дважды щелкните файл сертификата. Откроется экран «Keychain Access» с диалоговым окном, где будет указано: «Keychain Access is trying to modify the system keychain. Enter your password to allow this».
- Введите свой пароль и нажмите Modify Keychain
- Дважды щелкните импортированный сертификат VPN. После этого откроется небольшое окно свойств, где вы сможете указать уровни доверия. Укажите для параметра IP Security (IPSec) значение Always Trust (всегда доверять), после чего вам нужно будет снова ввести пароль. Настройка будет сохранена автоматически после ввода пароля.
После импорта и подтверждения надежности сертификата настройте подключение к VPN, выполнив следующие шаги:
Политики маршрутов
Традиционная маршрутизация основана только на адресе назначения в соответствии с которым шлюз безопасности выбирает кратчайший путь для пересылки пакета. IP Policy Routing (политика маршрутов) предоставляет механизм для изменения маршрутизации по умолчанию и пересылки пакетов на основе политики, определенной сетевым администратором.
Политика маршрута должна быть добавлена в шлюзе для разрешения клиентам IKEv2 доступ в Интернет через маршрутизатор после установления VPN-подключения. Если требуется разрешить для VPN клиентов только доступ к локальной сети, пропустите этот шаг.
Чтобы добавить политику маршрута, разрешающий пользователям IKEv2 доступ в Интернет, перейдите в «Configuration -> Network -> Routing» и нажмите вкладку «Policy Route».
Нажмите кнопку Add (Добавить), чтобы добавить новую запись политики.
- Включить эту запись маршрута (Enable)
- Установить Incoming: Tunnel
- Задать участника (Please select one member): IKEv2_Tunnel
- Установить адрес источника (Source address): IKEv2_POOL
- Установить тип следующего узла (Next-Hop): Trunk
- Установить Trunk: SYSTEM_DEFAULT_WAN_TRUNK
- Оставьте все остальные настройки такими, какие они есть.
- Нажмите ОК, чтобы сохранить настройки
Создание объектов адреса
Адресные объекты могут представлять один IP-адрес или диапазон IP-адресов. Адресные объекты используются в динамических маршрутах, политиках безопасности (файервол), Патруле приложений, фильтрациях контента и политиках VPN-соединений. В этом пошаговом руководстве рассматривается настройка VPN для IKEv2, поэтому необходимо создать два объекта адреса.
Первый объект адреса будет для «пула адресов IKEv2», это будут IP-адреса, которые клиенты Windows получат при успешном соединении VPN. Второй объект адреса отражает IP-трафик, который разрешенчерез туннель, в этом случае это будет «весь трафик».
Чтобы начать создавать адресные объекты, перейдите в меню Configuration -> Object -> Address .
Пул адресов IKEv2
Нажмите кнопку Add (Добавить) , чтобы вставить новый адрес объекта.
- Укажите имя для объекта – например, «IKEv2_POOL»
- Выберите RANGE из выпадающего списка “Address Type”
- Введите начальный и конечный IP-адреса – для примера мы используем 168.101.11 ~ 192.168.101.20
- Нажмите кнопку ОК , чтобы сохранить настройки
Объект Адреса для “всего трафика”
Нажмите кнопку Add (Добавить), чтобы вставить второй объект.
- Укажите имя для объекта – например, «All-Traffic»
- Выберите RANGE из выпадающего списка “Address Type”
- Введите начальный и конечный IP-адреса – для всего трафика начальный IP-адрес должен быть 0,0,0, а конечный IP-адрес – 255.255.255.255.
- Нажмите кнопку ОК , чтобы сохранить настройки
Создать политику vpn-соединения (phase2)
Чтобы создать политику VPN Phase2, перейдите на вкладку «VPN Connection» в меню « Configuration -> VPN -> IPSec VPN» . Нажмите кнопку Add (Добавить), чтобы вставить новое правило VPN.
- Выберите опцию «Show Advanced Settings» в левом верхнем углу и убедитесь, что флажок включения установлен
- Укажите имя для VPN-подключения – например, IKEv2_Tunnel
- Установите параметр «VPN Gateway», чтобы использовать сценарий Remote Access (Server Role) – удаленный доступ (роль сервера)
- Щелкните раскрывающийся список для опции «VPN Gateway» и выберите ранее созданную политику Phase1 [ IKEv2_Tunnel ]
- Установите параметр «Local Policy», чтобы использовать объект адреса, созданный для всего трафика [ All-Traffic ], если разрешен только доступ к локальной сети, выберите объект адреса для локальной сети. Но обратите внимание, что, когда клиент Windows IKEv2 устанавливает VPN-туннель, он будет пытаться отправить весь трафик через это соединение.
Если весь трафик не разрешен параметром Local Policy, то доступ в Интернет будет потерян, пока установлено VPN-соединение.
Чтобы обойти это ограничение, необходимо добавить маршруты политики в таблицу маршрутизации ОС Windows.
(Zyxel не поддерживает создание маршрутов в операционных системах компьютеров) - Установите флажок “Enable Configuration Payload”
- Установите «Пул IP-адресов» [ IKEv2_POOL ]
- Добавьте необязательные адреса сервера DNS и / или WINS
- Добавьте следующие комбинации криптоалгоритмов в «Phase2 Settings»
- -3DES / SHA
- -AES128 / SHA256
- -AES256 / SHA1
- Нажмите ОК, чтобы сохранить настройки
Управление strongswan как службой
Чтобы управлять StrongSwan как службой, вам нужно выполнить следующие шаги по настройке.
Сначала обновите свой локальный кэш пакетов с помощью apt
Затем установите StrongSwan и необходимые плагины для аутентификации:
Теперь вам потребуется копия сертификата СА в каталоге /etc/ipsec.d/cacerts, чтобы ваш клиент мог проверить подлинность сервера. Запустите следующую команду, чтобы скопировать файл ca-cert.pem в каталог:
Чтобы убедиться, что VPN работает только по запросу, используйте systemctl для автоматического отключения StrongSwan:
Затем настройте имя пользователя и пароль, которые вы будете использовать для аутентификации на сервере VPN. Отредактируйте /etc/ipsec.secrets с помощью nano или любого предпочитаемого редактора:
Добавьте следующую строку, редактируя выделенные значения имени пользователя и пароля, чтобы они соответствовали настроенным на сервере:
/etc/ipsec.conf
А теперь отредактируйте файл
/etc/ipsec.conf
для настройки вашего клиента в соответствии с конфигурацией сервера:
/etc/ipsec.conf
Чтобы подключиться к VPN, введите:
Чтобы снова отключиться, введите:
Шаг 1 — установка strongswan
Вначале мы установим StrongSwan, демона IPSec с открытым исходным кодом, а затем настроим его как наш сервер VPN. Также мы установим компонент инфраструктуры открытых ключей (PKI), чтобы создать центр сертификации (СА), который будет предоставлять учетные данные для нашей инфраструктуры.
Начните с обновления кэша локальных пакетов:
Затем установите программное обеспечение с помощью следующей команды:
Дополнительный пакет libcharon-extauth-plugins используется для обеспечения возможности аутентификации различных клиентов для вашего сервера с помощью общего имени пользователя и кодовой фразы.
После завершения установки перейдем к созданию сертификатов.
Шаг 2 — создание центра сертификации
Для идентификации на клиентских системах серверу IKEv2 требуется сертификат. Для упрощения формирования требуемого сертификата пакет strongswan-pki включает утилиту pki, которая может сгенерировать центр сертификации и сертификаты сервера.
Для начала создадим несколько каталогов для хранения всех активо, с которыми мы будем работать. Структура каталогов соответствует некоторым каталогам в /etc/ipsec.d, куда мы постепенно переместим все создаваемые элементы:
Затем мы заблокируем разрешения, чтобы другие пользователи не могли видеть наши частные файлы:
Располагая структурой каталогов для хранения всех элементов, мы можем сгенерировать ключ root. Это будет 4096-битный ключ RSA, который будет использоваться для подписи корневого центра сертификации.
Запустите следующие команды, чтобы сгенерировать ключ:
После этого мы можем переходить к созданию корневого центра сертификации, используя ключ, который мы только что сгенерировали для подписания корневого сертификата:
Флаг –lifetime 3650 используется для обеспечения действительности корневого сертификата центра сертификации на протяжении 10 лет. Корневой сертификат центра обычно не меняется, поскольку его необходимо перераспределять на каждый использующий его сервер и клиент. Исходя из этого, 10 лет — это безопасный срок действия по умолчанию.
Вы можете изменить значение различимого имени distinguished name (DN) на любое другое имя по своему желанию. Обычное имя (поле CN) здесь используется только как индикатор, поэтому оно не обязательно должно совпадать с чем-либо в вашей инфраструктуре.
Настроив и запустив корневой центр сертификации, мы можем создать сертификат, который будет использоваться сервером VPN.
Шаг 3 — генерирование сертификата для сервера vpn
Теперь мы создадим сертификат и ключ для сервера VPN. Этот сертификат позволит клиентам проверять подлинность сервера, используя только что сгенерированный нами сертификат CA.
Вначале создайте закрытый ключ сервера VPN с помощью следующей команды:
Затем создайте и подпишите сертификат сервера VPN, используя ключ центра сертификации, созданный на предыдущем шаге. Запустите следующую команду, но измените поля Common Name (CN) и Subject Alternate Name (SAN) на имя DNS или IP-адрес вашего сервера VPN:
Примечание. Если вы используете IP-адрес вместо имени DNS, вам потребуется указать несколько входов –san. Строка в предыдущем блоке команд, где вы указываете distinguished name (–dn …), должна быть дополнена еще одной строкой, например следующей:
Дополнение –san @IP_address необходимо, так как некоторые клиенты буду проверять наличие в сертификате TLS как записи DNS, так и записи IP-адреса для сервера при проверке его подлинности.
Опция –flag serverAuth используется для указания того, что сертификат будет использоваться для аутентификации сервера, прежде чем будет установлен зашифрованный туннель. Опция –flag ikeIntermediate используется для поддержки более старых клиентов macOS.
Теперь мы сгенерировали все файлы TLS/SSL, необходимые StrongSwan, и можем переместить их в каталог /etc/ipsec.d следующим образом:
На этом шаге мы создали пару сертификатов, которые будут использоваться для защиты связи между клиентом и сервером. Также мы подписали сертификаты ключом CA, и теперь клиент сможет проверять подлинность сервера VPN, используя сертификат CA. После подготовки всех этих сертификатов мы переходим к настройке программного обеспечения.
Шаг 4 — настройка strongswan
StrongSwan имеет файл конфигурации по умолчанию с несколькими образцами, но большинство настроек нужно будет выполнить самостоятельно. Прежде чем начинать, создадим резервную копию файла для справки:
Создайте и откройте новый пустой файл конфигурации с помощью предпочитаемого текстового редактора. Мы будем использовать nano:
Примечание. По мере выполнения данного раздела по конфигурации серверной части VPN вы столкнетесь с настройками, которые относятся к левой и правой сторонам соединения. При работе с VPN IPSec левая сторона, по правилам, обращается к локальной системе, которую вы настраиваете.
Когда вы позже перейдете к настройке клиентов в этом обучающем руководстве, файлы конфигурации клиентов будут обращаться к самим себе, используя различные директивы левой стороны, а к серверу будут обращаться, используя терминологию правой стороны.
Вначале мы укажем StrongSwan регистрировать состояния демонов для целей отладки и разрешить дублирующиеся соединения. Добавьте в файл следующие строки:
/etc/ipsec.conf
Затем мы создадим раздел конфигурации для сервера VPN. Также мы укажем StrongSwan создать туннели IKEv2 VPN и автоматически загружать этот раздел конфигурации при запуске. Добавьте в файл следующие строки:
/etc/ipsec.conf
Также мы настроем обнаружение отсутствующих узлов, чтобы закрывать неиспользуемые соединения при непредвиденном отключении клиента. Добавьте следующие строки:
/etc/ipsec.conf
Затем мы настроим параметры IPSec «левой» стороны сервера. Каждый из следующих параметров обеспечивает конфигурацию сервера для приема соединений от клиентов и корректной идентификации себя. Вы добавите каждую из этих настроек в файл
/etc/ipsec.conf
после того, как вы изучите их и поймете, для чего они используются:
left=%anyЗначение%anyгарантирует использование сервером сетевого интерфейса при получении входящих соединений для последующей связи с клиентами. Например, если вы подключаете клиента через частную сеть, сервер будет использовать частный IP-адрес, где он получает трафик для остальной части подключения.leftid=@server_domain_or_IPЭта опция контролирует имя, которое сервер показывает клиентам. При совмещении со следующей опциейleftcert, опцияleftidобеспечивает совпадение настроенного имени сервера и различимого имени (DN), содержащегося в публичном сертификате.leftcert=server-cert.pemЭта опция — это путь к публичному сертификату для сервера, который вы настроили на шаге 3. Без него сервер не сможет аутентифицировать себя с клиентами или завершить переговоры по настройке IKEv2.leftsendcert=alwaysЗначениеalwaysгарантирует, что любой клиент, который подключается к серверу, всегда будет получать копию публичного сертификата сервера в рамках настроек первоначального соединения.leftsubnet=0.0.0.0/0Последняя опция «слева», которую вы добавите, указывает клиентам на подсети, которые доступны за сервером. В этом случае0.0.0.0/0используется для представления всего набора адресов IPv4, что означает, что сервер будет указывать клиентам передавать весь свой трафик через VPN по умолчанию.
Теперь, когда вы ознакомились с каждой из соответствующих опций «слева», добавьте их в файл следующим образом:
/etc/ipsec.conf
Примечание.
При настройке идентификатора сервера (
leftid
) символ
@
нужно указывать только в случае, если ваш сервер VPN будет идентифицироваться по доменному имени:
/etc/ipsec.conf
Шаг 4. сборка и установка libreswan в ubuntu
Теперь мы можем собрать и установить Libreswan в Ubuntu.
Сначала перейдите в каталог libreswan.
cd "libreswan-$SWAN_VER" || exit 1
Создайте файл параметров сборки.
cat > Makefile.inc.local <<'EOF'
WERROR_CFLAGS =
USE_DNSSEC = false
USE_DH31 = false
USE_NSS_AVA_COPY = true
USE_NSS_IPSEC_PROFILE = false
USE_GLIBC_KERN_FLIP_HEADERS = true
EOFНаконец соберите Libreswan
NPROCS=$(grep -c ^processor /proc/cpuinfo)
[ -z "$NPROCS" ] && NPROCS=1
make "-j$((NPROCS 1))" -s base && make -s install-baseУспешная сборка должна вывести следующее:
.......................................................
running: systemctl --system daemon-reload
running: systemd-tmpfiles --create /usr/lib/tmpfiles.d/libreswan.conf
DESTDIR=''
************************** WARNING ***********************************
The ipsec service is currently disabled. To enable this service issue:
systemctl enable ipsec.service
**********************************************************************
../../OBJ.linux.x86_64/testing/enumcheck/enumcheck -> /usr/local/libexec/ipsec/enumcheck
../../OBJ.linux.x86_64/testing/ipcheck/ipcheck -> /usr/local/libexec/ipsec/ipcheck
../../OBJ.linux.x86_64/testing/fmtcheck/fmtcheck -> /usr/local/libexec/ipsec/fmtcheck
../../OBJ.linux.x86_64/testing/timecheck/timecheck -> /usr/local/libexec/ipsec/timecheckЕсли установка прошла успешно Вы должны быть в состоянии проверить версию.
/usr/local/sbin/ipsec --versionШаг 5 — настройка аутентификации vpn
Теперь наш сервер VPN настроен на принятие подключений клиентов, но мы еще не настроили учетные данные. Нам нужно задать пару настроек в специальном файле конфигурации с именем ipsec.secrets:
- Нам нужно указать StrongSwan, где можно найти закрытый ключ для нашего сертификата сервера, чтобы сервер мог пройти аутентификацию на стороне клиента.
- Также нам потребуется список пользователей, которым будет разрешено подключаться к VPN.
Откроем для редактирования файл secrets
Вначале мы укажем StrongSwan, где можно найти закрытый ключ:
/etc/ipsec.secrets
Затем мы зададим учетные данные пользователя. Вы можете создать любую комбинацию имени пользователя и пароля:
/etc/ipsec.secrets
Сохраните и закройте файл. Мы завершили настройку параметров VPN и теперь можем перезапустить службу VPN, чтобы применить новую конфигурацию:
Мы полностью настроили параметры сервера и учетные данные пользователя на сервере VPN и теперь можем перейти к самой важной части: настройке брандмауэра.
Шаг 5: запустите и включите службу libreswan ipsec
Служба ipsec в настоящее время отключена.
Чтобы включить эту службы запустите:
sudo systemctl enable --now ipsec.serviceПроверьте статус службы:
$ systemctl status ipsec.service ● ipsec.service - Internet Key Exchange (IKE) Protocol Daemon for IPsec Loaded: loaded (/lib/systemd/system/ipsec.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2021-06-29 09:17:26 CEST; 37s ago Docs: man:ipsec(8) man:pluto(8) man:ipsec.conf(5) Main PID: 13782 (pluto) Status: "Startup completed." Tasks: 2 (limit: 2299) CGroup: /system.slice/ipsec.service └─13782 /usr/local/libexec/ipsec/pluto --leak-detective --config /etc/ipsec.conf --nofork Jun 29 09:17:26 ubuntu16 pluto[13782]: adding interface eth0/eth0 116.203.48.203:4500 Jun 29 09:17:26 ubuntu16 pluto[13782]: Kernel supports NIC esp-hw-offload Jun 29 09:17:26 ubuntu16 pluto[13782]: adding interface lo/lo (esp-hw-offload=no) 127.0.0.1:500 Jun 29 09:17:26 ubuntu16 pluto[13782]: adding interface lo/lo 127.0.0.1:4500 Jun 29 09:17:26 ubuntu16 pluto[13782]: Kernel supports NIC esp-hw-offload Jun 29 09:17:26 ubuntu16 pluto[13782]: adding interface lo/lo (esp-hw-offload=no) ::1:500 Jun 29 09:17:26 ubuntu16 pluto[13782]: Kernel supports NIC esp-hw-offload Jun 29 09:17:26 ubuntu16 pluto[13782]: adding interface eth0/eth0 (esp-hw-offload=no) 2a01:4f8:c2c:83a2::1:500 Jun 29 09:17:26 ubuntu16 pluto[13782]: loading secrets from "/etc/ipsec.secrets" Jun 29 09:17:26 ubuntu16 pluto[13782]: no secrets filename matched "/etc/ipsec.d/*.secrets"
Шаг 6 — настройка брандмауэра и переадресации ip ядра
После завершения настройки StrongSwan нам нужно настроить брандмауэр, чтобы разрешить прохождение и перенаправление трафика VPN.
Если вы следовали указаниям модуля по начальной настройке сервера, у вас должен быть включен брандмауэр UFW. Если вы еще не настроили UFW, вам следует начать с добавления правила, разрешающего соединения SSH через брандмауэр, чтобы ваш текущий сеанс не был прерван при активации UFW:
Затем активируйте брандмауэр с помощью следующей команды:
Теперь добавьте правило, которое будет разрешать трафик UDP на стандартных портах IPSec 500 и 4500:
Затем мы откроем один из файлов конфигурации UFW, чтобы добавить несколько политик нижнего уровня для маршрутизации и перенаправления пакетов IPSec. Но прежде чем мы сможем сделать это, нам нужно определить, какой сетевой интерфейс на нашем сервере используется для доступа в Интернет. Определите этот интерфейс с помощью запроса устройства, связанного с маршрутом по умолчанию:
Ваш публичный интерфейс должен содержать слово «dev». Например, в этом результате показан интерфейс с именем eth0, который выделен ниже:
Output
Шаг 7 — тестирование подключения vpn на windows, macos, ubuntu, ios и android
Мы завершили подготовку, и пришло время для тестирования. Вначале нужно скопировать созданный вами сертификат CA и установить его на клиентские устройства, которые будут подключаться к VPN. Для этого удобнее всего выполнить вход на ваш сервер и вывести содержимое файла сертификата:
Вывод будет выглядеть следующим образом:
Output
Скопируйте эти данные на свой компьютер, включая строки —–BEGIN CERTIFICATE—– и —–END CERTIFICATE—–, и сохраните их в файл с понятным именем, например, ca-cert.pem. Созданный файл должен иметь расширение .pem.
Также вы можете использовать SFTP, чтобы перенести файл на свой компьютер.
Когда файл ca-cert.pem будет загружен на ваш компьютер, вы можете настроить подключение к VPN.
Заключение
В этом обучающем модуле вы создали сервер VPN, использующий протокол IKEv2. Вы узнали о директивах, которые контролируют левую и правую стороны подключения как на сервере, так и на клиентах. Также вы настроили клиент Windows, macOS, iOS, Android или Linux для подключения к VPN.
Чтобы добавить или удалить пользователей, снова перейдите на Шаг 5. Каждая строка в /etc/ipsec.secrets предназначена для одного пользователя, поэтому добавление или удаление пользователей или изменение паролей требует редактирования файла.
Теперь вы можете быть уверены, что ваша деятельность онлайн будет защищена, куда бы вы ни зашли, независимо от устройства, которое вы используете для входа в Интернет.
источник


