Статьи

Статьи->FreeBSD->Настройка Site-to-Site VPN между Cisco и FreeBSD [ Поиск ]

Настройка Site-to-Site VPN между Cisco и FreeBSD
Заголовок Настройка Site-to-Site VPN между Cisco и FreeBSD
Описание Настройка Site-to-Site VPN между Cisco и FreeBSD
Отправил sergey

Как-то понадобилось настроить Site-to-Site VPN между Cisco и FreeBSD.

Почитав гугл решил использовать на FreeBSD демон Racoon...

Нашел статью по настройке FreeBSD IPsec и Check Point Firewall , стал делать по ней, но так как там описано - у меня не заработало.

Схема:

схема

 

Мне нужно было, чтобы клиенты из сети 192.168.0.0/24 попадали в сеть 10.0.0.0/24. При этом за кошкой - сеть 192.168.0.0/24 была занята и построение обычного VPN сеть-в-сеть отпало само по себе. Осталось только строить VPN тунель между кошкой и фрей. На фре надо было натить внутреннюю сетку во внешний интерфейс, а потом уже шифровать трафик между внешними интерфейсами кошки и фри.

Дальше так:

1. Собираем ядро с поддержкой IPSEС, IPFIREWALL, DIVERT

  • options IPFIREWALL
  • options IPDIVERT
  • options IPFIREWALL_VERBOSE
  • options IPFIREWALL_VERBOSE_LIMIT=20
  • options IPFIREWALL_FORWARD
  • options IPSEC
  • options IPSEC_ESP
  • options IPSEC_FILTERGIF
  • options MSIZE=512

2. Ставим racoon из портов security/racoon или security/ipsec-tools.

3. Конфигурим IPSEC на FreeBSD.

Создаем файлик /usr/local/etc/rc.d/00_ipsec.sh:


#!/bin/sh

case "$1" in
start)

setkey -FP
setkey -F
setkey -c <
spdadd 2.2.2.2 10.0.0.0/24 any
-P out ipsec esp/tunnel/2.2.2.2-1.1.1.1/require ;
spdadd 10.0.0.0/24 2.2.2.2 any
-P in ipsec esp/tunnel/1.1.1.1-2.2.2.2/require ;
EOF
;;
stop)
setkey -FP
setkey -F
;;
*)
echo "Usage: `basename $0` {start|stop}" >&2
;;
esac

exit 0

 

 

4. Конфигурируем racoon:

файл /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.
}

listen
{
#isakmp ::1 [7000];
isakmp 193.200.68.74 [500];
#admin [7002]; # administrative's port by kmpstat.
#strict_address; # required all addresses must be bound.
}


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 30 sec;
phase2 15 sec;
}


remote anonymous
{
exchange_mode main,base,aggressive;

doi ipsec_doi;

lifetime time 28800 sec; # sec,min,hour

proposal_check obey; # obey, strict or claim
proposal {
encryption_algorithm 3des;
hash_algorithm sha1;
authentication_method pre_shared_key ;
dh_group 2 ;
}
}

sainfo anonymous
{
pfs_group 2;
lifetime time 3600 sec;
encryption_algorithm 3des;
authentication_algorithm hmac_sha1, hmac_md5;
compression_algorithm deflate ;
}


создаем файл, в котором находиться наш preshared key /usr/local/etc/racoon/psk.txt

1,1,1,1 test_key

 

на этот файл обязательно владелец = тот, от кого запускаеться racoon и права 600, иначе работать не будет!!!

5. Конфигурируем IPFW

Приведу минимально необходимую конфигурацию:


# em0 as inside interface
# em1 as outside interface

fc="/sbin/ipfw -q"

/sbin/ipfw -f flush

$fc add allow ip from any to any via lo0
$fc add deny ip from any to 127.0.0.0/8
$fc add deny ip from 127.0.0.0/8 to any

$fc add allow ip from 10.0.0.0/24 to 192.168.0.0/24
$fc add divert natd ip from 192.168.0.0/24 to 10.0.0.0/24 via em1
$fc add divert natd ip from any to 2.2.2.2 in

$fc add allow udp from 1.1.1.1 to 2.2.2.2 isakmp
$fc add allow udp from 2.2.2.2 to 1.1.1.1 isakmp
$fc add allow esp from 1.1.1.1 to 2.2.2.2

$fc add allow esp from 2.2.2.2 to 1.1.1.1
$fc add allow ip from 10.0.0.0/24 to 192.168.0.0/24
$fc add allow ip from 10.0.0.0/24 to 2.2.2.2
$fc add allow tcp from any to any established
$fc add allow ip from any to any frag
$fc add allow ip from any to any via em0

$fc add allow ip from me to any

 

6. В /etc/rc.conf пишем

static_routes="vpn"
route_vpn="-net 10.0.0.0/24 2.2.2.2"
firewall_enable="YES"
firewall_script="/etc/rc.firewall"
natd_enable="YES"
natd_flags="-f /etc/natd.conf"
racoon_flags="-4 -l /var/log/racoon.log"
racoon_enable="YES"

 

 

7. Конфигурим Cisco

crypto isakmp policy 1
encr 3des
authentication pre-share
group 2
lifetime 28800
crypto isakmp key test_key address 2.2.2.2
!
!
crypto ipsec transform-set SB_TEST esp-3des esp-sha-hmac
!
crypto map FreeBSD 10 ipsec-isakmp
set peer 2.2.2.2
set transform-set SB_TEST
set pfs group2
match address 109
access-list 109 permit ip 10.0.0.0 0.0.0.255 host 2.2.2.2

 

8. Теперь либо перегружаем сервак, либо запускаем все "ручками". Все должно заработать, по крайней мере у меня - заработало.

Для проверки с сервака ping -S 192.168.0.1 10.0.0.1

P.S.: Если кому надо VPN сеть-в-сеть, делаем по такой же схеме, только без NAT, с соответствующими правками в 00_ipsec.sh и в конфиге Cisco

Голосов Голосов: 0 - В среднем:

Добавить комментарий Оценить
Комментарии

Статистика
Всего 14 статей в базе
Наиболее просматриваемые: NAT через loopback интерфейс
Лучшие по оценкам: NAT через loopback интерфейс

Пользователи в разделе статьи: 5 (0 Пользователи 5 Гости и 0 Скрытые пользователи)
Видимые пользователи: 0


 

MKPortal ©2003-2008 mkportal.it