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 соединение
Заполняем все необходимые поля. Необходимый минимум:
Name — название соединения может быть любым
Gateway — IP адрес сервера VPN либо его доменное имя
User name — имя пользователя
Password — пароль
Обычно для соединения по L2TP необходимо знать 4 вещи: адрес сервера, логин и пароль пользователя для подключения, и PSK ключ. Первые три параметра мы уже ввели. Теперь нажимаем кнопку IPsec Settings.
В данном окне ставим галочку Enable IPsec tunnel to L2TP host и вводим MySharedKey (PSK).
Сохраняем все настройки и пробуем подключиться. Если все работает, отлично. Когда есть проблемы с подключением, необходимо смотреть системный журнал Ubuntu и диагностировать проблемы на стороне сервера VPN.
Ну и на последок один маленький нюанс. Для того чтобы лыжи поехали, необходимо пробросить порты через NAT: UDP 1701, UDP 500, UDP 4500.