L2TP VPN СЕРВЕР С ДОСТУПОМ К ЛОКАЛКЕ ИЗ ЭТИХ ВАШИХ ИНТЕРНЕТОВ.

НАСТРОЙКА IPSEC

sudo apt install strongswan

sudo nano /etc/ipsec.conf

config setup
        virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12, %v4:192.168.88.0/24
        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
  • где:

type — тип соединения. Возможны варианты tunnel (хост-хост, хост-подсеть или подсеть-подсеть); transport (хост-хост); passthrough (без обработки IPsec).
authby — способы аутентификации двух узлов. Возможны варианты secret (по паролю) или rsasig (цифровые подписи RSA).
pfs — расшифровывается как Perfect Forward Secrecy. Позволяет активировать совершенную секретность в канале ключей соединения.
rekey — перепроверить соединение, когда оно истекает.
keyingtries — число попыток, чтобы «договориться» о соединении или его замене.
left — IP-адрес левого участника (сервера). %any означает, что адрес может быть любой.
leftprotoport — определяет протокол и порт, на котором будет работать левая сторона (сервер). В данном примере указан UDP и порт 1701.
leftid — идентификация левого участника соединения.
right — IP-адрес правого участника (клиента). %any означает, что адрес может быть любой.
rightprotoport — определяет протокол и порт, на котором будет работать правая сторона (клиент). В данном примере указан UDP и любой порт.
auto — операция, которая должна запуститься автоматически при старте IPsec.

Далее создаем секретный ключ — для этого открываем на редактирование файл:

sudo nano /etc/ipsec.secrets

%any %any : PSK "MySharedKey"

sudo systemctl enable strongswan

sudo systemctl restart strongswan

 L2TP

sudo apt-get install xl2tpd

sudo nano /etc/xl2tpd/xl2tpd.conf

[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

где:

port — порт UDP, на котором работает VPN. По умолчанию, 1701.
access control — принимать или нет запросы только от клиентов с определенными IP, перечисленными в настройках клиентов.
ipsec saref — указывает использовать или нет ipsec Security Association, позволяющий отслеживать несколько клиентов с одинаковыми IP-адресами.
force userspace — повышает производительность за счет декапсуляции пакетов L2TP.
auth file — путь к файлу аутентификации.
ip range — диапазон адресов, которые назначаются подключенным клиентам.
local ip — IP-адрес сервера в сети VPN.
name — имя сервера для процесса согласования.
pppoptfile — путь к файлу с настройкой pppd.
flow bit — позволяет добавлять в пакеты порядковые номера.
exclusive — если поставить в yes, сервер разрешит только одно соединение с клиентом.
hidden bit — скрывать или нет AVP.
length bit — использовать ли бит длины, указывающий полезную нагрузку.
require authentication — требовать ли аутентификацию.
require chap — требовать ли аутентификацию PPP по протоколу CHAP.
refuse pap — требовать ли аутентификацию PPP по протоколу PAP.

sudo systemctl enable xl2tpd

sudo systemctl restart xl2tpd

PPP

sudo nano /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
ms-dns 8.8.8.8 ms-dns 8.8.4.4

 Теперь создаем пользователя:

sudo nano /etc/ppp/chap-secrets

"user1" l2tpserver "password1" "172.16.10.10"
"user2" l2tpserver "password2" *

sudo systemctl restart xl2tpd

  • где:

Имя подключения — произвольное имя.
Имя или адрес сервера — адрес сервера VPN, к которому мы будем подключаться.
Тип VPN — для нашего случая, выбираем L2TP/IPsec с предварительным ключом.
Общий ключ — ключ, который мы задали в файле /etc/ipsec.secrets.
Тип данных для входа — выбираем пользователь и пароль.
Имя пользователя и пароль — логин и пароль, которые мы задали в файле /etc/ppp/chap-secrets.

ДОСТУП В ИНТЕРНЕТ И ЛОКАЛЬНУЮ СЕТЬ

sudo nano /etc/sysctl.d/99-sysctl.conf

net.ipv4.ip_forward=1

sudo sysctl -p /etc/sysctl.d/99-sysctl.conf

Далее настроим маскарадинг на интерфейсе eth0, который смотрит в этот ваш Интырнет. У вас он может называться иначе. Уточните название, например, при помощи команды ifconfig.

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

 КЛИЕНТ

На компе-клиенте необходимо установить соответствующее ПО.

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

sudo reboot

После перезагрузки заходим в Settings — Network и пробуем добавить VPN соединение

vpn l2tp added

Заполняем все необходимые поля. Необходимый минимум:

Name — название соединения может быть любым
Gateway — IP адрес сервера VPN либо его доменное имя
User name — имя пользователя
Password — пароль

vpn settings

Обычно для соединения по L2TP необходимо знать 4 вещи: адрес сервера, логин и пароль пользователя для подключения, и PSK ключ. Первые три параметра мы уже ввели. Теперь нажимаем кнопку IPsec Settings.

vpn settings 2

В данном окне ставим галочку Enable IPsec tunnel to L2TP host и вводим MySharedKey (PSK).

Сохраняем все настройки и пробуем подключиться. Если все работает, отлично. Когда есть проблемы с подключением, необходимо смотреть системный журнал Ubuntu и диагностировать проблемы на стороне сервера VPN.

Ну и на последок один маленький нюанс. Для того чтобы лыжи поехали, необходимо пробросить порты через NAT: UDP 1701, UDP 500, UDP 4500.