Автоматическая установка L2TP/IPsec VPN-клиента на FreeBSD


В этой статье рассмотрим автоматизированный скрипт для установки и настройки L2TP/IPsec VPN-клиента на FreeBSD. Скрипт полностью автоматизирует процесс установки strongSwan, mpd5 и создания всех необходимых конфигурационных файлов.

Требуется сервер настроенный аналогично этому https://github.com/hwdsl2/setup-ipsec-vpn

Возможности скрипта

  • Автоматическая установка пакетов: strongSwan (IPsec) и mpd5 (L2TP)
  • Интерактивный ввод данных: IP-адрес сервера, PSK, логин и пароль
  • Создание конфигураций: swanctl.conf для strongSwan и mpd.conf для mpd5
  • Скрипты управления: vpnup, vpndown, vpnstatus для удобного управления
  • Автозапуск сервисов: настройка rc.conf для автоматического запуска
  • Тестирование: автоматическая проверка работоспособности после установки

Системные требования

  • FreeBSD 12.0 или выше
  • Права root для установки пакетов и настройки системы
  • Доступ к интернету для загрузки пакетов
  • Данные для подключения к VPN-серверу

Установка и запуск

Шаг 1: Загрузка скрипта

Скачиваем скрипт

curl -O https://blognode.ru/file_download/10/freebsd-vpn-installer.sh

либо по ссылке

Шаг 2: Установка прав

chmod +x freebsd-vpn-installer.sh

Шаг 3: Запуск установки

sudo ./freebsd-vpn-installer.sh

Процесс установки

Скрипт проведет вас через следующие этапы:

1. Проверка системы

Скрипт автоматически проверит:
  • Права root
  • Версию FreeBSD
  • Доступность пакетного менеджера

2. Ввод данных VPN

Вам потребуется ввести:
  • IP-адрес VPN-сервера (например: 90.123.130.11)
  • Pre-Shared Key (PSK) – секретный ключ
  • Имя пользователя VPN
  • Пароль VPN

Важно: Все поля обязательны для заполнения. Пароль вводится скрыто для безопасности.

3. Установка пакетов

Скрипт автоматически установит:

pkg install -y security/strongswan
pkg install -y net/mpd5

4. Создание конфигураций

strongSwan (IPsec):

/usr/local/etc/swanctl/swanctl.conf

Содержит настройки IPsec-туннеля с оптимальными параметрами шифрования.

mpd5 (L2TP):

/usr/local/etc/mpd5/mpd.conf

Настроен для получения IP-адреса от сервера и корректной работы поверх IPsec.

5. Создание скриптов управления

Скрипт создает три команды для управления VPN:

  • vpnup – запуск VPN (по умолчанию весь трафик через VPN)
  • vpnup -n – запуск только туннеля без перенаправления трафика
  • vpndown – остановка VPN с восстановлением маршрутов
  • vpnstatus – детальная проверка статуса соединения

Использование VPN

Запуск VPN

1. Запуск с полным перенаправлением трафика (рекомендуется)

vpnup

2. Запуск только туннеля без перенаправления трафика

vpnup -n

Проверка статуса

vpnstatus
Команда покажет:
  • Статус strongSwan и активные IPsec-соединения
  • Статус mpd5 и интерфейса ng0
  • Информацию о маршрутизации
  • Внешний IP-адрес

Остановка VPN

vpndown
Команда автоматически:
  • Остановит mpd5 и strongSwan
  • Восстановит исходные маршруты
  • Вернет сетевые настройки в первоначальное состояние

Диагностика проблем

Проверка логов

Логи mpd5:

tail -f /var/log/mpd.log

Логи strongSwan:

tail -f /var/log/messages | grep charon

Проверка сервисов

Статус strongSwan:

service strongswan status

Статус mpd5:

 service mpd5 status

Проверка интерфейсов

Проверка интерфейса ng0:

ifconfig ng0

Проверка маршрутов:

netstat -rn

Проверка IPsec

Список соединений:

swanctl --list-conns

Активные Security Associations:

swanctl --list-sas

Особенности работы

Получение IP-адреса

Скрипт настраивает mpd5 для получения IP-адреса из VPN-подсети сервера (например, 192.168.10.x), а не использования локального IP. Это обеспечивает корректную работу перенаправления трафика.

Маршрутизация

При запуске vpnup скрипт:
  1. Сохраняет текущий маршрут по умолчанию
  2. Добавляет маршрут до VPN-сервера через исходный шлюз
  3. Перенаправляет весь трафик через VPN-интерфейс

Автозапуск

Сервисы добавляются в автозапуск:

В /etc/rc.conf

strongswan_enable="YES"
mpd5_enable="YES"

Безопасность

  • PSK и пароли не сохраняются в истории команд
  • Конфигурационные файлы имеют ограниченные права доступа
  • Используются современные алгоритмы шифрования (AES-256, SHA-1)

Совместимость

Скрипт протестирован с:
  • FreeBSD 12.x, 13.x, 14.x
  • VPN-серверами на базе strongSwan/libreswan
  • L2TP/IPsec серверами, установленными через популярные скрипты. Например https://github.com/hwdsl2/setup-ipsec-vpn

Устранение неполадок

IPsec не устанавливается

Проверьте параметры шифрования на сервере:

swanctl --list-conns
swanctl --list-sas

Попробуйте перезапустить strongSwan:

service strongswan restart
swanctl --load-all

L2TP не подключается

Проверьте логи mpd5:

grep L2TP /var/log/mpd.log

Убедитесь, что IPsec-туннель активен:

swanctl --list-sas | grep ESTABLISHED

Нет интернета через VPN

Проверьте маршруты:

netstat -rn | grep ng0

Проверьте внешний IP:

curl https://ipinfo.io/ip

Попробуйте ping до VPN-сервера:

ping 192.168.10.1

Заключение

Автоматизированный скрипт значительно упрощает настройку L2TP/IPsec VPN-клиента на FreeBSD. Он берет на себя все технические детали установки и конфигурации, позволяя пользователю сосредоточиться на использовании VPN.

Скрипт особенно полезен для:
  • Системных администраторов, управляющих несколькими FreeBSD-серверами
  • Пользователей, которым нужен быстрый и надежный способ настройки VPN
  • Автоматизации развертывания VPN-клиентов в корпоративной среде

Примечание: Для продакшн-использования рекомендуется предварительно протестировать скрипт в тестовой среде и адаптировать под специфические требования вашей инфраструктуры. Скрипт предоставляется по лицензии MIT, т.е. «как есть».

Обсуждение статьи на форуме, регистируйтесь, задавайте вопросы.


Оцените статью или поделитесь ей в соцсетях:

+ 0 | - 0

Рекомендуемые статьи: