Ключевые слова:cisco, ipsec, freebsd, tunnel, (найти похожие документы)
From: Touch <touchkin@gmail.com.>
Newsgroups: email
Date: Mon, 09 Feb 2009 17:02:14 +0000 (UTC)
Subject: IP-in-IP тунель с IPSEC между CISCO и FreeBSD
Захотелось вставить свои 5коп. в тему поднятия шифрованых IPSEC'ом
тунелей между CISCO роутерами и FreeBSD, потому как тема описывалась уже
не один раз, но в большинстве статей встречались неточности которые
иногда просто противоречили здравому смыслу.
Итак имеем:
1. Маршрутизатор Cisco 2801 с прошивкой c2801-advipservicesk9-mz.124-23.bin
и реальным IP 1.1.1.1
2. Маршрутизатор FreeBSD 7.1 с установленым ipsec-tools-0.7.1 и реальным IP 2.2.2.2
1. Конфигурация на роутере Cisco:
Конфигурация тунеля описана в конфиге, единственное о чём упомяну, что режим работы
тунеля настраиваем IP-in-IP, что во FreeBSD реализовано через gif-тунели.
Определившись с тем какие алгоритмы шифрования трафика и хэширования секретного
ключа будут использоваться, описываем политику (isakmp policy), секретный ключ (isakmp key)
и трансформ (ipsec transform-set), затем создаём список доступа (access-list), в котором
указываем какой трафик нам необходимо шифровать и карту шифрования (map) которая
будет всё это использовать. Ну и на закуску привязываем карту к интерфейсу.
crypto isakmp policy 1
encr aes
authentication pre-share
group 2
lifetime 3600
crypto isakmp key SECRETKEY address 2.2.2.2
!
!
crypto ipsec transform-set AES-SHA1 esp-aes esp-sha-hmac
!
!
crypto map CENTRAL 1 ipsec-isakmp
set peer 2.2.2.2
set transform-set AES-SHA1
set pfs group2
match address 101
!
access-list 101 permit ipinip host 1.1.1.1 host 2.2.2.2
!
interface Tunnel0
ip address 10.10.10.253 255.255.255.252
ip mtu 1280
tunnel source 1.1.1.1
tunnel destination 2.2.2.2
tunnel mode ipip
!
interface FastEthernet0/0
ip address 1.1.1.1 255.255.255.252
duplex auto
speed auto
crypto map CENTRAL
!
2. Конфигурация на ротере с FreeBSD:
Описывать конфигурацию ядра для gif-тунелей и IPSEC'а не буду, так как тема
уже избитая (для тех кто не в теме - загляните в HandBook в конце концов!)
rc.conf:
ifconfig_age0="inet 2.2.2.2 netmask 255.255.255.252"
gif_interfaces="gif0"
gifconfig_gif0="2.2.2.2 1.1.1.1"
ifconfig_gif0="inet 10.10.10.254 10.10.10.253 netmask 255.255.255.252 mtu 1280"
ipsec_enable="YES"
ipsec_file="/usr/local/etc/racoon/ipsec.conf"
racoon_enable="YES"
racoon_flags="-l /var/log/racoon.log"
racoon.conf:
path pre_shared_key "/usr/local/etc/racoon/psk.txt";
log info;
padding
{
maximum_length 20;
randomize off;
strict_check off;
exclusive_tail off;
}
timer
{
counter 5;
interval 20 sec;
persend 1;
phase1 30 sec;
phase2 15 sec;
}
listen
{
isakmp 2.2.2.2 [500];
}
remote 1.1.1.1 [500]
{
exchange_mode main;
doi ipsec_doi;
situation identity_only;
lifetime time 1 hour;
nonce_size 16;
initial_contact on;
support_proxy on;
proposal_check obey;
proposal {
encryption_algorithm aes;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group 2;
}
}
sainfo anonymous
{
pfs_group 2;
lifetime time 1 hour;
encryption_algorithm aes;
authentication_algorithm hmac_sha1;
compression_algorithm deflate;
}
psk.txt:
1.1.1.1 SECRETKEY
ipsec.conf:
flush;
spdflush;
spdadd 2.2.2.2/32 1.1.1.1/32 ipencap -P out ipsec
esp/tunnel/2.2.2.2-1.1.1.1/require;
spdadd 1.1.1.1/32 2.2.2.2/32 ipencap -P in ipsec
esp/tunnel/1.1.1.1-2.2.2.2/require;
Заметим что шифруется только инкапсулированый IP-in-IP трафик, то есть если
вдруг возникнут сбои с согласованием шифрования, а возможность того что с
первого раза может и не получится всё-таки есть, достучаться до роутера по SSH
на реальный IP у вас получится ;)
Ссылки:
http://www.cisco.com/en/US/docs/ios/12_3t/12_3t14/feature/guide/gtIPSctm.htmlhttp://www.freebsd.org/doc/en/books/handbook/ipsec.html
Хотелось бы поблагодарить mik с unix.org.ua за ответы на форуме, ещё раз
огромное спасибо :)
Вместо gif инетрфейса под FreeBSD лучше использовать gre, и соответственно со стороны Cisco тип инкапсуляции в туннеле указать gre. Основное приимущество - меньшее итоговое mtu, возможность беспроблемного запуска динамических протоколов маршрутизации