Мы уже писали о VPN сервере с помощью PPTP. Но скажем честно это уже старый и не безопасный способ, хотя и простой в реализации. Сегодня мы сделаем VPN сервер на современной технологии L2TP туннель плюс шифровании трафика с помощью IPSec. Считается, что протокол L2TP вобрал в себя лучшие черты L2F и PPTP. IPsec (сокращение от IP Security) — набор протоколов для обеспечения защиты данных, передаваемых по межсетевому протоколу IP. Позволяет осуществлять подтверждение подлинности (аутентификацию), проверку целостности и/или шифрование IP-пакетов. IPsec также включает в себя протоколы для защищённого обмена ключами в сети Интернет. Приступим:
apt-get install openswan xl2tpd ppp
Для Debian 8 придется openswan собирать их исходников, в стандартном репозитории его нету. Для начало придется установить дополнительный библиотеки необходимые для сборки:
apt-get install libgmp3-dev gawk flex bison
Пакет: gawk — это GNU реализация языка программирования AWK.
Пакет: flex — это программа для генерации сканеры: программы, которые признаны лексических шаблонов в тексте(приблизительный перевод).
Пакет: bisom — это универсальный генератор парсер, который преобразует описание грамматики для LALR(1) контекстно-свободной грамматики в программу на C для разбора этой грамматике.
Теперь скачаем IPsec и распакуем:
wget https://download.openswan.org/openswan/openswan-latest.tar.gz
tar -xvzf openswan-latest.tar.gz
Далее зайдем в папку openswan-2.6.49.1(в моем случае) и установим IPsec:
cd openswan-2.6.49.1
В стандартном дебиан не работает команда make по дефолту.
apt-get install build-essential
make programs
make install
К стати не стоит удалять папку с исходниками после установки программы. В этой папке содержится скрипт, отвечающий за удаление программы, это относится ко всем корректно написанным программам для Linux.
Начнем настройку IPsec, открываем файл /etc/ipsec.conf:
version 2.0 config setup nat_traversal=yes Разрешить NAT (IP Masqurade) oe=off protostack=netkey # Решить, какой стек протоколов будет использоваться "auto", "klips", "netkey" and "mast". conn L2TP-PSK authby=secret # аутентификация по Preshared Key pfs=no rekey=no type=tunnel left=185.14.XX.XX # Ip адрес сервера leftnexthop=%defaultroute # шлюз внешнего интерфейса leftprotoport=17/1701 right=%any rightprotoport=17/%any rightsubnetwithin=0.0.0.0/0 auto=add dpddelay=30 dpdtimeout=120 dpdaction=clear
Следующим шагом – добавим ключ шифрования. Для этого укажем в файле /etc/ipsec.secrets желаемый ключ:
%any %any: PSK "TestSecret"
Перейдем к настройке L2TP. Откроем в редакторе файл /etc/xl2tpd/xl2tpd.conf:
[global] # глобальные настройки ipsec saref = yes # Включить отслеживание IPsec Security Association [lns default] # настройки сервера. ip range = 192.168.1.231-192.168.1.239 #Указывает диапазон IPv4-адресов, которые LNS будет назначать туннелям PPP от подключающихся LAC. Можно указать несколько диапазонов. local ip = 192.168.1.1 # Использовать указанный IPv4, в качестве собственного IP-адреса для xl2tpd. refuse chap = yes # Требовать или отказывать удалённому VPN-клиенту в PPP-аутентификации по протоколу CHAP (refuse | require) chap. refuse pap = yes # Требовать или отказывать удалённому VPN-клиенту в PPP-аутентификации по протоколу PAP. (refuse | require) pap. require authentication = yes # Требовать или отказывать удалённому VPN-клиенту в PPP-аутентификации. #unix authentication Если значение установлено в "yes", то для PPP-аутентификации удалённого VPN-клиента будет использоваться unix-аутентификация, то есть пара "логин:пароль" берётся из локального "/etc/passwd", используемого операционной системой, в которой запущен xl2tpd. ppp debug = no # Данный параметр включает режим отладки для pppd. pppoptfile = /etc/ppp/options.xl2tpd #Указывает путь к файлу, содержащему параметры настройки pppd. length bit = yes # Если значение установлено в "yes", то будет использован бит длины, указывающий полезную нагрузку (payload) l2tp-пакета.
Наша следующая цель – файл конфигурации /etc/ppp/options.xl2tpd:
require-mschap-v2 ms-dns 8.8.8.8 # Адрес DNS сервера. mtu 1200 mru 1200 asyncmap 0 auth crtscts lock hide-password modem debug name l2tpd # Имя. proxyarp lcp-echo-interval 30 lcp-echo-failure 4 logfile /var/log/xl2tpd.log # Путь к лог файлу
Наше соединение использует авторизацию по паролю, поэтому укажем его в соответствующем файле /etc/ppp/chap-secrets:
# /etc/ppp/chap-secrets # Secrets for authentication using CHAP # client server secret IP addresses test * "test" *
Перезагружаем IPSec и L2TP.
apt-get install build-essential
Забыли — в стандартном дебиан не работает команда make по дефолту
Спасибо, действительно так и есть.
root@111 :~# make
-bash: make: command not found
Как сделать l2tp без шифрования?