Установка компонентов и настройка L2TP VPN сервера на Ubuntu Server
apt-get install strongswan
config setup virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12 protostack=netkey
conn l2tpvpn type=transport authby=secret pfs=no rekey=no keyingtries=2 left=%any leftprotoport=udp/l2tp leftid=@l2tpvpnserver right=%any rightprotoport=udp/%any auto=add
%any %any : PSK "ThisPasswordKey"
Замените ThisPasswordKey на сгенерированный Вами ключ, подключение разрешено с любого IP.
Установка и настройка L2TP
[global] port = 1701 access control = no ipsec saref = yes force userspace = yes auth file = /etc/ppp/chap-secrets [lns default] ip range = 176.16.10.10-176.16.10.200 local ip = 176.16.10.1 name = l2tpserver pppoptfile = /etc/ppp/options.xl2tpd flow bit = yes exclusive = no hidden bit = no length bit = yes require authentication = yes require chap = yes refuse pap = yes
Настройка PPP
noccp auth crtscts mtu 1410 mru 1410 nodefaultroute lock noproxyarp silent modem asyncmap 0 hide-password require-mschap-v2 ms-dns 8.8.8.8 ms-dns 8.8.4.4
"vpnuser" l2tpserver "vpnuserpassword" "172.16.10.10" "vpnuser2" l2tpserver "vpnuserpassword2" *
Для пользователя vpnuser указан локальный IP-адрес, который он будет получать от сервера при подключении. Пользователь же vpnuser2 будет получать IP-адрес автоматически. Перезапустим xl2tpd:
Настраиваем L2TP VPN-сервер на платформе Linux (Debian / Ubuntu) для подключение роутеров xiaomi
Для работы с IPsec мы будем использовать пакет strongSwan, установим его:
Затем откроем файл настроек /etc/ipsec.conf и добавим в его конец следующие две секции:
conn rw-base
fragmentation=yes
dpdaction=clear
dpdtimeout=90s
dpddelay=30s
conn l2tp-vpn
also=rw-base
ike=aes128-sha256-modp3072
esp=aes128-sha256-modp3072
leftsubnet=%dynamic[/1701]
rightsubnet=%dynamic
mark=%unique
leftauth=psk
rightauth=psk
type=transport
auto=add
Первая секция задает общие параметры: включает фрагментацию IKE и настраивает протокол обнаружения мертвых узлов (Dead Peer Detection, DPD), отвечающий за обнаружение неактивных клиентов. Вторая относится уже к L2TP-соединениям, указывая использовать транспортный режим IPsec, аутентификацию по общему ключу и задает используемые шифры. Приведенные значения являются рекомендуемыми и взяты из официальной документации strongSwan.
Общий ключ следует указать в файле /etc/ipsec.secrets, добавив в него следующую строку:
Где mySharedKey — общий ключ, так как от него зависит безопасность вашей VPN-сети мы рекомендуем использовать в качестве ключа случайно сгенерированную строку из букв, цифр и спецсимволов. Для этого можно воспользоваться командой:
Результатом ее выполнения станет случайная строка длинной в 18 символов.
После внесения указанных настроек перезапустим службу:
systemctl restart strongswan
В Ubuntu имя службы несколько иное — strongswan-starter, поэтому команда будет иметь вид:
systemctl restart strongswan-starter
Настраиваем L2TP
Для реализации функций L2TP-сервера предназначен пакет xl2tpd, для его установки выполните:
Затем откройте файл настроек /etc/xl2tpd/xl2tpd.conf, раскомментируйте и приведите к следующему виду опции:
[global]
port = 1701
auth file = /etc/ppp/chap-secrets
access control = no
ipsec saref = yes
force userspace = yes
[lns default]
exclusive = no
ip range = 10.2.2.100-10.2.2.199
hidden bit = no
local ip = 10.2.2.1
length bit = yes
require authentication = yes
name = l2tp-vpn
pppoptfile = /etc/ppp/options.xl2tpd
flow bit = yes
Большая часть опций относится к настройке протокола L2TP и требует понимания его работы, поэтому мы на них останавливаться не будем. Разберем те опции, которые имеют существенное значение. Параметр auth file указывает на файл с данными для аутентификации, а pppoptfile — набор опций для PPP-соединения, которое используется внутри L2TP-туннеля, name — имя сервера, которое будет использоваться для поиска аутентификационных данных в файле chap-secrets.
Опции local ip и ip range отвечают за локальный адрес сервера в VPN-сети и диапазон адресов для выдачи удаленным клиентам. Здесь можно использовать два подхода: выдавать клиентам адреса из диапазона локальной сети офиса и включить ProxyARP, в этом случае настраивать маршрутизацию на клиентах не требуется, они будут как-бы включены в общую сеть офиса на канальном уровне (L2), либо выдавать адреса из непересекающегося диапазона и использовать маршрутизацию. Автоматизировать создание маршрутов для Windows-клиентов можно с использованием PowerShell.
Для настройки PPP перейдем в /etc/ppp и скопируем стандартный файл настроек:
cd /etc/ppp
cp options options.xl2tpd
Затем открываем файл /etc/ppp/options.xl2tpd на редактирование и приводим к следующему виду. Опции перечислены в порядке их следования, нужно раскомментировать их и указать нужное значение, если опция отсутствует, то ее следует добавить в конце файла.
asyncmap 0
auth
crtscts
lock
hide-password
modem
mtu 1460
lcp-echo-interval 30
lcp-echo-failure 4
noipx
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
multilink
mppe-stateful
Если вы будете использовать ProxyARP то дополнительно раскомментируйте опцию:
Также для Windows-клиентов можно передать настройку DNS-серверов, для этого добавьте опции:
ms-dns 192.168.1.1
ms-dns 192.168.1.2
Это позволит настроить первичный и альтернативный DNS-сервера в системе.
Сохраним все внесенные изменения и перезапустим службу L2TP-сервера:
Строку со следующим сообщением можно проигнорировать, на работу VPN-сервера она не влияет:
xl2tpd[843]: setsockopt recvref[30]: Protocol not available
Заключительным этапом настройки будет создание учетных записей для удаленных клиентов, для этого откроем файл /etc/ppp/chap-secrets и внесем следующую строку:
Первым указываем логин, затем имя службы, оно должно совпадать с тем, которое мы указали в опции name в xl2tpd.conf, после него идет пароль и IP-адрес клиента, символ * обозначает что можно присвоить любой адрес из выбранного диапазона. Если же требуется выдать клиенту постоянный адрес, то его следует указать явно, и он не должен входить в динамический диапазон указанный в ip range, например:
petrov l2tp-vpn Pa$$word_1 10.2.2.99
Для доступа к L2TP-серверу следует разрешить в брандмауэре входящие подключения к портам 500 UDP, 1701 UDP и 4500 UDP.
И инструкция для переброски портов доступа в интернет клиента VPN через сервер VPN
nano /etc/ppp/ip-up добавляем
iptables -t nat -A POSTROUTING -s $5 -j MASQUERADE iptables -A FORWARD -s $5 -j ACCEPT
nano /etc/ppp/ip-down добавляем
iptables -t nat -D POSTROUTING -s $5 -j MASQUERADE iptables -D FORWARD -s $5 -j ACCEPT