L2TP+IPSec VPN на Linux Debian
В продолжение темы VPN серверов на Debian, попробуем поднять L2TP+IPSec VPN сервер.
Устанавливать будем на том же сервере, где сейчас установлен VPN PPTP.
apt-get update && apt-get upgrade && apt-get dist-upgrade
Настроим сеть:
nano /etc/network/interfaces
nano /etc/resolv.conf
Применим настройки:
/etc/init.d/networking restart
apt-get install xl2tpd
Openswan ставим из исходников, поскольку нет кандидатов на установки из репозиториев.
Ставим необходимые зависимости:
apt-get install libgmp3-dev gawk flex bison make
Собираем openswan:
wget https://download.openswan.org/openswan/openswan-latest.tar.gz
tar -xvzf openswan-latest.tar.gz
cd openswan-2*
make programs
make install
Конфигурируем 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
also=L2TP-PSK-noNAT
conn L2TP-PSK-noNAT
authby=secret
pfs=no
auto=add
keyingtries=3
rekey=no
ikelifetime=8h
keylife=1h
type=transport
left=SERVER.IP
leftprotoport=17/1701
right=%any
rightprotoport=17/%any
Пробелы перед строками обязательны. SERVER.IP - это внешний IP нашего сервера.
Настроим авторизацию через PreShared Key:
nano /etc/ipsec.secrets
Содержимое:
SERVER.IP %any: PSK "PreSharedKey"
---
SERVER.IP - это внешний IP нашего сервера
%any: - подключение с любого IP
PSK - метод авторизации для L2TP. PSK - PreSharedKey, т.е вместо сертификата будем использовать секретное слово.
"PreSharedKey" - само секретное слово
///
Скрипт для настройки сети:
nano /root/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
Делаем скрипт исполняемым:
chmod +x /root/ipsec
Теперь необходимо добавить скрипт в автозагрузку. Однако В Debian 9 по-умолчанию не работает файл-автозапуска скриптов rc.local. Запустим его.
Создаем файл:
nano /etc/rc.local
Пишем в него следующее:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
exit 0
Делаем его исполняемым:
chmod +x /etc/rc.local
Включаем автозапуск rc-local:
systemctl start rc-local
systemctl status rc-local
Добавляем содержимое нашего скрипта /root/ipsec в файл rc.local перед exit 0 и запускаем скрипт:
sh /root/ipsec
Настройка l2tp:
nano /etc/xl2tpd/xl2tpd.conf
Содержимое:
[global]
ipsec saref = yes
[lns default]
ip range = 192.168.1.202-192.168.1.220
local ip = 192.168.1.201
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes
---
ip range = 192.168.1.202-192.168.1.220 - диапазон IP адресов выделяемых для VPN Подключений
local ip = 192.168.1.201 - адрес самого сервера VPN внутри локальной сети
refuse chap = yes - запретить Chap авторизацию
refuse pap = yes - запретить Pap авторизацию
///
Дополнительные настройки:
nano /etc/ppp/options.xl2tpd
Содержимое:
require-mschap-v2
ms-dns 192.168.1.1
asyncmap 0
auth
crtscts
lock
hide-password
modem
debug
name VPN
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4
---
require-mschap-v2 - требуем авторизацию через MSChap2
ms-dns 192.168.1.1 - это DNS сервер внутри локальной сети. Можно указать и глобальные DNS сервера (типа 8.8.8.8 или 77.88.8.8), но тогда внутренние ресурсы завязанные на DNS не будут видны клиентам подключенным через VPN.
name VPN - этот параметр будет присутствовать в настройках пользователеьских аккаунтов.
///
Настройка пользователей:
nano /etc/ppp/chap-secrets
Формат содержимого:
vpnuser VPN password *
---
VPN - это и есть тот параметр из /etc/ppp/options.xl2tpd
///
Перезапускаем сервисы:
/etc/init.d/ipsec restart
/etc/init.d/xl2tpd restart
Проверяем работу
ipsec verify
В итоге мы имеем сервер, который может обслуживать VPN подключения, и по PPTP, и по L2TP+IPSec.
Устанавливать будем на том же сервере, где сейчас установлен VPN PPTP.
1. Настройка Debian, обновим пакеты и настроим сеть
Обновим систему и пакеты:apt-get update && apt-get upgrade && apt-get dist-upgrade
Настроим сеть:
nano /etc/network/interfaces
nano /etc/resolv.conf
Применим настройки:
/etc/init.d/networking restart
2. Установим VPN сервер l2tp + ipsec
В качестве ipsec демона будем использовать openswan, а в качестве l2tp сервера стандартный xl2tpd:apt-get install xl2tpd
Openswan ставим из исходников, поскольку нет кандидатов на установки из репозиториев.
Ставим необходимые зависимости:
apt-get install libgmp3-dev gawk flex bison make
Собираем openswan:
wget https://download.openswan.org/openswan/openswan-latest.tar.gz
tar -xvzf openswan-latest.tar.gz
cd openswan-2*
make programs
make install
Конфигурируем 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
also=L2TP-PSK-noNAT
conn L2TP-PSK-noNAT
authby=secret
pfs=no
auto=add
keyingtries=3
rekey=no
ikelifetime=8h
keylife=1h
type=transport
left=SERVER.IP
leftprotoport=17/1701
right=%any
rightprotoport=17/%any
Пробелы перед строками обязательны. SERVER.IP - это внешний IP нашего сервера.
Настроим авторизацию через PreShared Key:
nano /etc/ipsec.secrets
Содержимое:
SERVER.IP %any: PSK "PreSharedKey"
---
SERVER.IP - это внешний IP нашего сервера
%any: - подключение с любого IP
PSK - метод авторизации для L2TP. PSK - PreSharedKey, т.е вместо сертификата будем использовать секретное слово.
"PreSharedKey" - само секретное слово
///
Скрипт для настройки сети:
nano /root/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
Делаем скрипт исполняемым:
chmod +x /root/ipsec
Теперь необходимо добавить скрипт в автозагрузку. Однако В Debian 9 по-умолчанию не работает файл-автозапуска скриптов rc.local. Запустим его.
Создаем файл:
nano /etc/rc.local
Пишем в него следующее:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
exit 0
Делаем его исполняемым:
chmod +x /etc/rc.local
Включаем автозапуск rc-local:
systemctl start rc-local
systemctl status rc-local
Добавляем содержимое нашего скрипта /root/ipsec в файл rc.local перед exit 0 и запускаем скрипт:
sh /root/ipsec
Настройка l2tp:
nano /etc/xl2tpd/xl2tpd.conf
Содержимое:
[global]
ipsec saref = yes
[lns default]
ip range = 192.168.1.202-192.168.1.220
local ip = 192.168.1.201
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes
---
ip range = 192.168.1.202-192.168.1.220 - диапазон IP адресов выделяемых для VPN Подключений
local ip = 192.168.1.201 - адрес самого сервера VPN внутри локальной сети
refuse chap = yes - запретить Chap авторизацию
refuse pap = yes - запретить Pap авторизацию
///
Дополнительные настройки:
nano /etc/ppp/options.xl2tpd
Содержимое:
require-mschap-v2
ms-dns 192.168.1.1
asyncmap 0
auth
crtscts
lock
hide-password
modem
debug
name VPN
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4
---
require-mschap-v2 - требуем авторизацию через MSChap2
ms-dns 192.168.1.1 - это DNS сервер внутри локальной сети. Можно указать и глобальные DNS сервера (типа 8.8.8.8 или 77.88.8.8), но тогда внутренние ресурсы завязанные на DNS не будут видны клиентам подключенным через VPN.
name VPN - этот параметр будет присутствовать в настройках пользователеьских аккаунтов.
///
Настройка пользователей:
nano /etc/ppp/chap-secrets
Формат содержимого:
vpnuser VPN password *
---
VPN - это и есть тот параметр из /etc/ppp/options.xl2tpd
///
Перезапускаем сервисы:
/etc/init.d/ipsec restart
/etc/init.d/xl2tpd restart
Проверяем работу
ipsec verify
В итоге мы имеем сервер, который может обслуживать VPN подключения, и по PPTP, и по L2TP+IPSec.
napioZtem_ya Cory Avery download
ОтветитьУдалитьsnabsupvaca