IPsec между FreeBSD 8.0 и роутером Cisco WRV210

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Remmi
рядовой
Сообщения: 15
Зарегистрирован: 2010-12-03 16:52:44

IPsec между FreeBSD 8.0 и роутером Cisco WRV210

Непрочитанное сообщение Remmi » 2010-12-03 20:00:18

Здравствуйте, немогу поднять шифрованый тунель между сервером и роутером.
Подскажите что и где поправить нужно?


Имею 2 сети (Офис, Филиал):

Офис
Сервер с FreeBSD 8.0
IP ISP (внешний) X.X.X.X
IP Lan (внутренний) 192.168.100.2
Диапазон адресов Lan 192.168.100.X/24

Филиал
Роутер Cisco WRV210 Firmware Version: 1.1.17 (на сайте циски есть более новая прошивка, но с ней роутер "вешается")
IP ISP (внешний) Y.Y.Y.Y
IP Lan (внутренний) 172.16.1.1
Диапазон адресов Lan 172.16.1.1/24

Мои действия на сервере Офиса.

1. Собираю ядро с опциями поддержи IPSEC
2. Устанавливаю ipsec-tools 0.7.3
3. в /usr/local/etc/racoon создаю файл psk.txt и меняю права на 0600
содержимое файла psk.txt

Код: Выделить всё

Y.Y.Y.Y Ключ
4.Файл /usr/local/etc/racoon/racoon.conf содержит следующее:

Код: Выделить всё

# $KAME: racoon.conf.sample,v 1.28 2002/10/18 14:33:28 itojun Exp $

# "path" затрагивает директиву "include".  "path" должен быть задан до любых
# директив "include" с относительным путём к файлу.
# Вы можете перезадать директиву "path" впоследствии, однако, это может
# привести большому замешательству.
path include "/usr/local/etc/racoon" ;
#include "remote.conf" ;

# файл должен содержать пару ключей ID/key, для аутентификации по ключам.
path pre_shared_key "/usr/local/etc/racoon/psk.txt" ;

# racoon будет искать файл сертификата в директории, если передан полезный
# запрос certificate/certificate.
#path certificate "/usr/local/etc/racoon/cert/" ;

# "log" определяет уровень логгирования. Он сопровождается одним из
#  "notify", "debug" или "debug2".
log debug2;

# "padding" задаёт некоторые параметры формирования пакетов (если я верно понял)
# Ничего тут не трогайте. (Ага, конечно! - прим. lissyara)
padding
{
        maximum_length 20;      # максимальная длинна набивки (?).
        randomize off;               # включение случайной длинны.
        strict_check off;            # включить строгую проверку.
        exclusive_tail off;          # извлекать один последний октет.
}

# если директива listen не задана, racoon слушает все доступные
# адреса интерфейсов.
listen
{
        #isakmp ::1 [7000];
        isakmp X.X.X.X [500];
        #admin [7002];          # административный порт для racoonctl.
        #strict_address;         # требует что все адреса должны быть ограничены.
}

# Задание различных дефолтовых таймеров.
timer
{
        # Эти значения могут быть изменены удалённым узлом.
        counter 5;                # максимальный счётчик попыток отсыла.
        interval 20 sec;        # максимальный интерал для повторной посылки.
        persend 1;               # число отсылаемых пакетов.

        # максимальное время ожидания для завершения каждой фазы.
        phase1 30 sec;
        phase2 15 sec;
}

# описываем удалённый хост (на второй машине - идентично,
# тока другой IP и ключи)
remote  Y.Y.Y.Y
{
       #exchange_mode aggressive;
        exchange_mode main;
        my_identifier address X.X.X.X;
        peers_identifier address Y.Y.Y.Y;
        proposal {
                encryption_algorithm 3des;                       #Алгоритм шифрования
                hash_algorithm sha1;                               #Метод хеширования
                authentication_method pre_shared_key;   #Метод аутентификации на общем ключе
                dh_group 2 ;                                            #Длина ключа Диффи-Хеллмана (группа 2 - 1024 бит)
        }
}
# Вначале хотел вообще без этой секции,
# но неподнялось, с такой руганью в логах:
#sainfo anonymous
#{
#        pfs_group 5;
#        lifetime time 60 min;
#        encryption_algorithm 3des ;
#        authentication_algorithm hmac_sha1;
#        compression_algorithm deflate ;
#}
5. Файл /usr/local/etc/racoon/setkey.conf содержит следующее:

Код: Выделить всё

flush;
spdflush;
# To the home network
spdadd 192.168.100.0/24 172.16.1.0/24 any -P out ipsec esp/tunnel/X.X.X.X-Y.Y.Y.Y/require;
spdadd 172.16.1.0/24 192.168.100.0/24 any -P in ipsec esp/tunnel/Y.Y.Y.Y-X.X.X.X/require;
6. В файл /etc/rc.conf добавленно:

Код: Выделить всё

ifconfig gif0 create
ifconfig gif0 192.168.100.2 172.16.1.1
ifconfig gif0 tunnel X.X.X.X Y.Y.Y.Y

ipsec_enable="YES"                                                    #Включает IPSec
ipsec_program="/usr/local/sbin/setkey"                    # Пока незнаю для чего она нужна, но не ремлю строку.
ipsec_file="/usr/local/etc/racoon/setkey.conf"          #allows setting up spd policies on boot
racoon_enable="yes"                                                 #Включает сервис шифрования для IPSec
7. в файл /etc/rc.firewall добавленно:

Код: Выделить всё

${fwcmd} add allow log esp from any to any
${fwcmd} add allow log ah from any to any
${fwcmd} add allow log ipencap from any to any
${fwcmd} add allow log udp from any 500 to any
8. Добавляю маршруты:

Код: Выделить всё

route add 172.16.1.0 172.16.1.1 255.255.255.0
route add net 172.16.1.0 172.16.1.1
9. #ipfw show

Код: Выделить всё

00100        0           0 check-state
00200    19430     1100208 allow ip from any to any via lo0
00300        1          60 deny ip from any to 127.0.0.0/8
00400        0           0 deny ip from 127.0.0.0/8 to any
00500        0           0 allow log logamount 100 esp from any to any
00600        0           0 allow log logamount 100 ah from any to any
00700      465       41997 allow log logamount 100 ipencap from any to any
00800     3781     1079316 allow log logamount 100 udp from any 500 to any
10 # ifconfig gif0

Код: Выделить всё

gif0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1280
        tunnel inet X.X.X.X --> Y.Y.Y.Y
        inet6 fe80::216:76ff:fee4:4314%gif0 prefixlen 64 scopeid 0x4
        inet 192.168.100.2 --> 172.16.1.1 netmask 0xffffff00
        options=1<ACCEPT_REV_ETHIP_VER>
11 # netstat -nr

Код: Выделить всё

172.16.1.0/24      172.16.1.1         UGS         0        0   gif0
172.16.1.1         link#4             UH          0    62033   gif0
12 # setkey -DP

Код: Выделить всё

172.16.1.0/24[any] 192.168.100.0/24[any] any
        in ipsec
        esp/tunnel/Y.Y.Y.Y-X.X.X.X/require
        spid=2 seq=1 pid=28864
        refcnt=1
192.168.100.0/24[any] 172.16.1.0/24[any] any
        out ipsec
        esp/tunnel/X.X.X.X-Y.Y.Y.Y/require
        spid=1 seq=0 pid=28864
        refcnt=1
13. # setkey -D

Код: Выделить всё

No SAD entries.
14. # /usr/local/sbin/racoon -F -f /usr/local/etc/racoon/racoon.conf -l /var/log/racoon.log
(лог сделан при попытке пинговать 172.16.1.1 c IP 192.168.100.X)

Код: Выделить всё

Foreground mode.
2010-12-03 18:32:15: INFO: @(#)ipsec-tools 0.7.3 (http://ipsec-tools.sourceforge.net)
2010-12-03 18:32:15: INFO: @(#)This product linked OpenSSL 0.9.8k 25 Mar 2009 (http://www.openssl.org/)
2010-12-03 18:32:15: INFO: Reading configuration from "/usr/local/etc/racoon/racoon.conf"
2010-12-03 18:32:15: DEBUG2: lifetime = 28800
2010-12-03 18:32:15: DEBUG2: lifebyte = 0
2010-12-03 18:32:15: DEBUG2: encklen=0
2010-12-03 18:32:15: DEBUG2: p:1 t:1
2010-12-03 18:32:15: DEBUG2: 3DES-CBC(5)
2010-12-03 18:32:15: DEBUG2: SHA(2)
2010-12-03 18:32:15: DEBUG2: 1024-bit MODP group(2)
2010-12-03 18:32:15: DEBUG2: pre-shared key(1)
2010-12-03 18:32:15: DEBUG2:
2010-12-03 18:32:15: DEBUG2: parse successed.
2010-12-03 18:32:15: INFO: X.X.X.X[500] used as isakmp port (fd=4)
2010-12-03 18:32:15: WARNING: setsockopt(UDP_ENCAP_ESPINUDP_NON_IKE): UDP_ENCAP Invalid argument
2010-12-03 18:32:15: DEBUG: pk_recv: retry[0] recv()
2010-12-03 18:32:15: DEBUG: get pfkey X_SPDDUMP message
2010-12-03 18:32:15: DEBUG2:
02120000 0f000100 01000000 c6700000 03000500 ff180000 10020000 ac100100
00000000 00000000 03000600 ff180000 10020000 c0a86400 00000000 00000000
07001200 02000100 02000000 00000000 28003200 02020000 10020000 3e50b3c7
00000000 00000000 10020000 3e50b894 00000000 00000000
2010-12-03 18:32:15: DEBUG: pk_recv: retry[0] recv()
2010-12-03 18:32:15: DEBUG: get pfkey X_SPDDUMP message
2010-12-03 18:32:15: DEBUG2:
02120000 0f000100 00000000 c6700000 03000500 ff180000 10020000 c0a86400
00000000 00000000 03000600 ff180000 10020000 ac100100 00000000 00000000
07001200 02000200 01000000 00000000 28003200 02020000 10020000 3e50b894
00000000 00000000 10020000 3e50b3c7 00000000 00000000
2010-12-03 18:32:15: DEBUG: sub:0x7fffffffe2d0: 192.168.100.0/24[0] 172.16.1.0/24[0] proto=any dir=out
2010-12-03 18:32:15: DEBUG: db :0x80125a290: 172.16.1.0/24[0] 192.168.100.0/24[0] proto=any dir=in
2010-12-03 18:34:56: DEBUG: pk_recv: retry[0] recv()
2010-12-03 18:34:56: DEBUG: get pfkey ACQUIRE message
2010-12-03 18:34:56: DEBUG2:
02060003 2f000000 0c000000 00000000 03000500 ff200000 10020000 3e50b894
00000000 00000000 03000600 ff200000 10020000 3e50b3c7 00000000 00000000
02001200 02000200 01000000 00000000 25000d00 20000000 00070000 00000000
0001c001 00000000 01000000 01000000 00000000 00000000 00000000 00000000
00000000 00000000 80510100 00000000 80700000 00000000 00000000 00000000
000b0000 00000000 00010008 00000000 01000000 01000000 00000000 00000000
00000000 00000000 00000000 00000000 80510100 00000000 80700000 00000000
00000000 00000000 000c0000 00000000 00010001 00000000 01000000 01000000
00000000 00000000 00000000 00000000 00000000 00000000 80510100 00000000
80700000 00000000 00000000 00000000 00160000 00000000 00010001 00000000
01000000 01000000 00000000 00000000 00000000 00000000 00000000 00000000
80510100 00000000 80700000 00000000 00000000 00000000
2010-12-03 18:34:56: DEBUG: suitable outbound SP found: 192.168.100.0/24[0] 172.16.1.0/24[0] proto=any dir=out.
2010-12-03 18:34:56: DEBUG: sub:0x7fffffffe260: 172.16.1.0/24[0] 192.168.100.0/24[0] proto=any dir=in
2010-12-03 18:34:56: DEBUG: db :0x80125a290: 172.16.1.0/24[0] 192.168.100.0/24[0] proto=any dir=in
2010-12-03 18:34:56: DEBUG: suitable inbound SP found: 172.16.1.0/24[0] 192.168.100.0/24[0] proto=any dir=in.
2010-12-03 18:34:56: DEBUG: new acquire 192.168.100.0/24[0] 172.16.1.0/24[0] proto=any dir=out
2010-12-03 18:34:56: DEBUG: configuration found for Y.Y.Y.Y.
2010-12-03 18:34:56: DEBUG: getsainfo params: loc='192.168.100.0/24', rmt='172.16.1.0/24', peer='NULL', id=0
2010-12-03 18:34:56: DEBUG: getsainfo pass #2
2010-12-03 18:34:56: ERROR: failed to get sainfo.
2010-12-03 18:35:28: DEBUG: caught rtm:14, need update interface address list
2010-12-03 18:35:28: DEBUG: caught rtm:2, need update interface address list
2010-12-03 18:35:28: DEBUG: caught rtm:13, need update interface address list
2010-12-03 18:35:28: DEBUG: caught rtm:14, need update interface address list
2010-12-03 18:35:28: DEBUG: caught rtm:14, need update interface address list
2010-12-03 18:36:36: DEBUG: caught rtm:14, need update interface address list
2010-12-03 18:36:36: DEBUG: caught rtm:14, need update interface address list
2010-12-03 18:36:36: DEBUG: caught rtm:14, need update interface address list
2010-12-03 18:36:36: DEBUG: caught rtm:2, need update interface address list
2010-12-03 18:36:36: DEBUG: caught rtm:13, need update interface address list
2010-12-03 18:36:36: DEBUG: caught rtm:2, need update interface address list
2010-12-03 18:36:36: DEBUG: caught rtm:13, need update interface address list
2010-12-03 18:36:36: DEBUG: msg 15 not interesting
2010-12-03 18:36:36: DEBUG: msg 15 not interesting
2010-12-03 18:36:36: DEBUG: caught rtm:12, need update interface address list
2010-12-03 18:36:36: DEBUG: msg 1 not interesting
2010-12-03 18:36:59: DEBUG: caught rtm:14, need update interface address list
2010-12-03 18:36:59: DEBUG: caught rtm:2, need update interface address list
2010-12-03 18:36:59: DEBUG: caught rtm:13, need update interface address list
2010-12-03 18:36:59: DEBUG: caught rtm:14, need update interface address list
2010-12-03 18:36:59: DEBUG: caught rtm:14, need update interface address list

Настройки роутера Филиала:
1. Раздел IPSec VPN
WRV210 IPSec.JPG
2. Раздел VPN Summary
WRV210 IPSec2.JPG
3 VPN log (кнопка внизу на фото 2)

Код: Выделить всё

000   [Tue 14:46:32]  "TunnelA": deleting connection
001   [Tue 14:46:37]  added connection description "TunnelA"
002   [Tue 14:46:37]  "TunnelA" #6: initiating Main Mode
003   [Tue 14:46:37]  "TunnelA" #6: [WRV210 Response:] ISAKMP SA (Main Mode) Initiation
004   [Tue 14:47:47]  "TunnelA" #6: [WRV210 Response:] Remote peer has no tunnel entry to correspond to this tunnel.
005   [Tue 14:47:47]  "TunnelA" #6: [WRV210 Response:] Please check your Remote Secure Gateway setting.
006   [Tue 14:47:47]  "TunnelA" #6: max number of retransmissions (2) reached STATE_MAIN_I1.  No response (or no acceptable response) to our first IKE message
007   [Tue 14:47:47]  "TunnelA" #6: starting keying attempt 2 of at most 5, but releasing whack
008   [Tue 14:47:47]  "TunnelA" #7: initiating Main Mode to replace #6
009   [Tue 14:48:57]  "TunnelA" #7: [WRV210 Response:] Remote peer has no tunnel entry to correspond to this tunnel.
010   [Tue 14:48:57]  "TunnelA" #7: [WRV210 Response:] Please check your Remote Secure Gateway setting.
011   [Tue 14:48:57]  "TunnelA" #7: max number of retransmissions (2) reached STATE_MAIN_I1.  No response (or no acceptable response) to our first IKE message
012   [Tue 14:48:57]  "TunnelA" #7: starting keying attempt 3 of at most 5
013   [Tue 14:48:57]  "TunnelA" #8: initiating Main Mode to replace #7
014   [Tue 14:50:07]  "TunnelA" #8: [WRV210 Response:] Remote peer has no tunnel entry to correspond to this tunnel.
015   [Tue 14:50:07]  "TunnelA" #8: [WRV210 Response:] Please check your Remote Secure Gateway setting.
016   [Tue 14:50:07]  "TunnelA" #8: max number of retransmissions (2) reached STATE_MAIN_I1.  No response (or no acceptable response) to our first IKE message
017   [Tue 14:50:07]  "TunnelA" #8: starting keying attempt 4 of at most 5
018   [Tue 14:50:07]  "TunnelA" #9: initiating Main Mode to replace #8
019   [Tue 14:51:17]  "TunnelA" #9: [WRV210 Response:] Remote peer has no tunnel entry to correspond to this tunnel.
020   [Tue 14:51:17]  "TunnelA" #9: [WRV210 Response:] Please check your Remote Secure Gateway setting.
021   [Tue 14:51:17]  "TunnelA" #9: max number of retransmissions (2) reached STATE_MAIN_I1.  No response (or no acceptable response) to our first IKE message
022   [Tue 14:51:17]  "TunnelA" #9: starting keying attempt 5 of at most 5
023   [Tue 14:51:17]  "TunnelA" #10: initiating Main Mode to replace #9
024   [Tue 14:52:27]  "TunnelA" #10: [WRV210 Response:] Remote peer has no tunnel entry to correspond to this tunnel.
025   [Tue 14:52:27]  "TunnelA" #10: [WRV210 Response:] Please check your Remote Secure Gateway setting.
026   [Tue 14:52:27]  "TunnelA" #10: max number of retransmissions (2) reached STATE_MAIN_I1.  No response (or no acceptable response) to our first IKE message
4 Detail (кнопка напротив тунеля А на фото 2)

Код: Выделить всё

000 "TunnelA":     srcip=unset; dstip=unset; srcup=ipsec _updown; dstup=ipsec _updown;
000 "TunnelA":   ike_life: 28800s; ipsec_life: 3600s; rekey_margin: 60s; rekey_fuzz: 100%; keyingtries: 5
000 "TunnelA":   policy: PSK+ENCRYPT+TUNNEL+UP; prio: 32,24; interface: eth0; 
000 "TunnelA":   dpd: action:restart; delay:30; timeout:120; 
000 "TunnelA":   newest ISAKMP SA: #0; newest IPsec SA: #0; 
000 "TunnelA":   IKE algorithms wanted: 5_000-2-2, flags=strict
000 "TunnelA":   IKE algorithms found:  5_192-2_096-2, 
000 "TunnelA":   ESP algorithms wanted: 3_000-2, flags=strict
000 "TunnelA":   ESP algorithms loaded: 3_000-2, flags=strict
Вот собственно и все
p.s. (время на роутере не настроенно)
Последний раз редактировалось f_andrey 2010-12-03 20:11:04, всего редактировалось 1 раз.
Причина: Автору, выбирайте пожалуйста раздел соответствуюший тематике вашего сообщения.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Remmi
рядовой
Сообщения: 15
Зарегистрирован: 2010-12-03 16:52:44

Re: IPsec между FreeBSD 8.0 и роутером Cisco WRV210

Непрочитанное сообщение Remmi » 2010-12-06 19:58:36

Неужели не у кого нет идей? ... (

Remmi
рядовой
Сообщения: 15
Зарегистрирован: 2010-12-03 16:52:44

Re: IPsec между FreeBSD 8.0 и роутером Cisco WRV210

Непрочитанное сообщение Remmi » 2010-12-07 17:28:17

Все настроил..... решение проблемы интересует когото?

Silver_SS
проходил мимо
Сообщения: 4
Зарегистрирован: 2010-12-09 18:59:10

Re: IPsec между FreeBSD 8.0 и роутером Cisco WRV210

Непрочитанное сообщение Silver_SS » 2010-12-09 19:02:03

интересует. что же было??

Remmi
рядовой
Сообщения: 15
Зарегистрирован: 2010-12-03 16:52:44

Re: IPsec между FreeBSD 8.0 и роутером Cisco WRV210

Непрочитанное сообщение Remmi » 2010-12-13 17:45:45

В конфиге ошибки..... сейчас всё работает, но есть проблема.... если Cisco WRV210 перегрузить, то обмен пакемами между внутренними сетями автоматом поднимается примерно через минут 35-40, что есть крайне неприемлимо. Быстрее поднять получается только выполнением setkey -f /usr/local/etc/racoon/setkey.conf или соответственно перезапуском самого ракона.

есть подводный камень.... если у вас на серваке инет типа PPPoE, то ракун стартует раньше чем осуществляется само подключение, и останавливается.
рецеп хорошие люди подсказали следующий:
В стартовом скрипте ракуна (путь /usr/local/etc/rc.d/racoon) в первой строке прописать следующее.
/sbin/ping -c 10 ИМЯ УЗЛА ДЛЯ ПИНГОВАНИЯ > /dev/null

p.s. все конфиги выложу после того закончу с проблемой по setkey.
Может кто поможет?

Remmi
рядовой
Сообщения: 15
Зарегистрирован: 2010-12-03 16:52:44

Re: IPsec между FreeBSD 8.0 и роутером Cisco WRV210

Непрочитанное сообщение Remmi » 2010-12-13 20:12:23

Итак проблема решена.
Описываю полный процесс настройки IPsec

Есть 2 сети (Офис, Филиал):

Офис
Сервер с FreeBSD 8.0
IP ISP (внешний) X.X.X.X
IP Lan (внутренний) 192.168.100.2
Диапазон адресов Lan 192.168.100.X/24

Филиал
Роутер Cisco WRV-210 Firmware Version: 2.0.0.11
IP ISP (внешний) Y.Y.Y.Y
IP Lan (внутренний) 172.16.1.1
Диапазон адресов Lan 172.16.1.1/24

Действия на сервере:
1. Собираем ядро с опциями поддержи IPsec

2. Ставим ipsec-tools 0.7.3 (на момент написания поста это самая последняя версия)

3. В /usr/local/etc/racoon создаём файл psk.txt и меняем права #chmod 0600 /usr/local/etc/racoon/psk.txt
содержимое файла psk.txt

Код: Выделить всё

Y.Y.Y.Y Ключ
4. Создаём файл /usr/local/etc/racoon/racoon.conf со следующим содержанием:

Код: Выделить всё

# $KAME: racoon.conf.sample,v 1.28 2002/10/18 14:33:28 itojun Exp $

# "path" затрагивает директиву "include".  "path" должен быть задан до любых
# директив "include" с относительным путём к файлу.
# Вы можете перезадать директиву "path" впоследствии, однако, это может
# привести большому замешательству.
path include "/usr/local/etc/racoon" ;
#include "remote.conf" ;

# файл должен содержать пару ключей ID/key, для аутентификации по ключам.
path pre_shared_key "/usr/local/etc/racoon/psk.txt" ;

# racoon будет искать файл сертификата в директории, если передан полезный
# запрос certificate/certificate.
#path certificate "/usr/local/etc/racoon/cert/" ;

# "log" определяет уровень логгирования. Он сопровождается одним из
# "notify", "debug" или "debug2".
#log debug2;

# "padding" задаёт некоторые параметры формирования пакетов.
padding
{
        maximum_length 20;      # максимальная длинна набивки (?).
        randomize off;          # включение случайной длинны.
        strict_check off;       # включить строгую проверку.
        exclusive_tail off;     # извлекать один последний октет.
}

# если директива listen не задана, racoon слушает все доступные
# адреса интерфейсов.
listen
{
        #isakmp ::1 [7000];
        isakmp X.X.X.X [500];
        #admin [7002];          # административный порт для racoonctl.
        #strict_address;        # требует что все адреса должны быть ограничены.
}

# Задание различных дефолтовых таймеров.
timer
{
        # Эти значения могут быть изменены удалённым узлом.
        counter  5;              # максимальный счётчик попыток отсыла.
        interval 20 sec;         # максимальный интерал для повторной посылки.
        persend  1;              # число отсылаемых пакетов.

        # максимальное время ожидания для завершения каждой фазы.
        phase1 30 sec;
        phase2 15 sec;
}

#Секция отвечает за формирование первой фазы тунеля IPSec:
#Сколько нужно тунелей столько должно быть секций remote
#Описывается удалённый хост:
remote  Y.Y.Y.Y
{
        # DPD - dead peer detection.
        dpd_delay        10;
        dpd_retry        5;
        dpd_maxfail      5;
        exchange_mode    main,aggressive;
        doi              ipsec_doi;
        situation        identity_only;
        my_identifier    address X.X.X.X;
        peers_identifier address Y.Y.Y.Y;
        lifetime time   8 hour;
        passive         off;
        proposal_check  obey;
#       nat_traversal   off;
        generate_policy off;
                                     proposal 
                                     {
                                     encryption_algorithm  3des;                     #Алгоритм шифрования
                                     hash_algorithm        sha1;                       #Метод хеширования
                                     authentication_method pre_shared_key;  #Метод аутентификации на общем ключе
                                     lifetime time         30 sec;
                                     dh_group              2;                              #Длина ключа Диффи-Хеллмана (группа 2 - 1024 бит)
                                     }
}

#Секция отвечает за формирование второй фазы тунеля IPSec:
#Сколько нужно тунелей столько должно быть секций sainfo
sainfo (address 192.168.100.0/24 any address 172.16.1.0/24 any)
{
        pfs_group                2;
        lifetime time            36000 sec;
        encryption_algorithm     3des;
        authentication_algorithm hmac_sha1;
        compression_algorithm    deflate;
}
5. Файл /usr/local/etc/racoon/setkey.conf содержит следующее:

Код: Выделить всё

flush;
spdflush;
spdadd 192.168.100.0/24 172.16.1.0/24 any -P out
ipsec esp/tunnel/X.X.X.X-Y.Y.Y.Y/require;
spdadd 172.16.1.0/24 192.168.100.0/24 any -P in
ipsec esp/tunnel/Y.Y.Y.Y-X.X.X.X/require;
6. В файл /etc/rc.conf добавленно:

Код: Выделить всё

# создаём gif-интерфейс
cloned_interfaces="gif0"
gif_interfaces="gif0"
gifconfig_gif0="X.X.X.X Y.Y.Y.Y"
ifconfig_gif0="inet 192.168.100.2 172.16.1.1 netmask 0xffffffff"
static_routes="Test"
route_Test="172.16.1.0/24 -interface gif0"

ipsec_enable="YES"                                      #Включает поддержку IPSec
ipsec_program="/usr/local/sbin/setkey"                  #Незнаю за что отвечает... но мне не мешает:)
ipsec_file="/usr/local/etc/racoon/setkey.conf"          #Путь к конфигурационному файлу racoon
racoon_enable="YES"                                     #Включает сервис шифрования для IPSec
racoon_flags="-l /var/log/racoon.log"                   #Включает логировани работы racoon
7. В файл /etc/rc.firewall добавленно (у меня они идут почти в начале):

Код: Выделить всё

${fwcmd} add allow log esp from any to any
${fwcmd} add allow log ah from any to any
${fwcmd} add allow log ipencap from any to any
${fwcmd} add allow log udp from any 500 to any
Настройки роутера Филиала:
1. Раздел IPSec VPN (опишу только этот раздел, так как все остальное по умолчанию за исключением настроек интернета разумеется)
WRV210 IPSec.JPG
Pre-Shared Key естественно должен быть такой же как в файле /usr/local/etc/racoon/psk.txt

p.s. так как у меня инет PPPoE то пришлось добавить в /usr/local/etc/rc.d/racoon
следующее:

Код: Выделить всё

/sbin/ping -c 4 127.0.0.1
колличество пингов больше 10 делать не рекомендую (долго будет подниматься ракон)

Очень полезные ссылки по IPsec
http://www.lissyara.su/articles/freebsd ... ty/ipsec2/
http://www.freebsd.org/doc/en_US.ISO885 ... ipsec.html Eng.