L2TP+IPSec
Решил наконец-то разобраться с этой мутной доселе темой — IPSec. И в частности — с её реализацией на FreeBSD.
Если не вдаваться в кровавые подробности, то в общих чертах дело обстоит так: L2TP настраивается как обычно, абсолютно без какой-либо оглядки на то, что должен быть ещё и IPSec. Я это делаю обычно на mpd5, путём небольшой правки дефолтного конфига, который идёт с mpd.
IPSec в данном случае логически представляет собой некую надстройку, в которой нужно указать, что «трафик, идущий с такого-то IP на такой-то по таким-то портам и такого-то протокола — требует шифрования (это так называемый „транспортный режим“ работы IPSec). В случае с L2TP эти параметры выставляются так: трафик с любого IP и любого порта, идущий на IP-адрес сервера и порт 1701 (стандартный порт L2TP) по протоколу UDP, потребно шифровать.
Во фре IPSec реализуется с помощью пакета ipsec-tools (он же racoon).
После установки ipsec-tools потребуются следующие модификации в /etc/rc.conf:
% cat /etc/rc.conf ... ipsec_program="/sbin/setkey" ipsec_file="/usr/local/etc/racoon/setkey.conf" racoon_enable="YES" racoon_flags="-l /var/log/racoon.log" ...
Далее идут конфиги самого racoon и утилиты setkey, а также список pre-shared key по-клиентно:
% cat /usr/local/etc/racoon/setkey.conf flush; spdflush; spdadd 0.0.0.0/0[any] 192.168.2.2[1701] udp -P in ipsec esp/transport//require; spdadd 192.168.2.2[1701] 0.0.0.0/0[any] udp -P out ipsec esp/transport//require;
% cat /usr/local/etc/racoon/racoon.conf path pre_shared_key "/usr/local/etc/racoon/psk.txt"; log debug; listen { isakmp 192.168.2.2 [500]; isakmp_natt 192.168.2.2 [4500]; strict_address; } remote anonymous { exchange_mode main; passive on; proposal_check obey; support_proxy on; nat_traversal off; ike_frag on; dpd_delay 20; proposal { encryption_algorithm aes; hash_algorithm sha1; authentication_method pre_shared_key; dh_group modp1024; } proposal { encryption_algorithm 3des; hash_algorithm sha1; authentication_method pre_shared_key; dh_group modp1024; } } sainfo anonymous { encryption_algorithm aes,3des; authentication_algorithm hmac_sha1; compression_algorithm deflate; pfs_group modp1024; }
# cat /usr/local/etc/racoon/psk.txt 192.168.2.4 Password 192.168.2.5 Password1 192.168.1.4 Password2
Клиентом выступает маршрутизатор Mikrotik. Там схема та же — настраивается как обычно L2TP-клиент, а затем топаем в раздел IP ==> IPSec и добавляем записи на вкладке Peers и Policies. Вкладка Peers:

Собственно, здесь я изменил только поля Address (в нём указываем IP VPN-сервера) и Secret (это и есть pre-shared key), а также поле Hash algorithm (по дефолту стоял md5). Остальные поля оставил как есть.
И добавляем запись в разделе Policies:


«Как вы понимаете из названия» (с), поля Src. address и SA src. address — это IP-адрес клиента, а Dst. address и SA dst. address — это адрес VPN-сервера.
Comments
Comments powered by Disqus