URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 92481
[ Назад ]

Исходное сообщение
"racoon"

Отправлено korzey , 21-Окт-11 22:30 
Настраиваю тестовый канал между "офисом" и "удаленной точкой".

Обе машины:
FreeBSD 8.2 + ipsec-tools из портов

options><------>IPSEC
options><------>IPSEC_NAT_T
device<><------>crypto
device<><------>enc

для упрощения firewall_type="OPEN" (все равно в локалке играюсь)

Гейт "офиса":
-------------
rc.conf
-------------
net_oif="ae0"
net_oip="172.16.100.9"
net_onet="172.16.100.0/22"
net_omask="255.255.252.0"

net_iif="re0"
net_iip="192.168.0.1"
net_inet="192.168.0.0/24"
net_imask="255.255.255.0"

gateway_enable="YES"
ifconfig_ae0="inet ${net_oip}  netmask ${net_omask}"
ifconfig_re0="inet ${net_iip}  netmask ${net_imask}"

firewall_enable="YES"
firewall_type="OPEN"
firewall_quiet="YES"
firewall_nat_enable="YES"
firewall_nat_interface="${net_oif}"

racoon_enable="YES"
ipsec_enable="YES"
cloned_interfaces="gif0"

ipsec_remote0_iface="gif0"
ipsec_remote0_oip="172.16.100.10"
ipsec_remote0_iip="192.16.1.1"
ipsec_remote0_imask="255.255.255.0"
ipsec_remote0_inet="192.168.1.0/24"

gifconfig_gif0="${net_oip} ${ipsec_remote0_oip}"
ifconfig_gif0="inet ${net_iip} ${ipsec_remote0_iip} netmask 255.255.255.255"

static_routes="RemoteLan0"
route_RemoteLan0="${ipsec_remote0_inet} -interface ${ipsec_remote0_iface}"

----------
ipsec.conf
----------
flush;
spdflush;

spdadd 172.16.100.9/32 172.16.100.10/32 any -P out ipsec esp/tunnel/172.16.100.9-172.16.100.10/require;
spdadd 172.16.100.10/32 172.16.100.9/32 any -P in ipsec esp/tunnel/172.16.100.10-172.16.100.9/require;

-----------
racoon.conf
-----------
path include "/usr/local/etc/racoon";
path certificate "/usr/local/etc/racoon/certs";
path pidfile "/var/run/racoon/racoon.pid";

log debug2;

padding
{
        maximum_length 20;
        randomize off;
        strict_check off;
        exclusive_tail off;
}

listen
{
        isakmp 172.16.100.9 [500];
}

timer
{
        counter 5;
        interval 20 sec;
        persend 1;
        phase1 30 sec;
        phase2 15 sec;
}

#Remote 01
remote 172.16.100.10
{
        exchange_mode main,base;
        my_identifier asn1dn;
        peers_identifier asn1dn;
        certificate_type x509 "office.pub" "office.priv";
        peers_certfile x509 "remote01.pub";
        proposal
        {
                encryption_algorithm 3des;
                hash_algorithm sha1;
                authentication_method rsasig;
                dh_group 2;
        }
}

#SA Remote 01
sainfo address 192.168.0.0/24 any address 192.168.1.0/24 any
{
        pfs_group 2;
        lifetime time 60 min;
        encryption_algorithm 3des;
        authentication_algorithm hmac_sha1;
        compression_algorithm deflate;
}

Гейт "удаленной точки":
-----------------------
rc.conf
-------------
net_oif="fxp0"
net_oip="172.16.100.10"
net_onet="172.16.100.0/22"
net_omask="255.255.252.0"

net_iif="re0"
net_iip="192.168.1.1"
net_inet="192.168.1.0/24"
net_imask="255.255.255.0"

gateway_enable="YES"
ifconfig_fxp0="inet ${net_oip}  netmask ${net_omask}"
ifconfig_re0="inet ${net_iip}  netmask ${net_imask}"

firewall_enable="YES"
firewall_type="OPEN"
firewall_quiet="YES"
firewall_nat_enable="YES"
firewall_nat_interface="${net_oif}"

racoon_enable="YES"
ipsec_enable="YES"
cloned_interfaces="gif0"

ipsec_remote0_iface="gif0"
ipsec_remote0_oip="172.16.100.9"
ipsec_remote0_iip="192.16.0.1"
ipsec_remote0_imask="255.255.255.0"
ipsec_remote0_inet="192.168.0.0/24"

gifconfig_gif0="${net_oip} ${ipsec_remote0_oip}"
ifconfig_gif0="inet ${net_iip} ${ipsec_remote0_iip} netmask 255.255.255.255"

static_routes="RemoteLan0"

route_RemoteLan0="${ipsec_remote0_inet} -interface ${ipsec_remote0_iface}"

----------
ipsec.conf
----------
flush;
spdflush;

spdadd 172.16.100.10/32 172.16.100.9/32 any -P out ipsec esp/tunnel/172.16.100.10-172.16.100.9/require;
spdadd 172.16.100.9/32 172.16.100.10/32 any -P in ipsec esp/tunnel/172.16.100.9-172.16.100.10/require;

-----------
racoon.conf
-----------
path include "/usr/local/etc/racoon";
path certificate "/usr/local/etc/racoon/certs" ;
path pidfile "/var/run/racoon/racoon.pid";
log debug2;

padding
{
        maximum_length 20;
        randomize off;
        strict_check off;
        exclusive_tail off;
}

listen
{
        isakmp 172.16.100.10 [500];
}

timer
{
        counter 5;
        interval 20 sec;
        persend 1;
        phase1 30 sec;
        phase2 15 sec;
}

#Office
remote 172.16.100.9
{
        exchange_mode main,base;
        my_identifier asn1dn;
        peers_identifier asn1dn;
        certificate_type x509 "remote01.pub" "remote01.priv";
        peers_certfile x509 "office.pub";
        proposal
        {
                encryption_algorithm 3des;
                hash_algorithm sha1;
                authentication_method rsasig;
                dh_group 2;
        }
}

#SA Office
sainfo address 192.168.1.0/24 any address 192.168.0.0/24 any
{
        pfs_group 2;
        lifetime time 60 min;
        encryption_algorithm 3des;
        authentication_algorithm hmac_sha1;
        compression_algorithm deflate;
}
--------------
Лог "офиса"
racoon: DEBUG: filename: /usr/local/etc/racoon/certs/office.pub
racoon: DEBUG: filename: /usr/local/etc/racoon/certs/remote01.pub
racoon: DEBUG2: lifetime = 28800
racoon: DEBUG2: lifebyte = 0
racoon: DEBUG2: encklen=0
racoon: DEBUG2: p:1 t:1
racoon: DEBUG2: 3DES-CBC(5)
racoon: DEBUG2: SHA(2)
racoon: DEBUG2: 1024-bit MODP group(2)
racoon: DEBUG2: RSA signatures(3)
racoon: DEBUG2:
racoon: DEBUG2: Etype mismatch: got 2, expected 4.
racoon: DEBUG2: Etype mismatch: got 1, expected 4.
racoon: DEBUG: no check of compression algorithm; not supported in sadb message.
racoon: DEBUG: getsainfo params: loc='192.168.0.0/24' rmt='192.168.1.0/24' peer='NULL' client='NULL' id=0
racoon: DEBUG2: parse successed.
racoon: DEBUG: open /var/db/racoon/racoon.sock as racoon management.

Лог "точки"
gw racoon: DEBUG: filename: /usr/local/etc/racoon/certs/remote01.pub
gw racoon: DEBUG: filename: /usr/local/etc/racoon/certs/office.pub
gw racoon: DEBUG2: lifetime = 28800
gw racoon: DEBUG2: lifebyte = 0
gw racoon: DEBUG2: encklen=0
gw racoon: DEBUG2: p:1 t:1
gw racoon: DEBUG2: 3DES-CBC(5)
gw racoon: DEBUG2: SHA(2)
gw racoon: DEBUG2: 1024-bit MODP group(2)
gw racoon: DEBUG2: RSA signatures(3)
gw racoon: DEBUG2:
gw racoon: DEBUG2: Etype mismatch: got 2, expected 4.
gw racoon: DEBUG2: Etype mismatch: got 1, expected 4.
gw racoon: DEBUG: no check of compression algorithm; not supported in sadb message.
gw racoon: DEBUG: getsainfo params: loc='192.168.1.0/24' rmt='192.168.0.0/24' peer='NULL' client='NULL' id=0
gw racoon: DEBUG2: parse successed.

--------------------------------------------------------

Ну и собственно, вопрос, с чего бы на "удаленной" машине в логах ни слова о том, что создан сокет. Не трудно заметить, что разница в логах только в последней строке, что "сокет создан"

При попытке пинга "удаленной сети" (192.168.1.1) с "офисной" машины, получаю
office# ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1): 56 data bytes
ping: sendto: Network is down
ping: sendto: Network is down

При попытке обратного пинга - тоже самое...

При попытке пинга "внешнего" интерфейса "удаленной" машины с "офисной и обратно вообще никакой реакции. Но в то же время, пинги на остальные машины сети 172.16.100.0/22 и с них на эти две идут без проблем.

В чем я не прав?


Содержание

Сообщения в этом обсуждении
"racoon"
Отправлено Сергей , 21-Окт-11 22:47 
> Настраиваю тестовый канал между "офисом" и "удаленной точкой".
> Обе машины:
> FreeBSD 8.2 + ipsec-tools из портов

Уберите все, что относится к ipsec и racoon, все равно сеть тестовая,  и просто настройте тоннель, у вас банально нет инкапсуляции... Приведите ipconfig после старта...


"racoon"
Отправлено korzey , 21-Окт-11 22:57 
>> Настраиваю тестовый канал между "офисом" и "удаленной точкой".
>> Обе машины:
>> FreeBSD 8.2 + ipsec-tools из портов
>  Уберите все, что относится к ipsec и racoon, все равно сеть
> тестовая,  и просто настройте тоннель, у вас банально нет инкапсуляции...
> Приведите ipconfig после старта...

"office"
--------
ae0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=82018<VLAN_MTU,VLAN_HWTAGGING,WOL_MAGIC,LINKSTATE>
        ether 00:1b:fc:73:10:95
        inet 172.16.100.9 netmask 0xfffffc00 broadcast 172.16.103.255
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=389b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_UCAST,WOL_MCAST,WOL_MAGIC>
        ether 1c:7e:e5:10:9d:25
        inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
plip0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> metric 0 mtu 1500
ipfw0: flags=8801<UP,SIMPLEX,MULTICAST> metric 0 mtu 65536
enc0: flags=0<> metric 0 mtu 1536
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=3<RXCSUM,TXCSUM>
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0xb
        inet6 ::1 prefixlen 128
        inet 127.0.0.1 netmask 0xff000000
        nd6 options=3<PERFORMNUD,ACCEPT_RTADV>
gif0: flags=8011<UP,POINTOPOINT,MULTICAST> metric 0 mtu 1280
        inet 192.168.0.1 --> 192.16.1.1 netmask 0xffffffff
        options=1<ACCEPT_REV_ETHIP_VER>

--------
"remote"
--------
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=2009<RXCSUM,VLAN_MTU,WOL_MAGIC>
        ether 00:13:d4:a5:01:87
        inet 172.16.100.10 netmask 0xfffffc00 broadcast 172.16.103.255
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
       options=389b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_UCAST,WOL_MCAST,WOL_MAGIC>
        ether 1c:7e:e5:10:9d:27
        inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
plip0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> metric 0 mtu 1500
ipfw0: flags=8801<UP,SIMPLEX,MULTICAST> metric 0 mtu 65536
enc0: flags=0<> metric 0 mtu 1536
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=3<RXCSUM,TXCSUM>
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0xb
        inet6 ::1 prefixlen 128
        inet 127.0.0.1 netmask 0xff000000
        nd6 options=3<PERFORMNUD,ACCEPT_RTADV>
gif0: flags=8011<UP,POINTOPOINT,MULTICAST> metric 0 mtu 1280
        inet 192.168.1.1 --> 192.16.0.1 netmask 0xffffffff
        options=1<ACCEPT_REV_ETHIP_VER>


"racoon"
Отправлено korzey , 21-Окт-11 23:01 
Ну и нетстат, на всяк случай
"Офиса"
gw# netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            172.16.103.1       UGS         0        0    ae0
127.0.0.1          link#11            UH          0        0    lo0
172.16.100.0/22    link#1             U           1      189    ae0
172.16.100.9       link#1             UHS         0        0    lo0
192.16.1.1         link#12            UH          0        0   gif0
192.168.0.0/24     link#7             U           0        0    re0
192.168.0.1        link#7             UHS         1        0    lo0
192.168.1.0/24     gif0               US          0        2   gif0

и "удаленной"
gw# netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            172.16.103.1       UGS         0       12   fxp0
127.0.0.1          link#11            UH          0        0    lo0
172.16.100.0/22    link#6             U           0      140   fxp0
172.16.100.10      link#6             UHS         0        0    lo0
192.16.0.1         link#12            UH          0        0   gif0
192.168.0.0/24     gif0               US          0        0   gif0
192.168.1.0/24     link#7             U           0        0    re0
192.168.1.1        link#7             UHS         1        0    lo0


"racoon"
Отправлено a2l , 24-Окт-11 06:53 
>[оверквотинг удален]

Ну а пинги то ходят?


"racoon"
Отправлено korzey , 24-Окт-11 12:56 
>>[оверквотинг удален]
> Ну а пинги то ходят?

Сейчас, без ipsec, так:
в 172-й сетке пинги ходят нормально
в 192-й и с "офисной", и с "удаленной" - молчание.


"racoon"
Отправлено korzey , 24-Окт-11 15:58 
>> Настраиваю тестовый канал между "офисом" и "удаленной точкой".
>> Обе машины:
>> FreeBSD 8.2 + ipsec-tools из портов
>  Уберите все, что относится к ipsec и racoon, все равно сеть
> тестовая,  и просто настройте тоннель, у вас банально нет инкапсуляции...
> Приведите ipconfig после старта...

Кстати, да, судя по всему, банально не проходит передача пакетов между gif-ами.
Переписал rc.conf с нуля, т.е. оставил только поднятие интерфейсов.
После чего на обеих машинах
ifconfig gif0 create
ifconfig gif0 <ext_ip> <remote_ext_ip>
ifconfig gif0 inet <int_ip> <remote_int_ip> netmask 0xffffffff

в результате с обеих машин

# ping <remote_int_ip>
ping: sendto: Network is down

в tcpdump -i gif0 тоже тишина


"racoon"
Отправлено korzey , 24-Окт-11 17:57 
[кусь]

Так, с гифами и роутами разобрался.
Пакеты ходят из сетки в сетку без проблем.

Но как, как только ставлю
ipsec/racon в enable - все молчит.


"racoon"
Отправлено Сергей , 22-Окт-11 23:53 
>[оверквотинг удален]
> cloned_interfaces="gif0"
> ipsec_remote0_iface="gif0"
> ipsec_remote0_oip="172.16.100.10"
> ipsec_remote0_iip="192.16.1.1"
> ipsec_remote0_imask="255.255.255.0"
> ipsec_remote0_inet="192.168.1.0/24"
> gifconfig_gif0="${net_oip} ${ipsec_remote0_oip}"
> ifconfig_gif0="inet ${net_iip} ${ipsec_remote0_iip} netmask 255.255.255.255"
> static_routes="RemoteLan0"
> route_RemoteLan0="${ipsec_remote0_inet} -interface ${ipsec_remote0_iface}"

Не проще ли было написать

cloned_interfaces="gif0"
gif_interfaces="gif0"
^^^^^^^^^^^^^^^^^^^^^ - этого не хватает, инициализация тоннеля
gifconfig_gif0="172.16.100.10 172.16.100.9"
ifconfig_gif0="inet 192.168.0.1 192.16.0.1 netmask 0xffffff00"
static_routes="vpn"
route_vpn="192.16.0.0/24 -interface gif0"

Сетка у вас вторая странноватая 192.16.0.0....


"racoon"
Отправлено korzey , 24-Окт-11 12:41 
[кусь]
> Не проще ли было написать
> cloned_interfaces="gif0"
> gif_interfaces="gif0"
> ^^^^^^^^^^^^^^^^^^^^^ - этого не хватает, инициализация тоннеля

Упс забыл... сейчас добавлю...

> Сетка у вас вторая странноватая 192.16.0.0....

Да, очепятался...


"racoon"
Отправлено a2l , 24-Окт-11 07:03 
> Настраиваю тестовый канал между "офисом" и "удаленной точкой".
> ----------
> ipsec.conf
> ----------
> flush;
> spdflush;
> spdadd 172.16.100.9/32 172.16.100.10/32 any -P out ipsec esp/tunnel/172.16.100.9-172.16.100.10/require;
> spdadd 172.16.100.10/32 172.16.100.9/32 any -P in ipsec esp/tunnel/172.16.100.10-172.16.100.9/require;

правила написаны неправильно.
Кроме того, если используешь туннельный режим ipsec, то не надо городить gif-ы и прочее, что не понимаешь.
Если же тебе реально нужно сделать с gif-интерфейсом, то не забывай его делать точка-точка, и используй транспортный режим ipsec.


"racoon"
Отправлено korzey , 24-Окт-11 12:48 
[кусь]
> правила написаны неправильно.

В какой части тела?
> Кроме того, если используешь туннельный режим ipsec, то не надо городить gif-ы
> и прочее, что не понимаешь.

С гифа-ми мне проще для себя, с вопросами роутинга и пр. Там таких тоннелей будет пять в реале - офис и пять "удаленок".
> Если же тебе реально нужно сделать с gif-интерфейсом, то не забывай его
> делать точка-точка, и используй транспортный режим ipsec.

А на счет транспортного режиами IPSec более развернуто можно? Или ссыль какую почитать?



"racoon"
Отправлено a2l , 24-Окт-11 21:53 
> [кусь]
>> правила написаны неправильно.
> В какой части тела?

В той, что "кусь".


"racoon"
Отправлено korzey , 25-Окт-11 01:01 
>> [кусь]
>>> правила написаны неправильно.
>> В какой части тела?
>  В той, что "кусь".

Нда... содержательно... собака, от нечего делать, лижет себя, а люди - смотрю, на форумы пишут...


"racoon"
Отправлено a2l , 25-Окт-11 04:53 
>>> [кусь]
>>>> правила написаны неправильно.
>>> В какой части тела?
>>  В той, что "кусь".
> Нда... содержательно... собака, от нечего делать, лижет себя, а люди - смотрю,
> на форумы пишут...

...ага, на кнопки нажимают вместо того, что бы головой подумать.
Для прапорщиков бронетанковых войск процитирую ещё раз:

Эти правила написаны неправильно --
spdadd 172.16.100.9/32 172.16.100.10/32 any -P out ipsec esp/tunnel /172.16.100.9-172.16.100.10/require;
spdadd 172.16.100.10/32 172.16.100.9/32 any -P in ipsec esp/tunnel/172.16.100.10-172.16.100.9/require;


"racoon"
Отправлено korzey , 25-Окт-11 12:35 
>>>> [кусь]
> Эти правила написаны неправильно --
>  spdadd 172.16.100.9/32 172.16.100.10/32 any -P out ipsec esp/tunnel /172.16.100.9-172.16.100.10/require;
>  spdadd 172.16.100.10/32 172.16.100.9/32 any -P in ipsec esp/tunnel/172.16.100.10-172.16.100.9/require;

Для старших прапорщиков танковых войск - в какой части эти правила написаны не правильно...
Если в части сетей, то я уже испробовал все возможные варианты.
Надо добить колличество мессаг - так писали бы по букве, а то прям цельными словами бросаетесь... разор сплощной...


"racoon"
Отправлено korzey , 26-Окт-11 21:20 
[кусь]
Короче, после долгих развлечений пришел к двум выводам: одному радостному - все просто и банально, и второму, печальному - диагностика у ракуна никакая. Т.е. при ошибках в конфигурационном файле, об ошибке можно узнать только по отсутствию файла "/var/run/racoon.pid". В разных манах по разному называются параметры файла конфига, но ракун молчит, как рыба об лед, если встречает неверный. Ну ладно, хватит о грустном....

Построение защищенной распределенной сети, с центральным офисом и несколькими удаленными, заработало "на ура".

И так....

Собственно, файлы конфигурации везде почти идентичны (с учетом "зеркального отражения"), разница только в количестве каналов у каждой точки. У меня только офис имеет досутп к "удаленкам", а каждая удаленка только к офису, хотя, можно было бы связать и всех со всеми, если надо, но это уже по мере необходимости.
От "gif"-ов избавился совсем.

Данность:
  офис:
    off_inet - внутренняя сеть (к примеру, 192.168.0.0/24)
    off_oip - внешний адрес гейта (хоть 100.0.1.1, все равно от балды)
    off_cert - сертификат офиса (.priv, .pub)

  удаленка 1:
    rem1_inet - внутренняя сеть
    rem1_oip - внешний адрес гейта
    rem1_cert - сертификат удаленки 1

  .
  .
  .

  удаленка N:
    remN_inet - внутренняя сеть
    remN_oip - внешний адрес гейта
    remN_cert - сертификат удаленки N

(отрабатывалось на FreeBSD 8.2 STABLE)

собираем ядро
options         IPSEC
options         IPSEC_NAT_T
device          crypto

ставим /usr/ports/security/ipsec-tools
!!!при установке папка /usr/local/etc/racoon не создается, и никаких примеров никуда не копируется, так что создать ручками папку.
Смотреть примеры в /usr/ports/security/ipsec-tools/work/ipsec-tools-0.8.0/src/racoon/samples

rc.conf банален для всех
--------------
racoon_enable="YES"
racoon_create_dirs="YES" #по желанию, все равно не работает
ipsec_enable="YES"

ipsec.conf
------------
#общий кусок
flush;
spdflush;

#на соединение сети с сетью пара правил
spdadd $(loc_inet) $(rem_inet) any -P out ipsec esp/tunnel/$(loc_gate)-$(rem_gate)/require;
spdadd $(rem_inet) $(loc_inet) any -P in ipsec esp/tunnel/$(rem_gate)-$(loc_gate)/require;

т.е. для соединения сети 192.168.0.0/24(ext. IP 95.87.46.84) с сетью 192.168.12.0/24 (ext.IP 184.45.97.11)
spdadd 192.168.0.0/24 192.168.12.0/24 any -P out ipsec esp/tunnel/95.87.46.84-184.45.97.11/require;
spdadd 192.168.12.0/24 192.168.0.0/24 any -P in ipsec esp/tunnel/184.45.97.11-95.87.46.84/require;

и для каждого устанавливаемого канала повторить...

racoon.conf
-----------
#базовое
path certificate "/usr/local/etc/racoon/certs";
# "notify", "debug" or "debug2".
log debug2; # для отладки, потом на notify сменить.

padding
{
    maximum_length 20;
    randomize off;
    strict_check off;
    exclusive_tail off;
}

timer
{
    counter 5;
    interval 20 sec;
    persend 1;
    #natt_keepalive 10 sec; по-умолчанию, 20 секунд, и у меня все поднималось нормально
    phase1 30 sec;
    phase2 15 sec;
}

#где слушаем
listen
{
    isakmp $(loc_gate_ip) [500];
    isakmp_natt $(loc_gate_ip) [4500];
}

#для каждой удаленной сети

remote ${remote_external_ip}
{
    exchange_mode main,base;
    my_identifier asn1dn;
    peers_identifier asn1dn;
    certificate_type x509 $(local_public_cert) $(local_private_cert);
    peers_certfile x509 $(remote_public_cert);
    proposal
    {
        encryption_algorithm 3des;
        hash_algorithm sha1;
        authentication_method rsasig;
        dh_group 2;
    }
    nat_traversal on;
}

#...и повторить для каждого канала

#собственно, вторая фаза согласования.
#если все remote/proposal секции одинаковы, то можно делать единую
#в противном случае, вместо anonymous прописывать как указано
#в `man racoon.conf`, через address для каждой сети
sainfo anonymous
{
    pfs_group 2;
    lifetime time 60 min; #кому как, хоть годами
    encryption_algorithm 3des;
    authentication_algorithm hmac_sha1;
    compression_algorithm deflate;
}

------
shutdown -r now на всех машинках.
------
И все... на этом моменте можно, при пинговании удаленной сети, наблюдать информацию о "переговорах" в /var/log/debug.log
или через tcpdump наблюдать на внешнем интерфейсе ESP-пакеты

PS: Про фаервол писать не буду, бо лень... кто-то юзает ipfw, кто-то ipf, кто-то сито с мелкой дырочкой...

PPS: Создание сертификатов через openssl довольно просто, потому не описывал, можно глянуть хоть у Лисяры, хоть тут же на ОпенНэте, в других описаниях настройки IPSec... (лентяй я, что делать))))