Автоматическая установка 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
скрипт:
- Сохраняет текущий маршрут по умолчанию
- Добавляет маршрут до VPN-сервера через исходный шлюз
- Перенаправляет весь трафик через 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, т.е. «как есть».
Обсуждение статьи на форуме, регистируйтесь, задавайте вопросы.
Оцените статью или поделитесь ей в соцсетях:
Рекомендуемые статьи: