VPN или виртуальная частная это защищенное соединение между вашей локальной машиной (смартфоном, планшетом и др. устройством) и удаленным сервером в сети Интернет. Для предприятий VPN сервер обеспечивает безопасный обмен конфиденциальной информацией между сотрудниками, работающими удаленно, и офисной сетью. При помощи VPN работник может использовать офисную инфраструктуру, например принтер или локальное хранилище документов, не доступную в Интернет, словно он находится в офисе. В этой статье мы покажем два способа настройки VPN сервера под Ubuntu и Centos и поможем настроить клиенты под Windows, Android и Linux.
Оглавление
- Что такое VPN и для чего его можно использовать
- Как поднять свой VPN-сервер под Ubuntu (CentOS) с помощью скрипта
- Как настроить собственный VPN-сервер под Ubuntu вручную
- Настройка VPN клиента
- Как настроить клиент VPN под Windows
- Как настроить клиент VPN под Linux
- Как настроить клиент VPN под Android
- Заключение
Что такое 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
Если вы хотите выполнить скрипт со своими учетными данными для доступа к 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
*Примечание: в процессе инсталляции отвечайте «нет» на запросы об установке сертификата во всех диалоговых окнах.
2. Затем установим модуль xl2tpd для реализации протокола L2TP:
apt-get install xl2tpd
3. Выполним автозагрузку этих пакетов:
systemctl enable ipsec systemctl enable xl2tpd
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.
5. Прописываем общий ключ IPsec PSK, для этого запускаем следующий файл на редактирование:
nano /etc/ipsec.secrets
Вносим данные:
SERVER.IP %any : PSK "MyNewSharedSecretKey20"
где: SERVER.IP IP — адрес вашего VPS;
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
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
Делаем этот файл исполняемым:
chmod +x /etc/rc.local
Добавляем этот скрипт в /etc/rc.local и запускаем его:
nano /etc/rc.local #!/bin/sh -e /usr/local/bin/ipsec_conf exit 0
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
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)
11. На следующем этапе, добавим пользователей в файл chap-secrets и укажем их логины и пароли (на примере одного пользователя с логином uservpn1 и паролем password1):
nano /etc/ppp/chap-secrets uservpn1 VPNTEST20 password1 *
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
Тип данных для входа — выберем «имя пользователя и пароль».
Имя пользователя и пароль — заполняем эти пункты.
На скриншоте показано, как сделать данные настройки:
Нажимаем кнопку «Сохранить» и переходим к дальнейшим действиям. Правой клавишей мыши щелкаем по иконке «Монитор» (или по значку Wi-Fi) в правом нижнем углу рабочего стола Windows и выбираем пункт: Открыть «Параметры сети и Интернет», далее в меню «Дополнительные сетевые параметры», открываем пункт «Настройка параметров адаптера» и затем — «Сетевые подключения». Находим значок с нашим VPN соединением ("L2TP Ubuntu 18", как в примере, см. скриншот) и правой клавишей мыши выбираем пункт «Свойства».
Заполняем вкладку «Общие» (IP адрес нашего VPN-сервера, как на рис. ниже):
Следующий шаг — настройка вкладки «Безопасность», см. рис. ниже:
Затем открываем «Дополнительные параметры» и вносим туда «Общий ключ» (значение IPsec PSK), см. как на скриншоте ниже:
Нажимаем клавишу «ОК» и пробуем осуществить подключение к VPN server.
Проблемы с VPN соединением в Windows 10
Часто в Windows 10 не удается соединиться с удаленным VPN-сервером (ошибка 809), потому что сетевое устройство, которое находится между локальным компьютером и удаленным сервером (это может быть роутер, NAT, межсетевой экран и т.д.) не настроено на разрешение подключений по VPN, см. рис. ниже:
Эту проблему можно решить путем внесения правок в реестр Windows, для этого нужно вызвать редактор реестра (команда regedit в меню «Выполнить», вызывается правой клавишей мыши в меню «Пуск») и внести вот такие изменения в ветку реестра (см. скриншот ниже):
REG ADD HKLM\SYSTEM\CurrentControlSet\Services\PolicyAgent /v AssumeUDPEncapsulationContextOnSendRule /t REG_DWORD /d 0x2 /f
Затем необходимо перезагрузить компьютер и еще раз произвести соединение с VPN-сервером, на этот раз соединение проходит успешно, система показывает состояние «Подключено»:
Проверить подключение через VPN-туннель можно c помощью сайта http://2ip.ru, вместо нашего реального IP, мы видим IP нашего VPN-сервера (178.20.153.253), см. рис.
2. Как настроить клиент VPN под Linux
Попробуем произвести настройку клиента VPN на локальной машине под управлением ОС Ubuntu 20. Итак, выполним следующие действия.
1. Откроем терминал и установим необходимые пакеты для работы с протоколом L2TP:
sudo add-apt-repository ppa:nm-l2tp/network-manager-l2tp
sudo apt-get install network-manager-l2tp network-manager-l2tp-gnome
2. На следующем шаге, открываем «Настройки», выбираем пункт меню «Сеть» — VPN, нажимаем на «+», чтобы добавить новое VPN подключение. Затем необходимо выбрать протокол: “Layer 2 Tunneling Protocol (L2TP)”.
3. Сейчас необходимо настроить параметры IPSec, для этого выполним настройки, как показано на картинке ниже:
Вводим «Название» для VPN-соединения, «Шлюз» (IP адрес VPN server), заполняем раздел «Аутентификация пользователя» (вносим наши учетные данные — логин и пароль).
4. На следующим этапе нужно заполнить «Настройки IPsec» (внести значение «Общего ключа» IPsec PSK).
Также можно заполнить раздел “Advanced”, как показано на скриншоте ниже:
5. На этом все настройки закончены, можно попробовать соединиться с нашим VPN-сервером и проверить IP адрес, как это мы уже делали выше, на сервисе http://2ip.ru.
3. Как настроить клиент VPN под Android
Для работы через VPN на смартфоне, первым делом, нужно добавить новый профиль VPN в меню «Настройки» — «Подключения» — «Другие настройки» — «VPN».
После этого, необходимо заполнить этот профиль (внести название соединения, IP адрес ВПН сервера, общий ключ IPsec, логин и пароль, а также выбрать протокол L2TP/IPSec PSK), как на рис. ниже.
Затем нужно подключиться к нашему Ubuntu L2TP IPsec server, при успешном соединении мы увидим вот такое окно:
Обычная проверка IP по http://2ip.ru покажет, что наш реальный IP подменяется на IP сервера VPN (178.20.153.253), см. скриншот:
Заключение
В статье мы детально описали 2 способа настройки VPN-сервера (с помощью готового скрипта и вручную), а также остановились на методах настройки VPN клиентов. Надеемся, что этот материал будет полезен для системных администраторов и специалистов компаний, которые организуют удаленный доступ сотрудников из дома (командировки, филиала и т.д.) к корпоративной инфраструктуре. Специалисты компании FREEhost.UA всегда помогут вам с выбором VPS для организации собственного VPN-сервера компании и окажут содействие в настройке VPN.
Дата: 24.11.2020 Автор: Евгений
|
|
Авторам статті важлива Ваша думка. Будемо раді його обговорити з Вами:
comments powered by Disqus