• База знань
  • /
  • Блог
  • /
  • Wiki
  • /
  • ONLINE CHAT
+380 (44) 364 05 71

L2TP VPN

VPN или виртуальная частная это защищенное соединение между вашей локальной машиной (смартфоном, планшетом и др. устройством) и удаленным сервером в сети Интернет. Для предприятий VPN сервер обеспечивает безопасный обмен конфиденциальной информацией между сотрудниками, работающими удаленно, и офисной сетью. При помощи VPN работник может использовать офисную инфраструктуру, например принтер или локальное хранилище документов, не доступную в Интернет, словно он находится в офисе. В этой статье мы покажем два способа настройки VPN сервера под Ubuntu и Centos и поможем настроить клиенты под Windows, Android и Linux.

Оглавление

Что такое VPN и для чего его можно использовать

VPN или виртуальная частная сеть (англ. virtual private network) — это соединение между вашей локальной машиной (смартфоном, планшетом и др. устройством) и удаленным сервером в сети Интернет. Такое соединение (еще его называют VPN-туннель) зашифровано стойкими алгоритмами, его работа построена на специальных протоколах, таких как, PPTP, OpenVPN, L2TP. В данной статье мы детально рассмотрим, как настроить VPN на протоколах L2TP/IPsec

L2TP (Layer 2 Tunneling Protocol) — это сетевой протокол, работающий на канальном уровне модели OSI, который позволяет настроить сеть VPN с использованием UDP порта 1701. Сам по себе, L2TP не содержит средств для шифрования данных и аутентификации пользователей, поэтому L2TP всегда используется вместе с протоколом IPSeс.

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

Сервисы VPN, как правило, используют для следующих целей:

  • для защиты своей приватной информации в сети Интернет;
  • для обхода блокировок сайтов и сервисов;
  • для организации безопасного удаленного доступа сотрудников к корпоративной сети предприятия.

Компания FREEhost.UA предоставляет VPS/VDS в аренду для разворачивания VPN серверов именно для корпоративного использования. Ниже мы подробно расскажем, как настроить свой L2TP IPSec сервер VPN на наших VPS двумя способами (с помощью автоматического скрипта и вручную), а также остановимся на особенностях настройки VPN клиентов под разные ОС (Windows, Linux, Андроид).

Как поднять свой VPN-сервер под Ubuntu (CentOS) с помощью скрипта

Покажем на практике, как настроить свой L2TP IPsec server на VPS под управлением Ubuntu 20 или под Centos 8 простым способом, используя готовый скрипт. Данный метод подойдет даже новичкам в системном администрировании, для начала можно ознакомиться с информацией от разработчика скрипта IPsec VPN Server Auto Setup Scripts на ресурсе GitHub. В скрипте используются протоколы IPsec (Libreswan) и L2TP (xl2tpd).

Развертывание скрипта на Ubuntu server и CentOS server

Данный скрипт проверен на работоспособность для следующих версий ОС:

Ubuntu 20.04 (Focal), 18.04 (Bionic), 16.04 (Xenial), а также для CentOS 8/7/6. Перед тем, как начать инсталляцию, выполните обновления на серверной ОС Ubuntu и перезагрузите сервер. В случае с CentOS 8, воспользуйтесь командой:

yum update

Затем запустите скрипт следующей командой:

wget https://git.io/vpnsetup -O vpnsetup.sh && sudo sh vpnsetup.sh

Если вы проводите установку скрипта под CentOS 8, то вместо https://git.io/vpnsetup в написании команды используйте https://git.io/vpnsetup-centos.

В автоматическом режиме скрипт создаст готовый L2TP VPN-server, а также сгенерирует учетные данные для доступа к серверу VPN (см. пример ниже):

Server IP: 178.20.153.253

IPsec PSK: f*****************5r

Username: vpnuser

Password: K*************ts

L2TP VPN-server создан скриптом под ОС Ubuntu

Если вы хотите выполнить скрипт со своими учетными данными для доступа к VPN-серверу, то запустите команду и затем отредактируйте файл vpnsetup.sh в редакторе Nano.

Вместо этих переменных впишите свои данные: YOUR_IPSEC_PSK, YOUR_USERNAME and YOUR_PASSWORD.

wget https://git.io/vpnsetup -O vpnsetup.sh
nano -w vpnsetup.sh 
sudo sh vpnsetup.sh

*Примечание: IPsec PSK должен состоять как минимум из 20 случайных символов.

В случае с CentOS редактируем файл vpnsetup_centos.sh.

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

wget https://git.io/vpnsetup -O vpnsetup.sh && sudo \
VPN_IPSEC_PSK='your_ipsec_pre_shared_key' \
VPN_USER='your_vpn_username' \
VPN_PASSWORD='your_vpn_password' \
sh vpnsetup.sh

Итак, работы на сервере завершены, учетные данные для входа получены, сейчас предстоит настроить VPN клиент на своем компьютере (или смартфоне) для получения доступа к нашему серверу ВПН.

Как настроить собственный VPN-сервер под Ubuntu вручную

Можно развернуть собственный ВПН сервер на VPS под управлением Ubuntu (версии 18 и 20) вручную, для этого воспользуемся пакетом strongSwan, который предназначен для реализации IPSec на различных платформах. Для начала, как обычно, выполним обновление серверной ОС:

apt update && apt full-upgrade -y

Затем приступаем к настройкам.

1. Инсталлируем strongSwan командой*:

apt-get install strongswan

*Примечание: в процессе инсталляции отвечайте «нет» на запросы об установке сертификата во всех диалоговых окнах.

Инсталляция strongSwan

 2. Затем установим модуль xl2tpd для реализации протокола L2TP:

apt-get install xl2tpd

Инсталляция xl2tpd

3. Выполним автозагрузку этих пакетов:

systemctl enable ipsec
systemctl enable xl2tpd

Автозагрузка xl2tpd и ipsec

4. В редакторе 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

conn L2TP-PSK-NAT
          rightsubnet=vhost:%priv
          lso=L2TP-PSK-noNAT

conn L2TP-PSK-noNAT
          authby=secret
          pfs=no
          auto=add
          keyingtries=3
          r4ekey=no
          ikelifetime=8h
          keylife=1h
          type=transport
          left=SERVER.IP
          leftprotoport=17/1701
          right=%any
          rightprotoport=17/%any

*Примечание: в параметр left вместо SERVER.IP подставьте IP адрес своего VPS.

Редактирование конфигурационного файла IPSec

 5. Прописываем общий ключ IPsec PSK, для этого запускаем следующий файл на редактирование:

nano /etc/ipsec.secrets

Вносим данные:

SERVER.IP %any : PSK "MyNewSharedSecretKey20"

где: SERVER.IP IP — адрес вашего VPS;

Прописываем общий ключ IPsec PSK

 6. Создаем скрипт для настройки сетевого подключения к VPN-серверу, для этого открываем для редактирования файл:

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

Cкрипт для настройки сетевого подключения к VPN-серверу

7. Затем выполняем следующие команды, чтобы сделать данный скрипт исполняемым:

Включаем rc.local (он выключен в Ubuntu 20), для этого отредактируем файл:

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

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

chmod +x /etc/rc.local

Добавляем этот скрипт в /etc/rc.local и запускаем его:

nano /etc/rc.local
#!/bin/sh -e 
/usr/local/bin/ipsec_conf 
exit 0

Добавление скрипта в rc.local

8. Перезагружаем список доступных демонов и включаем в автозагрузку rc-local:

systemctl daemon-reload
systemctl enable rc-local

9. Выполним настройку L2TP, для чего c помощью следующей команды отредактируем файл 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

Редактирование файла xl2tpd.conf

10. Настраиваем авторизацию 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 VPNTEST20
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4

где: параметр name — название нашего VPN сервера (к примеру, VPNTEST20)

Настройка авторизации PPP

11. На следующем этапе, добавим пользователей в файл chap-secrets и укажем их логины и пароли (на примере одного пользователя с логином uservpn1 и паролем password1):

nano /etc/ppp/chap-secrets
uservpn1 VPNTEST20 password1 *

Добавление пользователей в файл chap-secrets

12. Проводим рестарт всех настроенных сервисов:

/etc/init.d/ipsec restart
/etc/init.d/xl2tpd restart

Рестарт всех настроенных сервисов

13. Перезагружаем сервер и пробуем подсоединиться к нашему VPN-серверу с помощью клиента (про настройки клиентов читайте в следующих разделах нашей статьи).

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

1. Как настроить клиент VPN под Windows

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

Для начала, откроем меню «Параметры сети и Интернет», затем добавляем в подменю "VPN" новое подключение (кнопка "+"). Заполняем следующие пункты настроек:

Имя подключения — введем новое название для нашего VPN соединения.

Имя или адрес сервера — вносим IP нашего сервера.

Тип VPN — из списка выберем «L2TP/IPsec с общим ключом».

Общий ключ — вводим наш IPsec PSK

Тип данных для входа — выберем «имя пользователя и пароль».

Имя пользователя и пароль — заполняем эти пункты.

На скриншоте показано, как сделать данные настройки:

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

Нажимаем кнопку «Сохранить» и переходим к дальнейшим действиям. Правой клавишей мыши щелкаем по иконке «Монитор» (или по значку Wi-Fi) в правом нижнем углу рабочего стола Windows и выбираем пункт: Открыть «Параметры сети и Интернет», далее в меню «Дополнительные сетевые параметры», открываем пункт «Настройка параметров адаптера» и затем — «Сетевые подключения». Находим значок с нашим VPN соединением ("L2TP Ubuntu 18", как в примере, см. скриншот) и правой клавишей мыши выбираем пункт «Свойства».

Настройка клиента VPN под Windows 10, сетевые подключения.

Заполняем вкладку «Общие» (IP адрес нашего VPN-сервера, как на рис. ниже):

Настройка клиента VPN, сетевые подключения, свойства, вкладка «Общие»

Следующий шаг — настройка вкладки «Безопасность», см. рис. ниже:

Настройка клиента VPN, сетевые подключения, свойства, вкладка «Безопасность»

Затем открываем «Дополнительные параметры» и вносим туда «Общий ключ» (значение IPsec PSK), см. как на скриншоте ниже:

Настройка клиента VPN, сетевые подключения, свойства, вкладка «Дополнительные свойства»

Нажимаем клавишу «ОК» и пробуем осуществить подключение к VPN server.

Проблемы с VPN соединением в Windows 10

Часто в Windows 10 не удается соединиться с удаленным VPN-сервером (ошибка 809), потому что сетевое устройство, которое находится между локальным компьютером и удаленным сервером (это может быть роутер, NAT, межсетевой экран и т.д.) не настроено на разрешение подключений по VPN, см. рис. ниже:

Проблема соединения с VPN-сервером в Windows 10

Эту проблему можно решить путем внесения правок в реестр Windows, для этого нужно вызвать редактор реестра (команда regedit в меню «Выполнить», вызывается правой клавишей мыши в меню «Пуск») и внести вот такие изменения в ветку реестра (см. скриншот ниже):

REG ADD HKLM\SYSTEM\CurrentControlSet\Services\PolicyAgent /v
AssumeUDPEncapsulationContextOnSendRule /t REG_DWORD /d 0x2 /f

Внесение изменений в реестр Windows 10

Затем необходимо перезагрузить компьютер и еще раз произвести соединение с VPN-сервером, на этот раз соединение проходит успешно, система показывает состояние «Подключено»:

Успешное подключение к VPN-server

Проверить подключение через VPN-туннель можно c помощью сайта http://2ip.ru, вместо нашего реального IP, мы видим IP нашего VPN-сервера (178.20.153.253), см. рис.

Проверка IP на http://2ip.ru

2. Как настроить клиент VPN под Linux

Попробуем произвести настройку клиента VPN на локальной машине под управлением ОС Ubuntu 20. Итак, выполним следующие действия.

1. Откроем терминал и установим необходимые пакеты для работы с протоколом L2TP:

sudo add-apt-repository ppa:nm-l2tp/network-manager-l2tp

Установка пакетов для работы с протоколом L2TP

sudo apt-get install network-manager-l2tp network-manager-l2tp-gnome

Установка пакетов для работы с протоколом L2TP под Ubuntu 20

2. На следующем шаге, открываем «Настройки», выбираем пункт меню «Сеть» — VPN, нажимаем на «+», чтобы добавить новое VPN подключение. Затем необходимо выбрать протокол: “Layer 2 Tunneling Protocol (L2TP)”.

Настройка L2TP под Ubuntu 20 на компьютере пользователя

3. Сейчас необходимо настроить параметры IPSec, для этого выполним настройки, как показано на картинке ниже:

Вводим «Название» для VPN-соединения, «Шлюз» (IP адрес VPN server), заполняем раздел «Аутентификация пользователя» (вносим наши учетные данные — логин и пароль).

Настройка параметров для аутентификации пользователя

4. На следующим этапе нужно заполнить «Настройки IPsec» (внести значение «Общего ключа» IPsec PSK).

Настройка параметров L2TP IPSec

Также можно заполнить раздел “Advanced”, как показано на скриншоте ниже:

Настройка параметров L2TP IPSec, раздел Advanced

5. На этом все настройки закончены, можно попробовать соединиться с нашим VPN-сервером и проверить IP адрес, как это мы уже делали выше, на сервисе http://2ip.ru.

3. Как настроить клиент VPN под Android

Для работы через VPN на смартфоне, первым делом, нужно добавить новый профиль VPN в меню «Настройки» — «Подключения» — «Другие настройки» — «VPN».

После этого, необходимо заполнить этот профиль (внести название соединения, IP адрес ВПН сервера, общий ключ IPsec, логин и пароль, а также выбрать протокол L2TP/IPSec PSK), как на рис. ниже.

Клиент VPN под Android, настройки

Затем нужно подключиться к нашему Ubuntu L2TP IPsec server, при успешном соединении мы увидим вот такое окно:

Клиент VPN под Android, соединение установлено

Обычная проверка IP по http://2ip.ru покажет, что наш реальный IP подменяется на IP сервера VPN (178.20.153.253), см. скриншот:

Клиент VPN под Android, проверка соединения.

Заключение

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

 

Дата: 24.11.2020
Автор: Евгений
Голосування

Авторам статті важлива Ваша думка. Будемо раді його обговорити з Вами:

comments powered by Disqus
navigate
go
exit
Дякуємо, що обираєте FREEhost.UA