# Настройка OpenVPN в pfSense на Яндекс Облаке

> Настройка OpenVPN сервера на pfSense в Яндекс Облаке - создание сертификатов, конфигурация туннеля, правила файрвола и подключение удаленных клиентов

Source: https://opennix.org/docs/yc/pfsense/openvpn-setup/


Настройка OpenVPN для доступа к приватной части сети.

1. В первую очередь необходимо установить пакет `openvpn-client-export`. Для этого следует открыть веб-интерфейс и выбрать `System --> Package Manager --> Available Packages`. В строке поиска ввести название пакета `openvpn-client-export` и нажать `“Install”`. Окно установки пакета представлено на рисунке 1. 

![Установка пакета openvpn-client-export в pfSense](/img/openvpn-client-export.webp)
<p style="text-align: center;">Рисунок 1. Установка openvpn-client-export</p>

Необходимо дождаться завершения установки.

2. После установки пакета можно перейти к настройкам. Для этого следует перейти  `VPN --> OpenVPN` и выбрать `Wizards`.
   
В﻿ примере будут использоваться локальные пользователи, как это показано на рисунке 2. 

![Настройка мастера OpenVPN в pfSense](/img/openvpn-server-st1.webp)
<p style="text-align: center;">Рис. 2. Настройка openvpn-client-export</p>

Необходимо нажать кнопку “Next” и на следующем экране создать Certification authority. 
Параметры сертификата приведены в таблице 1. 

|    Название         |              Описание                                                 |
| ------------------- | --------------------------------------------------------------------- |
| Descriptive name    | З﻿адаем имя                                                           |
| Common Name         | В﻿нутреннее имя, если пустое то будет использоваться Descriptive name |
| Country Code        | Двухбуквенный код страны                                              |
| State or Province   | П﻿олное название штата/области                                        |
| City                | Н﻿азвание города                                                      |
| Organization        | И﻿мя организации                                                      |
| Organizational Unit | И﻿мя отдела/департамента                                              |
<p style="text-align: center;">Таблица 1. Параметры CA</p>

После введения всех необходимых данных, следует нажать кнопку `“Add new CA”` и повторить те же действия для `Server Certificate`. 

3. После создания сертификатов можно переходить к настройкам OpenVPN сервера.
   
Первым шагом следует заполнить описание (Description), как это показано на рисунке 2. 

![Основная информация о сервере OpenVPN](/img/openvpn-server-st2.webp)
<p style="text-align: center;">Рис. 2. Внесение основной информации о сервере</p>

На следующем этапе требуется выбрать протокол (Protocol), интерфейс (Interface) и порт (Local Port) для будущего сервера, как это представлено на рисунке 3. 

![Выбор протокола и порта сервера OpenVPN](/img/openvpn-server-st3.webp)
<p style="text-align: center;">Рис. 3. Определение протокола, интерфейса и порта</p>

Н﻿астройки Cryptographic Settings выставляются согласно заданным требованиям. 

4. Необходимо настроить туннель. Основные параметры настройки представлены на рисунке 5. 

![Настройка туннеля OpenVPN](/img/openvpn-server-st4.webp)
<p style="text-align: center;">Рис. 5. Настройка туннеля </p>

Необходимо заполнить следующие параметры: 

* IPv4 Tunnel Network - сеть, выделяемая клиентам. Обратите внимание, что она не должна пересекаться с вашими сетями;
* IPv4 Local Network - сеть или сети, к которым будет предоставлен доступ из сети VPN. 

Остальные настройки выставляются по желанию и потребностям. После заполнения всех нужных параметров требуется нажать кнопку Next. 

Следующим шагом требуется отметить Firewall Rule и OpenVPN rule, как это показано на рисунке 6. 

![Настройка правил Firewall и OpenVPN](/img/openvpn-server-st5.webp)
<p style="text-align: center;">Рис. 6. Настройка Firewall и OpenVPN </p>

После того, как выставите требуемые параметры, нажмите кнопку “Next”, а затем “Finish” для завершения. После этих действий, новый сервер должен появиться в списке, как это показано на рисунке 7. 

![Список серверов OpenVPN в pfSense](/img/openvpn-servers.webp)
<p style="text-align: center;">Рис. 7. Окно серверов OpenVPN </p>

5. Следующим шагом требуется создать нового пользователя.  Для этого следует выбрать `System` --> `User Manager `--> `Users` и﻿ нажать кнопку “Add”. В открывшемся окне необходимо задать имя пользователя (Username) и придумать для него пароль (Password). Пример заполнения полей показан на рисунке 8.  

![Добавление нового пользователя VPN в pfSense](/img/vpnuser.webp)
<p style="text-align: center;">Рис. 8. Добавление нового пользователя </p>

6. Необходимо настроить сертификат. Для этого в окне Create Certificate for Users требуется заполнить все поля и выбрать сертификат, который был создан во время настройки OpenVPN сервера, как это показано на рисунке 9.

![Создание сертификата для пользователя OpenVPN](/img/certificate.webp)
<p style="text-align: center;">Рис. 9. Настройка сертификата </p>

После заполнения всех полей требуется нажать кнопку “Save”. 

Для дальнейшей настройки требуется перейти `VPN --> OpenVPN` и открыть вкладку “Client Export”. В разделе “Client Connection Behavior” нужно выбрать “Other” и прописать Public IP или доменное имя при наличии. Внешний вид окна показан на рисунке 10. 

![Настройка Connection Behavior для клиентов OpenVPN](/img/hostname.webp)
<p style="text-align: center;">Рис. 10. Настройка Connection Behavior для клиентов </p>

7. В окне OpenVPN Clients требуется выбрать только что созданного пользователя, а затем экспортировать конфигурацию, как это представлено на рисунке 11.  

![Экспорт конфигурации клиента OpenVPN](/img/export.webp)
<p style="text-align: center;">Рис. 11. Окно клиентов OpenVPN </p>

ННастройка клиента производится в соответствии с ОС пользователя. 

В рамках данного руководства проверка будет осуществляться на тестовой виртуальной машине без публичного IP-адреса. После настройки она должна быть доступна с подключенным VPN. 

```shell
 ssh ubuntu@10.128.0.26
Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.0-79-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Wed Aug 30 08:59:32 AM UTC 2023

  System load:  0.0                Processes:             131
  Usage of /:   23.5% of 17.63GB   Users logged in:       0
  Memory usage: 16%                IPv4 address for eth0: 10.128.0.26
  Swap usage:   0%

 * Strictly confined Kubernetes makes edge and IoT secure. Learn how MicroK8s
   just raised the bar for easy, resilient and secure K8s cluster deployment.

   https://ubuntu.com/engage/secure-kubernetes-at-the-edge

Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status

*** System restart required ***
Last login: Wed Aug 30 08:59:33 2023 from 10.0.8.2
ubuntu@test-vm:~$ 

```

Также необходимо удостовериться, что pfSense начал отслеживать пакеты. Для это следует выполнить следующие команды:

Проверка внешнего IP:

```shell
ubuntu@test-vm:~$ curl -4 icanhazip.com
51.250.89.142
ubuntu@test-vm:~$ 

```
Проверка, что pfSense стал шлюзом для виртуальной машины: 

```shell
ubuntu@test-vm:~$ traceroute google.com
traceroute to google.com (64.233.165.102), 30 hops max, 60 byte packets
 1  _gateway (10.128.0.1)  0.821 ms  0.801 ms  0.792 ms
 2  * * *
 3  pfsense.ru-central1.internal (10.128.0.11)  1.161 ms  1.151 ms  1.142 ms
```

Как можно увидеть, после шлюза 10.128.0.1 идет LAN интерфейс pfSense.

На этом настройка закончена. 


