14 415
Обложка: Установка и настройка VPN сервера в ОС Ubuntu по протоколу L2TP/IPsec

Установка и настройка VPN сервера в ОС Ubuntu по протоколу L2TP/IPsec

11
seopomosh.ru
seopomosh.ru
Редакция портала

Ввиду актуальности темы VPN серверов в 2022 году, редакция портала seopomosh.ru подготовила подробную инструкцию по настройке своего VPN сервера под управлением операционной системы (ОС) Ubuntu 20.04 по протоколу L2TP/IPsec.

Зачем может понадобиться свой VPN?

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

Предварительные требования

  1. Необходимо определиться с хостинг-провайдером, у которого будет приобретен виртуальный сервер VPS за минимальную цену, вот небольшой список (выбор за тобой читатель):
    • - ruvds.com (от 40 руб. в месяц) РФ;
    • - ihor-hosting.ru (от 80 руб. в месяц) РФ;
    • - inferno.name (от 5 usd в месяц) Разные локации включая недружественные страны;
    • - digitalocean.com (от 5 usd в месяц);
    • - lunanode.com (от 3,5 usd в месяц с возможностью оплаты Bitcoin) Франция, Канада;
    • - и т.д. 
  2. Произвести первоначальную настройку сервера Ubuntu 20.04, желательно с пользователем без прав root с привилегиями sudo и брандмауэром.
Обратите внимание, пример настройки VPN сделан на виртуальном сервере от vds.selectel.ru из-под пользователя root (не безопасно!!!), поэтому если используете другого провайдера некоторые первоначальные настройки могут отличаться.

Шаг 1 — Обновляем ОС нашего сервера

Для обновления выполните следующую команду:

sudo apt update && sudo apt upgrade
Результат обновления в консоли PuTTY
Результат обновления в консоли PuTTY

Шаг 2 — Установка StrongSwan

StrongSwan является демоном IPSec с открытым исходным кодом, он понадобиться для настройки работы сервера в качестве VPN. 

apt-get install strongswan
Важно, наш тип VPN будет использовать протокол L2TP/IPsec с общим ключом длинной не менее 30 символов
Результат установки StrongSwan
Результат установки StrongSwan

Шаг 3 — Установка xl2tpd

Пакет xl2tpd необходим для настройки функций L2TP-сервера, также имеет открытый исходный код.

apt-get install xl2tpd
Результат установки xl2tpd
Результат установки xl2tpd

Шаг 4 — Настройка StrongSwan (IPsec)

С помощью редактора NANO произведем правки конфигурационного файла IPSec, выполнить в консоли:

nano /etc/ipsec.conf

Удаляем все в текущем файле, и после вставляем следующие строки конфигурации:


config setup 
 nat_traversal=yes 
 virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12 
 oe=off 
 protostack=netkey 
# config setup – в этом разделе прописана глобальная конфигурации для IPSec, 
#-которая применяется ко всем соединениям
# nat_traversal – активируем NAT
# virtual_private  - это диапазон IP-адресов которые допускаются в качестве 
#-подсетей для удалённых VPN-клиентов.
# oe – выключаем шифрование
# protostack – выбираем стек работы протокола, варианты auto, klips, netkey ,mast
conn L2TP-PSK-NAT 
 rightsubnet=vhost:%priv 
 also=L2TP-PSK-noNAT 
conn L2TP-PSK-noNAT 
 authby=secret 
 pfs=no 
 auto=add 
 keyingtries=3 
 rekey=no 
 ikelifetime=8h 
 keylife=1h 
 type=transport 
 left= VASH_IP_SERVERA 
 leftprotoport=17/1701 
 right=%any 
 rightprotoport=17/%any

Не забудьте сменить «VASH_IP_SERVERA» – на реальный IP вашего сервера.

После нажимаем сочетание клавиш Ctrl+O и ENTER, сохранились, теперь выходим из редактора сочетанием Ctrl+X.

Редактирование конфигов IPsec
Редактирование конфигов IPsec

Шаг 5 — Генерируем надежный общий ключ

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

openssl rand -base64 30

Где 30 - это длина сгенерированной строки, запомните её и храните в надежном месте.

Наш сгенерированный вариант строки:

Jbe+uJagKSfA35q0Cd+vu9KcJc5xd/5Y5AK6f/yW
Результат генерации ключа IPsec PSK
Результат генерации ключа IPsec PSK

Шаг 6 —Используем сгенерированный общий ключ для IPsec PSK

Для этого откроем файл ipsec.secrets следующей командой:

nano /etc/ipsec.secrets

Добавляем, где «VASH_KLUCH» - это сгенерированный ключ на предыдущем этапе, где «VASH_IP_SERVERA» – это реальный IP сервера, в следующую строку:

VASH_IP_SERVERA %any : PSK "VASH_KLUCH"

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

Добавляем сгенерированный общий ключ
Добавляем сгенерированный общий ключ

Шаг 7 —Настраиваем фаервол сервера на передачу IP-пакетов

Для настройке фвервола создаем новый файл с помощью команды:

nano /usr/local/bin/ipsec

После чего добавляем в файл следующее содержимое:


iptables --table nat --append POSTROUTING --jump MASQUERADE 
echo 1 > /proc/sys/net/ipv4/ip_forward 
for each in /proc/sys/net/ipv4/conf/* 
do 
echo 0 > $each/accept_redirects 
echo 0 > $each/send_redirects 
done 
/etc/init.d/ipsec restart

Сохраняемся и выходим из редактора.

Добавляем конфиг передачи IP-пакетов
Добавляем конфиг передачи IP-пакетов

Шаг 8 — Включаем rc.local для исполнения скриптов

Служба rc.local по умолчанию отключен в Ubuntu 20.04, поэтому для запуска выполняем команды в следующем порядке:

Создаем новый файл:

nano  /etc/systemd/system/rc-local.service

Добавляем в него следующее содержимое:


[Unit]
 Description=/etc/rc.local Compatibility
 ConditionPathExists=/etc/rc.local

[Service]
 Type=forking
 ExecStart=/etc/rc.local start
 TimeoutSec=0
 StandardOutput=tty
 RemainAfterExit=yes
 SysVStartPriority=99

[Install]
 WantedBy=multi-user.target
Настраиваем службу rc.local
Настраиваем службу rc.local

Создаем новый файл:

nano /etc/rc.local

Добавляем в него следующее содержимое:


#!/bin/sh -ee
/usr/local/bin/ipsec 
exit 0
Создаем новый файл rc.local
Создаем новый файл rc.local

Делаем этот файл исполняемым:

chmod +x /etc/rc.local

Также необходимо поставить файл на исполнение из ШАГА 6:

chmod +x /usr/local/bin/ipsec

Шаг 9 — Включаем rc.local для исполнения скриптов

Чтобы запустить и поставить на автозагрузку данную службу выполните в консоли следующую команду:

systemctl enable rc-local

Шаг 10 — Настраиваем L2TP

Для настройки L2TP, откройте файл xl2tpd.conf с помощью консольной команды:

nano /etc/xl2tpd/xl2tpd.conf

Внесите в файл следующие строки:


[global]
 ipsec saref = yes

[lns default]
 ip range = 10.1.2.2-10.1.2.255
 local ip = 10.1.2.1 
 refuse chap = yes 
 refuse pap = yes 
 require authentication = yes 
 ppp debug = yes 
 pppoptfile = /etc/ppp/options.xl2tpd 
 length bit = yes
Добавляем конфиг L2TP
Добавляем конфиг L2TP

Шаг 11 — Настраиваем службу авторизации PPP

С помощью редактора создайте файл:

nano /etc/ppp/options.xl2tpd

Отредактируйте файл в точности с текстом ниже:


require-mschap-v2 
ms-dns 8.8.8.8 
ms-dns 8.8.4.4 
asyncmap 0 
auth 
crtscts 
lock 
hide-password 
modem 
debug 
name MOYVPNLOCAL 
proxyarp 
lcp-echo-interval 30 
lcp-echo-failure 4

Обратите внимание на параметр name, это название вашего VPN сервера, в нашем случае это MOYVPNLOCAL.

Добавляем конфиг для PPP службы
Добавляем конфиг для PPP службы

Шаг 12 — Создаем пароли и логины для пользователей VPN

Чтобы создать пару логин-пароль откройте файл::

nano /etc/ppp/chap-secrets

Внесите в него следующую строку/и:

Vpnuser1 MOYVPNLOCAL passgood *

Где Vpnuser1 – это логин пользователя, MOYVPNLOCAL – это название вашего VPN сервера, passgood – это сложный пароль.

Каждый новый юзер вноситься с новой строчки.

Создаем пару логин-пароль
Создаем пару логин-пароль

Шаг 13 — Производим рестарт всех настроенных сервисов и служб

Произведем перезагрузку, и установку загрузки по умолчанию при рестарте сервера всех настроенных служб, выполните поочередно следующие команды:


systemctl enable ipsec
systemctl restart ipsec

systemctl enable xl2tpd
systemctl restart xl2tpd

systemctl enable strongswan-starter
systemctl restart strongswan-starter

Настройка VPN клиента в Windows 10

Настройка VPN в Windows 10
Настройка VPN в Windows 10

Кликаем по иконке компьютера в нижнем правом углу и выбираем «Параметры сети и Интернет», в правой панели меню выбираем VPN, на открывшейся вкладке выбираем «+ Добавить VPN-подключение». Вносим данные в соответствии со списком ниже:

  • Поставщик услуг VPN – Windows (встроенные);
  • Имя подключения – Любое название на латинском (прим.: moyvpn);
  • Имя или адрес сервера – IP адрес вашего настроенного VPN сервера;
  • Тип VPN – из выпадающего списка выбрать «L2TP/IPsec с общим ключом»;
  • Общий ключ – вводим сгенерированный ключ (IPsec PSK) из шага № 5;
  • Тип данных для входа – выберите «имя пользователя и пароль»;
  • Имя пользователя – имя юзера, придуманное на шаге № 12;
  • Пароль – пароль пользователя, придуманный на шаге № 12;
  • Поставьте галочку напротив «Запомнить мои данные для входа», чтобы не вводить их повторно.

Нажимаем кнопку «Сохранить» и пробуем подключиться к VPN.

Результат подключения в Windows 10
Результат подключения в Windows 10

Настройка VPN клиента на iphone (IOS)

Заходим в «Настройки», далее «Основные» выбираем «VPN и управление устройством», тапаем на VPN на новой вкладке выбираем «Добавить конфигурацию VPN…». Вносим данные в соответствии со списком:

  • Тип – L2TP;
  • Описание – Любое название вашего соединения на лат. (прим.: vpnmonster);
  • Сервер - IP адрес вашего VPN сервера;
  • Учетная запись - имя юзера, придуманное на шаге № 12;
  • RSA SecurID - опция должна быть выключена;
  • Пароль - пароль из шага № 12;
  • Общий ключ - ключ (IPsec PSK) из шага № 5;
  • Для всех данных – опция должна быть включена.

Нажимаем кнопку «Готово» и пробуем подключиться к VPN.

Результат подключения и настройка VPN в IOS
Результат подключения и настройка VPN в IOS

Настройка VPN клиента на Android

Заходим в «Настройки», в зависимости от оболочки(может быть другой пункт) «Беспроводные сети», далее VPN и нажимаем «+ Добавить сеть VPN», вносим данные в соответствии с инструкцией:

  • Имя – имя вашего VPN соединения на латыни;
  • Тип – L2TP/IPSec PSK;
  • Сервер - IP адрес вашего VPN сервера;
  • Ключ L2TP – поле оставляем пустым;
  • Идентификатор IPSec - поле оставляем пустым;
  • Общий ключ IPSec - ключ из шага № 5.

Нажимаем «сохранить» и на следующей вкладке добавляем имя пользователя и пароль из шага № 12 и нажимаем на кнопку «подключить».

Результат подключения и настройка VPN в Android
Результат подключения и настройка VPN в Android

Проверяем работу ВПН, для этого переходим по ссылке https://yandex.ru/internet , и проверяем совпадает ли определившийся IP на странице с IP вашего VPN сервера.

Заключение

Надеемся мы достаточно подробно рассмотрели тему ручной настройки VPN-сервера, а также на вариантах настройки VPN клиентов в таких операционных системах как IOS, Android и Windows.

Верим, что материал будет полезен не только для начинающих системных администраторов, но и для рядовых пользователей интернета, которые решили погрузиться в мир высоких технологий. Если в процессе настройки возникают какие-то сложности ждем обратной связи, чтобы редакция портала seopomosh.ru могла оказать поддержку по настройке.