Пример конкретного подключения. Используется FreeBSD 11.0 Release.
Обращаемся к началу начала. Документация здесь VPN через IPsec
Ну и пробуем.
Исходные данные:
- Существует две сети 192.168.146.0/24 и 192.168.147.0/24
- Обе сети соединены через интернет через шлюз, работающий на FreeBSD 11.0 Release
- У шлюза каждой из сетей есть один публичный IP адрес A.B.C.D и W.X.Y.Z
- Внутренние IP адреса двух сетей приватные. На шлюзе работает NAT.
Короче документация похоже устарело, по ней ничего не вышло.
Нашел на английском, здесь более свежее похоже: https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/ipsec.html
Нашел на форуме http://www.opennet.ru/openforum/vsluhforumID1/95477.html?n=yokon следующее:
Ядро должно содержать строки:
options IPSEC device crypto
Собираем ядро.
config kernel_name && cd ../compile/kernel_name make cleandepend && make depend && make && make install
Я не пересобирал ядро, так как в ядре по умолчанию эти опции были уже включены.
Можно посмотреть, что у вас в ядре по умолчанию /usr/src/sys/i386/conf GENERIC
uname -a
посмотреть какое у вас ядро
/etc/rc.conf
cloned_interfaces=»gif0″
ifconfig_gif0=»inet A.A.A.A B.B.B.B netmask 255.255.255.252 tunnel C.C.C.C D.D.D.D»
(A и B адреса концов туннеля) и строится он между C и D
A.A.A.A = 192.168.141.254
B.B.B.B = 192.168.141.254
C.C.C.C = внешний IP сети A.A.A.A
D.D.D.D = внешний IP сети B.B.B.B
ipsec_enable="YES" # Set to YES to run setkey on ipsec_file ipsec_file="/etc/ipsec.conf" # Name of config file for setkey
Создаем фал ipsec.conf
flush; spdflush; spdadd A.A.A.A/30 B.B.B.B/30 any -P out ipsec esp/tunnel/C.C.C.C-D.D.D.D/require; spdadd B.B.B.B/30 A.A.A.A/30 any -P in ipsec esp/tunnel/D.D.D.D-C.C.C.C/require;
Далее идем устанавливаем racoon
cd /usr/ports/security/ipsec-tools/
make && make install && make clean
Я ставил через portmaster, сути не меняет просто по факту было так:
# portmaster /usr/ports/security/ipsec-tools/
в итоге:
Installing ipsec-tools-0.8.2_1... ===> SECURITY REPORT: This port has installed the following files which may act as network servers and may therefore pose a remote security risk to the system. /usr/local/sbin/racoon This port has installed the following startup scripts which may cause these network services to be started at boot time. /usr/local/etc/rc.d/racoon If there are vulnerabilities in these programs there may be a security risk to the system. FreeBSD makes no guarantee about the security of ports included in the Ports Collection. Please type 'make deinstall' to deinstall the port if this is a concern. For more information, and contact details about the security status of this software, see the following webpage: http://ipsec-tools.sourceforge.net/ ===>>> Installation of security/ipsec-tools (ipsec-tools-0.8.2_1) complete
После установки rc.conf добавляем
racoon_enable="YES"
И создаем его конфигурационный файл /usr/local/etc/racoon/racoon.conf:
path include "/usr/local/etc/racoon" ; path pre_shared_key "/usr/local/etc/racoon/psk.txt" ; log notify; padding { maximum_length 20; # maximum padding length. randomize off; # enable randomize length. strict_check off; # enable strict check. exclusive_tail off; # extract last one octet. } # if no listen directive is specified, racoon will listen to all # available interface addresses. listen { #isakmp ::1 [7000]; isakmp C.C.C.C [500]; #admin [7002]; # administrative's port by kmpstat. #strict_address; # required all addresses must be bound. } # Specification of default various timer. timer { # These value can be changed per remote node. counter 5; # maximum trying count to send. interval 20 sec; # maximum interval to resend. persend 1; # the number of packets per a send. # timer for waiting to complete each phase. phase1 60 sec; phase2 30 sec; } remote anonymous { exchange_mode main,aggressive; doi ipsec_doi; situation identity_only; nonce_size 16; lifetime time 240 min; # sec,min,hour initial_contact on; # support_mip6 on; support_proxy on; proposal_check obey; # obey, strict or claim proposal { encryption_algorithm 3des; hash_algorithm md5; authentication_method pre_shared_key ; dh_group 5 ; } } sainfo anonymous { pfs_group 5; lifetime time 24 hour; encryption_algorithm 3des,des,cast128,blowfish; authentication_algorithm hmac_sha1,hmac_md5; compression_algorithm deflate ; }
Создаем файл с паролями psk.txt
D.D.D.D password_for_remote_host
Не забываем сделать его доступным только для чтения.
chmod 600 psk.txt
Перезагружаемся и все работает.
Не все так просто, пинги не пошли, ищу причину.
На 1-ом шлюзе, что касается gif
Посмотреть таблицу маршрутизации
netstat -rn Routing tables Internet: Destination Gateway Flags Netif Expire 192.168.141.254 link#5 UH gif0
На 2-ом шлюзе
192.168.146.254 link#4 UH gif0
————————-
http://wiki.dieg.info/ipsec
# /usr/local/sbin/racoon -F -f /usr/local/etc/racoon/racoon.conf -l /var/log/racoon.log
Выложить рабочие скрипты…