FreeRADIUS сервер для мониторинга подключений к серверу и сбора статистики

Помимо разработки обучающих материалов, я люблю копаться в различных технологиях, которые значительно упрощают жизнь в интернет пространстве. Одной из таких технологий является WireGuard — VPN, который сможет поставить абсолютно каждый.

Что такое VPN

Virtual Private Network (Частная Виртуальная Сеть) — это расширение для публичной сети, позволяющее имитировать еще одну сеть поверх уже существующей, к которой может подключаться ограниченное количество устройств.

Обычно «виртуальное» подключение формируется между локальным компьютером и сервером. После этого подключенные системы получают преимущества приватной сети. Уровень доверия к ней многократно возрастает благодаря используемым механизмам защиты трафика. И это несмотря на низкий уровень доверия к сети, на базе которой строится VPN. После подключения к VPN можно управлять защищенными файлами, доступными только для членов сети, скрывать исходящий трафик и шифровать его.

Основные сценарии использования VPN

  • Изначально VPN разрабатывалась для офисов и крупных корпораций, чтобы сотрудники могли подключаться к корпоративной сети и работать удаленно, используя мобильные устройства и домашние компьютеры. Их защищают с помощью технологий туннелинга.
  • Потом эти возможности начали использоваться для обхода разного рода блокировок. Например, региональные ограничения от сервисов в духе Pandora, Hulu, Amazon и Tidal. Или блокировки со стороны государства, запрещающие посещать те или иные ресурсы в связи с действующим законодательством.
  • Также с помощью VPN строятся защищенные каналы связи между удаленными офисами. Например, если штаб-квартира компании находится в Лондоне, а один из филиалов в Уэльсе, то для их безопасного (защищенного от вмешательства третьих лиц) обмена данными потребуется VPN.

Возможности WireGuard VPN

  • Встроенный модуль для определения алгоритмов маршрутизации трафика;
  • Есть версии клиента для ПК Windows, Mac OS, Linux и смартфонов Android, iOS;
  • Обеспечение пользовательской конфиденциальности и анонимности, скрытие IP-адреса; 
  • Можно добавить собственные конфигурации подключения и настроить локальную сеть;
  • Работа с инфраструктурой протокола Noise, Curve25519, ChaCha20, Poly1305, BLAKE2 и т.д.

Преимущества

  • Кодовая база состоит всего из 4000 строк;
  • Быстрое развертывание панели Virtual Private Network;
  • Сохраняет конфигурационный файл сервера в отдельную папку;
  • Позволяет подключиться с использованием протоколов IKEV2, IPSEC;
  • Показывает параметры вашего соединения, выводит сведения о маршрутизаторе, DNS и пр.

Недостатки

  • Англоязычная локализация;
  • Отсутствие детальных инструкций.

Далее я опишу процесс настройки VPN протоколу L2TP в системе Debina

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

Необходимые пакеты L2TP для VPN соединения есть в репозиториях Debian 10, поэтому просто ставим их при помощи менеджера пакетов Synaptic.

Открываем менеджер и в поиске пишем L2TP.

после поиска отмечаем для установки два пакета

network-manager-l2tp и его «графическую часть» gnome, удобно для тех кто все делает в графическом интерфейсе

Отмечаем нужные пакеты для установки

В результате выделится зеленым три пакета, для установки.

Со всем соглашаемся и нажимаем применить, дожидаемся окончания установки.

Устанавливаем пакеты для L2tp в терминале

Так же можно все эти пакеты установить командами в терминале, открываем терминал и последовательно выполняем команды

Обновляем список пакетов

sudo apt update

Устанавливаем пакет network-manager-l2tp

sudo apt install network-manager-l2tp

Устанавливаем пакет network-manager-l2tp-gnome

sudo apt install network-manager-l2tp-gnome

Установка

1.  Арендуем VPS сервер на Ubuntu на DigitalOcean, Vultr, Linode или любом другом хостинге в стране, где интернет блокируют не так сильно. Можно даже условно-бесплатно.

2. Подключаемся по SSH На Windows это Putty, на macOS и Linux используйте терминал. Если подключились — продолжаем. Если подключение не идёт — вероятно, этот IP-адрес уже забанили, попробуйте выбрать другой location или просто создайте новый сервер, у него будет другой IP.

3. Обновляем систему и репозитории

apt update && apt upgrade -y

4. Скачиваете Wireguard

wget -n-s/wireguard-install/master/ -O

5. Запускаем установку Wireguard

bash

6. На запрос DNS выбираете №1 или №3

7. На запросы об IPv4 и IPv6 отвечаете «Yes»

8. На последнем этапе вы увидите QR-код Его можно использовать в клиенте на мобильном телефоне. Сделайте скриншот и сохраните куда-нибудь, чтобы быстро подключаться в дальнейшем.

9. Получите конфигурацию в тексте

cat /root/

Её можно использовать для подключения к VPN на компьютере.

10. Перезагрузите сервер

reboot

Всё, ваш новый VPN работает.

Как мы выбирали VPN-протокол

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

Мы выбрали самые известные реализации протоколов и отсеяли не подходящие по условиям исходной задачи.

А условия всего два, я напомню:

  • Стабильное и надёжное подключение.
  • Без установки стороннего программного обеспечения на устройство клиента.

Пробегусь по протоколам и кратко расскажу о них + расскажу причины, почему тот или иной протокол нам не подошёл.

PPTP (Point-To-Point Tunneling Protocol)

Один из самых старейших VPN протоколов, разработанный компанией Microsoft. Из-за солидного возраста протокол поддерживается большинством операционных систем, но в то же время не может обеспечить стабильное и надёжное соединение. Компания Microsoft советует использовать L2TP или SSTP на замену PPTP.

Этот протокол прост в настройке и не требователен к ресурсам сервера, но проблемы с безопасностью заставляют отказаться от его использования в наших целях.

L2TP/IPSec

Протокол во многом схож с PPTP, разрабатывался и принимался практически одновременно с ним. Этот протокол более требователен к вычислительным мощностям, часто используется интернет-провайдерами, т.к. считается более эффективным для построения виртуальных сетей. L2TP/IPsec позволяет обеспечить высокую безопасность данных, поддерживается всеми современными операционными системами. Есть одно но: он инкапсулирует передаваемые данные дважды, что делает его менее эффективным и более медленным, чем другие VPN-протоколы.

От этого протокола пришлось отказаться т.к. он более требователен к вычислительным мощностям сервера, а значит велик риск получить стабильное, но медленное соединение, что может огорчить пользователей.

IKEv2/IPSec

Был разработан Microsoft совместно с Cisco, существуют реализации протокола с открытым исходным кодом (например, OpenIKEv2, Openswan и strongSwan).

Поддерживает Mobility and Multi-homing Protocol (MOBIKE), что обеспечивает устойчивость к смене сетей.

IKEv2 очень хорошо подходит для использования на мобильных устройствах, которые чаще всего склонны к переключению между WiFi и мобильным интернетом.

IKEv2 имеет нативную поддержку в большинстве операционных систем.

Вот этот вариант нам уже больше подходит, т.к. поддержка Mobility and Multi-homing Protocol будет очень большим плюсом при использовании на мобильных устройствах.

OpenVPN

Разработан компанией OpenVPN Technologies.

Протокол с открытым исходным кодом, который прошёл все возможные проверки безопасности. Протокол OpenVPN стабилен и может обеспечить хорошую скорость передачи данных. Ещё одно преимущество протокола в том, что он использует для работы стандартные протоколы TCP и UPD, а также может работать на любом из портов. Это усложняет блокировку VPN сервиса провайдерами.

Для подключения к сети с использованием OpenVPN, необходимо устанавливать дополнительное программное обеспечение, что иногда бывает затруднительно или невозможно.

Этот вариант нам бы тоже подошёл, но, к сожалению, из-за необходимости установки клиента, придётся отказаться от этого протокола.

Wireguard

На данный момент это самый свежий протокол VPN. Его часто сравнивают с IPSec и OpenVPN, и называют его их заменой, но он всё ещё слишком сырой, чтобы использовать его в больших масштабах.

Лучшие результаты этот протокол показывает на Unix системах, т.к. он реализован в виде модуля ядра Unix. Но эта высокая пропускная способность достигается за счёт замедления сетевой активности других приложений.

Чтобы настроить на своём мобильном устройстве данный протокол, необходимо будет установить клиент, что тоже не всегда возможно в силу обстоятельств.

И снова необходимость установки дополнительного клиента на устройство отменяет все шансы на использование этого протокола в наших целях.

В итоге мы решили остановится на IKEv2/IPSeс, по следующим причинам:

  • Поддержка Mobility and Multi-homing Protocol (MOBIKE).
  • Нативная поддержка в большинстве операционных систем.
  • Обеспечивает высокую скорость соединения.
  • Не требователен к ресурсам сервера.

Перейдём от теории к практике.

Установка WireGuard

Для установки нужно перейти в Terminal:

Сама же установка WireGuard будет происходить из этого репозитария — GitHub.

Сначала установим инструмент curl:

sudo apt install curl

Вставка в SnowFlake происходит по комбинации CTRL + SHIFT + V.

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

curl -manager/main/ --create-dirs -o /usr/local/bin/

Делаем скрипт исполняемым:

chmod +x /usr/local/bin/

И запускаем установку VPN:

bash /usr/local/bin/

В момент установки VPN система может запросить изменение конфига, соглашаемся, введя латинскую букву “y”:

В процессе установки скрипт также будет спрашивать, какие настройки ему следует использовать. Просто нажимаете “Enter”, что приведет к применению рекомендуемых настроек:

После применения рекомендуемых параметров, скрипт запросит у вас название для клиента:

Рекомендую писать туда название устройства, на котором будет применяться данный VPN. В процессе вы сможете создать еще несколько профилей для каждого из устройства. Это нужно для того, чтобы учитывать статистику трафика каждого девайса.

Шаг Скрипт для сбора списков заблокированных адресов

Это возможно благодаря крутейшему сервису , который обрабатывает выгрузки Роскомнадзора и отдает их в виде списков IP-адресов в машиночитаемых форматах. Мы настроим периодическую выгрузку списков заблокированных адресов с , чтобы всегда иметь актуальную информацию о блокировках. По моему опыту обновлять этот список раз в сутки (например, ночью) вполне достаточно.

Кроме того, нам нужно настроить файрволл роутера, чтобы он помечал пакеты, которые направляются к заблокированным адресам, специальным маркером. Такие маркированные пакеты должны маршрутизироваться роутером через VPN.

Шаг Скрипт для сбора списков заблокированных адресов

Начнём со скрипта, который реализует эту логику по обновлению списков заблокированных адресов.

  1. Установим зависимости:

    opkg install ipset curl
  2. Создадим файл /etc/init.d/hirkn со скриптом следующего содержания:

    #!/bin/sh START=99 dir=/tmp/lst mkdir -p $dir echo "Downloading lists of blocked addresses..." curl -z $dir/ --output $dir/ curl -z $dir/ --output $dir/ echo "Restarting firewall..." /etc/init.d/firewall restart

    Этот скрипт скачивает два списка заблокированных адресов — один в виде сетей (иногда РКН блокирует адреса целыми подсетями), другой — обобщенный список отдельных заблокированных адресов. За счёт обобщения в небольшие подсети он содержит не миллионы строк, а всего лишь что-то около 15 тысяч. Нам нужны оба списка, они не пересекаются между собой. Файлы сохраняются в каталог /tmp, который в OpenWRT хранится в оперативной памяти — это должно работать быстро. В конце скрипт перезапускает файлволл. Настройка файлволла будет происходит позже.

  3. Добавим этому скрипту права на выполнение:

    chmod +x /etc/init.d/hirkn
  4. Добавим скрипт в «автозапуск», чтобы он выполнялся при включении роутера после всех остальных скриптов:

    ln -s /etc/init.d/hirkn /etc/rc.d/S99hirkn
  5. Через cron запланируем выполнение этого скрипта раз в сутки:

    crontab -e

    В открывшемся редакторе нужно добавить на новой строке:

    0 4 * * * /etc/init.d/hirkn

    На можно посмотреть объяснение этой строчки.

  6. Включим cron, потому что по умолчанию в OpenWRT он выключен:

    /etc/init.d/cron enable /etc/init.d/cron start
  7. Убедимся, что скрипт работает.

    Запустим его:

    /etc/init.d/hirkn

    Если файлы со списками заблокированных адресов появились, то всё ок:

    # ls -lh /tmp/lst/ -rw-r--r-- 1 root root 270.4K Dec 7 07:18 -rw-r--r-- 1 root root 132 Dec 7 07:18

Заключение

В статье мы детально описали 2 способа настройки VPN-сервера (с помощью готового скрипта и вручную), а также остановились на методах настройки VPN клиентов. Надеемся, что этот материал будет полезен для системных администраторов и специалистов компаний, которые организуют удаленный доступ сотрудников из дома (командировки, филиала и т.д.) к корпоративной инфраструктуре. Специалисты компании всегда помогут вам с выбором VPS для организации собственного VPN-сервера компании и окажут содействие в настройке VPN.

Дата:
Твитнуть
Рекомендуемые статьи по теме:
  • Анализ работы сайта с помощью AWStats
  • Тюнинг работы сервера под большие нагрузки
  • Установка и настройка Proxmox VE. Создание виртуальных машин
  • Inode в Linux — что это такое?
  • Защита сервера средством утилиты Fail2ban. Как ее настроить?
Авторам статьи важно Ваше мнение. Будем рады его обсудить с Вами: Please enable JavaScript to view the comments powered by Disqus. comments powered by Disqus
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Понравилась статья? Поделиться с друзьями:
Adblock
detector