Автор Тема: L2TP/IPSec поднимаем VPN сервер  (Прочитано 430 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Pascal

  • Администратор
  • Сообщений: 8558
  • Репутация: 38.45
  • OS:
  • Linux (Gentoo) Linux (Gentoo)
  • Browser:
  • Chrome 16.0.912.63 Chrome 16.0.912.63
    • Просмотр профиля
    • Форум системных администраторов UNIX
L2TP/IPSec поднимаем VPN сервер
« : Февраль 02, 2012, 09:54:34 am »
Для организации шифрованного туннеля нам потребуются:

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.conf

path 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.l2tpd

mtu 1410
mru 1410
lcp-echo-interval 3
lcp-echo-failure 8
nodeflate
lock

Добавляем пользователей /etc/ppp/chap-secrets:

test    * passwd    *
Для отладки правим /etc/init.d/racoon

RACOON_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



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



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

Spoiler for log:
2012-02-02 11:47:45: INFO: 10.2.0.3[500] used as isakmp port (fd=7)
2012-02-02 11:47:45: INFO: 10.2.0.3[500] used for NAT-T
2012-02-02 11:47:52: INFO: respond new phase 1 negotiation: 10.2.0.3[500]<=>10.1.0.100[500]
2012-02-02 11:47:52: INFO: begin Identity Protection mode.
2012-02-02 11:47:52: INFO: received broken Microsoft ID: MS NT5 ISAKMPOAKLEY
2012-02-02 11:47:52: INFO: received Vendor ID: FRAGMENTATION
2012-02-02 11:47:52: INFO: received Vendor ID: draft-ietf-ipsec-nat-t-ike-02
2012-02-02 11:47:52: INFO: Selected NAT-T version: draft-ietf-ipsec-nat-t-ike-02
2012-02-02 11:47:52: INFO: Hashing 10.2.0.3[500] with algo #2
2012-02-02 11:47:52: INFO: NAT-D payload #0 verified
2012-02-02 11:47:52: INFO: Hashing 10.1.0.100[500] with algo #2
2012-02-02 11:47:52: INFO: NAT-D payload #1 verified
2012-02-02 11:47:52: INFO: NAT not detected
2012-02-02 11:47:53: INFO: Hashing 10.1.0.100[500] with algo #2
2012-02-02 11:47:53: INFO: Hashing 10.2.0.3[500] with algo #2
2012-02-02 11:47:53: INFO: Adding remote and local NAT-D payloads.
2012-02-02 11:47:53: INFO: ISAKMP-SA established 10.2.0.3[500]-10.1.0.100[500] spi:376c284e6b5f134c:98e81ddf16dfdb77
2012-02-02 11:47:53: INFO: respond new phase 2 negotiation: 10.2.0.3[500]<=>10.1.0.100[500]
2012-02-02 11:47:53: INFO: IPsec-SA established: ESP/Transport 10.1.0.100[0]->10.2.0.3[0] spi=22702232(0x15a6898)
2012-02-02 11:47:53: INFO: IPsec-SA established: ESP/Transport 10.2.0.3[500]->10.1.0.100[500] spi=597304365(0x239a242d)

Обсуждение
« Последнее редактирование: Февраль 02, 2012, 12:20:08 pm от Pascal »
cout << "Shalom World!\n"; // (с)