Настройка Proxy/VPN сервера (Часть третья OpenVPN)

Оцените статью

А вот сейчас попробуем решить задачу уровня мстителей. А именно, объединим LXC-контейнер и роутер MikroTik. Тут как бы видится две проблемы, первая это запустить OpenVPN в LXC-контейнере, а вторая поднять OpenVPN-сервер на Mikrotik.
P.S. Эксперимент неудачный, но на всякий случай задокументируем.

OpenVPN-сервер на роутере MikroTik

На эту тему уже только ленивый не написал, поэтому я тоже напишу. Хотя я и ленивый.

Создаем корневой сертификат.

/certificate add name=openvpn-ca country="RU" state="54" locality="NSK" organization="INTERLAN" common-name="openvpn-ca" key-size=2048 days-valid=3650 key-usage=crl-sign,key-cert-sign 
/certificate sign openvpn-ca ca-crl-host=127.0.0.1

Создаем сертификат сервера.

/certificate add name=ovpn-server country="RU" state="54" locality="NSK" organization="INTERLAN" common-name="ovpn-server" key-size=2048 days-valid=3650 key-usage=digital-signature,key-encipherment,tls-server 
/certificate sign ovpn-server ca="openvpn-ca"

Аналогично создаем сертификат клиента.

/certificate add name=client-01 country="RU" state="54" locality="NSK" organization="INTERLAN" common-name="client-01" key-size=2048 days-valid=365 key-usage=tls-client 
/certificate sign client-01 ca="openvpn-ca"

Проверяем, что у нас в winbox появилось.

Openvpn на MikroTik

Экспортируем сертификат.

/certificate export-certificate openvpn-ca type=pkcs12 export-passphrase=12345678
/certificate export-certificate client-01 type=pkcs12 export-passphrase=12345678

Создаем пул адресов которые будут получать наши клиенты.

/ip pool add name=ovpn-pool ranges=10.107.72.100-10.107.72.199

Создаем PPP-профиль.

/ppp profile add local-address=127.0.0.1 name=ovpn remote-address=ovpn-pool
/ppp aaa set accounting=yes

Создаем пользователя.

/ppp secret add name=client-01 password=xxxPasswordxxx profile=ovpn service=ovpn

Создаем интерфейс.

/interface ovpn-server server set enabled=yes certificate=ovpn-serv default-profile=ovpn  require-client-certificate=yes auth=sha1 cipher=aes256

Или аналогично через winbox.

Openvpn интерфейс в Mikrotik

Разрешаем входящий трафик на порт 1194.

/ip firewall filter add action=accept chain=input protocol=tcp dst-port=1194
/ip firewall filter add action=accept chain=input protocol=udp dst-port=1194

OpenVPN-клиент в контейнере LXD

Настройка LXD-контейнера по старой схеме.

В итоге, на финальной итерации приключений с VPN/Proxy у меня получилась такая картина.

Первым делом ставим в контейнер пакеты которые нам понадобятся для запуска OpenVPN-клиента и сопроводительные пакеты для диагностики работы и просто удобства.

# apt-get install openvpn easy-rsa bridge-utils
# apt-get install traceroute net-tools iptraf-ng mc curl wget

Обязательно убедитесь, что на всех хостах одинаковый часовой пояс и включена и работает синхронизация точного времени (можно влететь в ситуацию когда OpenVPN будет сообщать, что сертификат еще не активен и это довольно часто случается).

# dpkg-reconfigure tzdata

Current default time zone: 'Asia/Novosibirsk'
Local time is now:      Thu Apr 24 15:25:31 +07 2025.
Universal Time is now:  Thu Apr 24 08:25:31 UTC 2025.

Проверяем синхронизацию времени.

root@srv-lxc-openvpn:~# timedatectl
               Local time: Thu 2025-04-24 15:26:42 +07
           Universal time: Thu 2025-04-24 08:26:42 UTC
                 RTC time: n/a
                Time zone: Asia/Novosibirsk (+07, +0700)
System clock synchronized: yes
              NTP service: inactive
          RTC in local TZ: no

Сейчас у нас NTP не активно и надо установить пакет chrony.

# apt-get install chrony
# systemctl enable chrony

Повторная проверка, что все хорошо.

# timedatectl
               Local time: Thu 2025-04-24 15:49:22 +07
           Universal time: Thu 2025-04-24 08:49:22 UTC
                 RTC time: n/a
                Time zone: Asia/Novosibirsk (+07, +0700)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

Продолжаем настройку хоста и распаковываем полученные .p12 файлы.

$ openssl pkcs12 -in ./cert_export_client-01.p12 -nocerts -out privateKey.pem
$ openssl pkcs12 -in ./cert_export_client-01.p12 -clcerts -nokeys -out publicCert.pem
$ openssl pkcs12 -in ./cert_export_openvpn-ca.p12 -clcerts -nokeys -out CACert.pem

Удаляем пароль из приватного ключа.

$ openssl rsa -in privateKey.pem -out privateKey_no_pass.pem

Конфигурация клиента.

client
dev tun
proto tcp
remote 37.194.5.244 1194
resolv-retry infinite
nobind
persist-tun

ca CACert.pem
cert publicCert.pem
key privateKey_no_pass.pem

verb 5
remote-cert-tls server

data-ciphers AES-256-GCM:AES-128-GCM:AES-256-CBC
data-ciphers-fallback AES-256-CBC

auth-user-pass

И вот тут я словил ошибку.

duplicate packet, dropping

В итоге, победить ее я не смог и эксперимент признаем неудачным.

Похожие записи

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла (один мастер с возможностью запуска пользовательских подов, PVC в каталоге на хосте, сеть на Calico)

В этой статье мы рассмотрим пошаговую настройку кластера Kubernetes на Ubuntu 24.04 с тремя узлами: один мастер (который также может запускать пользовательские поды) и два рабочих узла. Мы настроим PersistentVolume…

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

В рамках создания собственного кластера Kubernetes я поднаял кластер Mysql который работает в режиме Master-Slave и Slave-узлы соответственно работают в режиме read-only, а мастер в read-write. Соответственно мне нужен балансировщик…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Читать еще статьи

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла (один мастер с возможностью запуска пользовательских подов, PVC в каталоге на хосте, сеть на Calico)

Настройка кластера Kubernetes в Ubuntu Linux 24.04: три узла (один мастер с возможностью запуска пользовательских подов, PVC в каталоге на хосте, сеть на Calico)

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

Инструкция по установке и настройке ProxySQL в Ubuntu 24.04

Полное руководство по настройке UFW в Ubuntu: от основ до продвинутых правил

Полное руководство по настройке UFW в Ubuntu: от основ до продвинутых правил

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования