Для организации шифрованного туннеля нам потребуются:
net-firewall/ipsec-tools
Homepage: http://ipsec-tools.sourceforge.net/
Description: A port of KAME's IPsec utilities to the Linux-2.6 IPsec implementation
net-dialup/xl2tpd
Homepage: http://www.xelerance.com/services/software/xl2tpd/
Description: A modern version of the Layer 2 Tunneling Protocol (L2TP) daemonВ ядре должны присутствовать:
CONFIG_NET_KEY=m
CONFIG_INET_AH=m
CONFIG_INET_ESP=m
CONFIG_INET_IPCOMP=m
CONFIG_INET_TUNNEL=m
CONFIG_INET_XFRM_MODE_TRANSPORT=m
CONFIG_INET_XFRM_MODE_TUNNEL=m
CONFIG_IPV6=m
CONFIG_CRYPTO=y
CONFIG_CRYPTO_NULL=m
CONFIG_CRYPTO_HMAC=y
CONFIG_CRYPTO_MD4=m
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_SHA1=m
CONFIG_CRYPTO_SHA256=m
CONFIG_CRYPTO_SHA512=m
CONFIG_CRYPTO_AES=m
CONFIG_CRYPTO_CAST5=m
CONFIG_CRYPTO_CAST6=m
CONFIG_CRYPTO_DES=y
CONFIG_CRYPTO_ARC4=m
CONFIG_CRYPTO_BLOWFISH=m
CONFIG_CRYPTO_TWOFISH=m
CONFIG_CRYPTO_TWOFISH_COMMON=m
CONFIG_CRYPTO_MICHAEL_MIC=m
CONFIG_CRYPTO_DEFLATE=mПравим
/etc/racoon/racoon.confpath pre_shared_key "/etc/racoon/psk.txt";
path certificate "/etc/racoon/certs";
listen {
isakmp 10.2.0.3 [500];
}
remote anonymous {
exchange_mode main;
doi ipsec_doi;
proposal {
encryption_algorithm 3des;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group 14;
}
}
sainfo anonymous {
lifetime time 3600 sec;
encryption_algorithm 3des, aes, blowfish;
authentication_algorithm hmac_md5, hmac_sha1, hmac_sha256,
hmac_sha512;
compression_algorithm deflate;
}Где 10.2.0.3 [500]; это интерфейс на котором будет слушать IPSec
Правим
/etc/ipsec-tools.conf#!/usr/sbin/setkey -f
flush;
spdflush;
spdadd 10.2.0.3/32[1701] 0.0.0.0/0 udp -P out ipsec
esp/transport//require;
spdadd 0.0.0.0/0 10.2.0.3/32[1701] udp -P in ipsec
esp/transport//require;Задаем ключ PSK
/etc/racoon/psk.txt* pskkeyexampleПроверяем что на файл стоят права 600
Правим
/etc/xl2tdp/xl2tpd.conf [global]
port = 1701
auth file = /etc/l2tpd/l2tp-secrets
access control = no
rand source = dev
[lns default]
exclusive = no
ip range = 10.10.0.2-10.10.0.100
local ip = 10.10.0.1
length bit = yes
require chap = yes
refuse pap = yes
refuse authentication = no
require authentication = yes
name = l2tp.server.example
pppoptfile = /etc/ppp/options.l2tpd
flow bit = yesГде local ip это адрес который назначается на туннельные интерфейсы pppX.
ip range это диапазон выдаваемых адресов для клиентов.
Вся подсеть не должна пересекаться с внутненней сетью.
Правим
/etc/ppp/options.l2tpdmtu 1410
mru 1410
lcp-echo-interval 3
lcp-echo-failure 8
nodeflate
lockДобавляем пользователей
/etc/ppp/chap-secrets:
test * passwd *Для отладки правим
/etc/init.d/racoonRACOON_ARGS="-v -l /var/log/ipsec.log"Стартуем сервисы:
/etc/init.d/setkey start
/etc/init.d/racoon start
/etc/init.d/xl2tpd startИ прицепляемся к логу:
tail -f /var/log/ipsec.logНастройки на серверной части завершены.
Приступаем к клиенту:
В настройках VPN подключения указываем ip или имя нашего сервера:

В IPSec Settings указываем пароль из psk.txt

Выбираем тип VPN L2TP IPSec

Имя пользователя и пароль берем из chap-secrets

Скрин успешного подключения:

Лог успешного подключения с сервера:
Обсуждение