Ввиду актуальности темы VPN серверов в 2022 году, редакция портала seopomosh.ru подготовила подробную инструкцию по настройке своего VPN сервера под управлением операционной системы (ОС) Ubuntu 20.04 по протоколу L2TP/IPsec.
Зачем может понадобиться свой VPN?
Виртуальная частная сеть или VPN — это специальное приложение, которое подменяет ваш реальный IP-адрес и шифрует весь ваш интернет-трафик. Это повышает конфиденциальность и безопасность в Интернете и помогает юзерам обходить онлайн-цензуру (Роскомнадзор), введенную правительством, интернет-провайдерами или любой другой организацией или лицом, блокирующим веб-сайты. На сегодняшний день очень актуально.
Предварительные требования
- Необходимо определиться с хостинг-провайдером, у которого будет приобретен виртуальный сервер VPS за минимальную цену, вот небольшой список (выбор за тобой читатель):
- - ruvds.com (от 40 руб. в месяц) РФ;
- - ihor-hosting.ru (от 80 руб. в месяц) РФ;
- - inferno.name (от 5 usd в месяц) Разные локации включая недружественные страны;
- - digitalocean.com (от 5 usd в месяц);
- - lunanode.com (от 3,5 usd в месяц с возможностью оплаты Bitcoin) Франция, Канада;
- - и т.д.
- Произвести первоначальную настройку сервера Ubuntu 20.04, желательно с пользователем без прав root с привилегиями sudo и брандмауэром.
Шаг 1 — Обновляем ОС нашего сервера
Для обновления выполните следующую команду:
sudo apt update && sudo apt upgrade
Шаг 2 — Установка StrongSwan
StrongSwan является демоном IPSec с открытым исходным кодом, он понадобиться для настройки работы сервера в качестве VPN.
apt-get install strongswan
Шаг 3 — Установка xl2tpd
Пакет xl2tpd необходим для настройки функций L2TP-сервера, также имеет открытый исходный код.
apt-get install 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.
Шаг 5 — Генерируем надежный общий ключ
Важно от этого набора символов будет зависеть безопасность вашей VPN-сети мы рекомендуем использовать строку длинной не менее 30 разных символов. Для этого используем следующую команду:
openssl rand -base64 30
Где 30 - это длина сгенерированной строки, запомните её и храните в надежном месте.
Наш сгенерированный вариант строки:
Jbe+uJagKSfA35q0Cd+vu9KcJc5xd/5Y5AK6f/yW
Шаг 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
Сохраняемся и выходим из редактора.
Шаг 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
Создаем новый файл:
nano /etc/rc.local
Добавляем в него следующее содержимое:
#!/bin/sh -ee
/usr/local/bin/ipsec
exit 0
Делаем этот файл исполняемым:
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
Шаг 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.
Шаг 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, на открывшейся вкладке выбираем «+ Добавить VPN-подключение». Вносим данные в соответствии со списком ниже:
- Поставщик услуг VPN – Windows (встроенные);
- Имя подключения – Любое название на латинском (прим.: moyvpn);
- Имя или адрес сервера – IP адрес вашего настроенного VPN сервера;
- Тип VPN – из выпадающего списка выбрать «L2TP/IPsec с общим ключом»;
- Общий ключ – вводим сгенерированный ключ (IPsec PSK) из шага № 5;
- Тип данных для входа – выберите «имя пользователя и пароль»;
- Имя пользователя – имя юзера, придуманное на шаге № 12;
- Пароль – пароль пользователя, придуманный на шаге № 12;
- Поставьте галочку напротив «Запомнить мои данные для входа», чтобы не вводить их повторно.
Нажимаем кнопку «Сохранить» и пробуем подключиться к VPN.
Настройка VPN клиента на iphone (IOS)
Заходим в «Настройки», далее «Основные» выбираем «VPN и управление устройством», тапаем на VPN на новой вкладке выбираем «Добавить конфигурацию VPN…». Вносим данные в соответствии со списком:
- Тип – L2TP;
- Описание – Любое название вашего соединения на лат. (прим.: vpnmonster);
- Сервер - IP адрес вашего VPN сервера;
- Учетная запись - имя юзера, придуманное на шаге № 12;
- RSA SecurID - опция должна быть выключена;
- Пароль - пароль из шага № 12;
- Общий ключ - ключ (IPsec PSK) из шага № 5;
- Для всех данных – опция должна быть включена.
Нажимаем кнопку «Готово» и пробуем подключиться к VPN.
Настройка VPN клиента на Android
Заходим в «Настройки», в зависимости от оболочки(может быть другой пункт) «Беспроводные сети», далее VPN и нажимаем «+ Добавить сеть VPN», вносим данные в соответствии с инструкцией:
- Имя – имя вашего VPN соединения на латыни;
- Тип – L2TP/IPSec PSK;
- Сервер - IP адрес вашего VPN сервера;
- Ключ L2TP – поле оставляем пустым;
- Идентификатор IPSec - поле оставляем пустым;
- Общий ключ IPSec - ключ из шага № 5.
Нажимаем «сохранить» и на следующей вкладке добавляем имя пользователя и пароль из шага № 12 и нажимаем на кнопку «подключить».
Проверяем работу ВПН, для этого переходим по ссылке https://yandex.ru/internet , и проверяем совпадает ли определившийся IP на странице с IP вашего VPN сервера.
Заключение
Надеемся мы достаточно подробно рассмотрели тему ручной настройки VPN-сервера, а также на вариантах настройки VPN клиентов в таких операционных системах как IOS, Android и Windows.
Верим, что материал будет полезен не только для начинающих системных администраторов, но и для рядовых пользователей интернета, которые решили погрузиться в мир высоких технологий. Если в процессе настройки возникают какие-то сложности ждем обратной связи, чтобы редакция портала seopomosh.ru могла оказать поддержку по настройке.