Перейти к содержимому
Обложка сообщества Разное

Связь между сетями ISA и FreeBSD с помощью IPSEC

Достаточно интересная задачка по соединению сетей - на одной стороне шлюзом ISA 2006 на другой шлюзом FreeBSD. Идеологически правильно создавать IPSEC соединение site-to-site - так пишут на M$. Ок...супер...но нигде нет про FreeBSD, везде только Linux :) Не беда...поправим - итак быстрое howto соединения сетей....

 

дано -

сеть 10.0.0.0/24 - шлюз ISA - внешний 1.1.1.252

сеть 172.16.172.0/24 - шлюз FreeBSD внешний 1.1.1.150

необходимо -

связать сети между собой и шифровать канал

Лирика - делаю на preshared key пока. С сертифкатами надо конкретно вдуплить...что и как....

На ISA все решается мастером за 5 минут, посему только скрины без комментариев

Итак..с ISA все...

FreeBSD - необходимо -

в ядре

option    IPSEC

device    crypto

пересобираем ядро

ставим ipsec-tools -

создаем директории для файлов racoon -

/usr/local/erc/racoon - нормальный такой выбор

/usr/local/etc/racoon/cert - для сертификатов (в будущем) и файлов presharedkeys

создем файл ipsec.conf в /etc - для политик IPSEC

копируем из /usr/local/share/examples/ipsec-tools два файла

конфиг racoon в racoon и psk.txt в cert

рихтуем под себя

psk.txt - наш файл ключей - IP адрес удаленной стороны и ключ

ПРАВА НА ФАЙЛ 0600 для root - иначе не запустися!

racoon.conf - собственно файл конфигурации. Самый простой вариант без наворотов

path include "/usr/local/etc/racoon";
path pre_shared_key "/usr/local/etc/racoon/cert/psk.txt";
log debug;

# "padding" defines some padding parameters. You should not touch these.
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 on all
# available interface addresses.
listen
{
isakmp 1.1.1.150 [500];
}

# Specify various default timers.
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 send.
# maximum time to wait for completing each phase.
phase1 30 sec;
phase2 15 sec;
}

remote 1.1.1.252
{
exchange_mode aggressive,main;
doi ipsec_doi;
situation identity_only;

my_identifier address 1.1.1.150;
peers_identifier address 1.1.1.252;
proposal_check obey; # obey, strict, or claim

proposal {
encryption_algorithm 3des;
hash_algorithm md5;
authentication_method pre_shared_key;
lifetime time 30 sec;
dh_group 2;
}
}

sainfo 1.1.1.150 any address 1.1.1.252 any
{
pfs_group 2;
lifetime time 36000 sec;
encryption_algorithm 3des;
authentication_algorithm hmac_md5;
compression_algorithm deflate;
}

sainfo anonymous
{
pfs_group 2;
lifetime time 60 min;
encryption_algorithm 3des;
authentication_algorithm hmac_md5;
compression_algorithm deflate;
}

и наконец ipsec.conf - указываем политики связи и шифрования

spdadd 172.16.172.0/24 10.0.0.0/24 any -P out ipsec esp/tunnel/1.1.1.150-1.1.1.252/require;
spdadd 10.0.0.0/24 172.16.172.0/24 any -P in ipsec esp/tunnel/1.1.1.252-1.1.1.150/require;

рихтуем rc.conf

racoon_enable="NO" - включаем racoon (пока NO, но как только все проверим ставим YES)
gif_interfaces="gif0" - описываем интерфейс через который идем в туннель
gifconfig_gif0="1.1.1.150 1.1.1.252" - создаем туннель
ifconfig_gif0="inet 172.16.172.252 10.0.0.252 netmask 255.255.255.0" какие сети связываем
ipsec_enable="YES" - шифрование
ipsec_file="/etc/ipsec.conf" - его конфиг
static_routes="MyContoso" - маршрут в другую сеть
route_MyContoso="10.0.0.0/24 -interface gif0"  - куда и через кого

перегружаем FreeBSD смотрим  наш gif0

А теперь пробуем взлететь со всем этим - запускаемся в отладке

смутило пару вещей - потом покопаюсь...

ну и пробуем пробить туннель - пингуем из сети 10.0.0.0/24 адрес в сети 172.16.172.0/24

первый пакет потерялся - устанавливалась связь, зато потом все супер

со стороны FreeBSD

ну и чтобы окончательно убедиться в том что все пашет - ssh соединение на ВНУТРЕННИЙ адрес FreeBSD

Смотрим на ISA

ну вроде все... быстро (не совсем безопасно, не совсем правильно :) ). так сказать костыль на пару дней.

P.S.

Заметил неприятную вещь - соединение устанавливается только если инициатор в сети за ISA. Если попробовать соединиться инициировав соединение из сети за freebsd, то ничего не получится....

После ночи капания в google вроде как понял, что косяк в реализации NAT-T IPSEC в ISA.

Побороть пока не смог :( обыдно да...

0
5
396

Еще по теме

Связь между сетями ISA и FreeBSD с помощью IPSEC - Yvision.kz