l2tp + ipsec vpn сервер на Debian 9
Настраиваем VPN сервер посредством l2tp + ipsec.
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.6.50 make programs make install
Приступим к настройке ipsec демона.
Приведем конфиг /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
Наиболее важные моменты конфига прокомментированы. Также следует не забыть составить конфиг именно таким образом, как указано выше, то есть с сохранением пробелов в начале строки у тех команд, у которых они указаны, так как отступ команды демоном привязывается к блоку, определяемому безотступным «conn».
Теперь зададим авторизацию для работы с ipsec. Существует два метода авторизации — по сертификату и по ключу ( PSK ). В данном примере мы настроим авторизацию по ключу в файле /etc/ipsec.secrets:
11.11.11.11 %any: PSK "mykey"
11.11.11.11 — это внешний IP адрес нашего сервера
%any — это встроенная переменная обозначающая любой IP адрес
PSK — метод авторизации ( может быть RSA )
«mykey» — секретный ключ для авторизации, который потребуется передать клиенту.
Скрипт для настройки сети
В /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
Добавляем в rc.local и запускаем
sh /root/ipsec
Теперь пришло время настроить l2tp сервер. Он будет работать через протокол ppp.
Приводим конфиг /etc/xl2tpd/xl2tpd.conf к виду:
[global] port = 1701 ipsec saref = yes saref refinfo = 30 [lns default] ip range = 10.1.2.2-10.1.2.255 local ip = 10.1.2.1 refuse chap = yes refuse pap = yes require authentication = yes ppp debug = yes pppoptfile = /etc/ppp/options.xl2tpd length bit = yes name = VPN
Далее настраиваем конфиг ppp, который запрашивается нашим l2tp демоном ( /etc/ppp/options.xl2tpd ):
require-mschap-v2 ms-dns 8.8.8.8 ms-dns 8.8.4.4 asyncmap 0 auth crtscts lock hide-password modem #debug name VPN proxyarp lcp-echo-interval 30 lcp-echo-failure 4
В случае возникновения проблем со связью или с подключением для дебага работы l2tp просто раскомментируем «#debug» и смотрим в системный лог /var/log/syslog на наличие ошибок.
Настраиваем авторизацию в ppp ( /etc/ppp/chap-secrets ):
test VPN password *
Рестартуем все сервисы
/etc/init.d/ipsec restart /etc/init.d/xl2tpd restart
Проверяем работу
ipsec verify
Checking if IPsec got installed and started correctly: Version check and ipsec on-path [OK] Openswan U2.6.50/K4.9.0-3-amd64 (netkey) See `ipsec --copyright' for copyright information. Checking for IPsec support in kernel [OK] NETKEY: Testing XFRM related proc values ICMP default/send_redirects [OK] ICMP default/accept_redirects [OK] XFRM larval drop [OK] Hardware random device check [N/A] Two or more interfaces found, checking IP forwarding [OK] Checking rp_filter [OK] Checking that pluto is running [OK] Pluto listening for IKE on udp 500 [OK] Pluto listening for IKE on tcp 500 [NOT IMPLEMENTED] Pluto listening for IKE/NAT-T on udp 4500 [OK] Pluto listening for IKE/NAT-T on tcp 4500 [NOT IMPLEMENTED] Pluto listening for IKE on tcp 10000 (cisco) [NOT IMPLEMENTED] Checking NAT and MASQUERADEing [TEST INCOMPLETE] Checking 'ip' command [OK] Checking 'iptables' command [OK]
Олег says:
Прекрасно работает! Спасибо Димон!