The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Настройка IPSec между FreeBSD и Cisco (bsd ipsec crypt tunnel vpn cisco)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: bsd, ipsec, crypt, tunnel, vpn, cisco,  (найти похожие документы)
Date: Thu, 2 Jul 2002 12:54:01 +0000 (UTC) From: Shevtsov P. <paul@dongorbank.com> Subject: Настройка IPSec между FreeBSD и Cisco -------------------------------------------------------------- Настройка IPSec между FreeBSD и cisco -------------------------------------------------------------- Организация IPSec tunnel's между FreeBSD - FreeBSD и FreeBSD - Cisco. Используем на FreeBSD gif интерфейс, на cisco tunnel ipip. Для это на FreeBSD делаем нижеследующие действия 1. Добавляем (если нет) поддержку gif я ядро. Примечание: на версиях до 4.4R надо было указывать количество устройств, которое необходимо. pseudo-device dif [количество] С версии 4.4R в этом нет необходимости. pseudo-device gif 2. В rc.conf добавляем строку gif_interfeces="gif0 gif1 gif[и так далее]" (Сколько нам надо). 3. В rc.conf добавляем на каждый нужный нам gif следующую строку gifconfig_gif[номер]="[realip.address.source.tunnel] [realip.address.destination.tunnel]" Примечание: важно чтобы эти оба адреса были видны в сети, именно на них мы будем "приземлять" сам туннель. Т.е. они должны друг друга пинговать (другими словами). 4. В rc.conf теперь добавляем уже сам tunnel ifconfig_gif[номер]="inet [ip.address.source.tunnel] \ [ip.address.destination.tunnel] netmask 255.255.255.252" Внимание! Обратим внимание, что здесь поднимается по сути дела просто point-to-point. Т.е. сеть размера /30 в CIDR нотации. Почему так. Ведь даже на daemonnews приводят примеры, где маска берется 255.255.255.0 (по CIDR /24), правда, там же сетуют, что таким образом можно объединять только сети одинакового размера. Еще один нюанс при этом в их примерах ip source и destination в туннеле берутся прямо из сети, которая сидит на втором ethetrnet-е. А зачем? А если у нас нет второго интерфейса вообще на одном конце? Мы ведь все равно делаем свою приватную сеть (как правило), так выделим тогда хоть, сколько адресов специально для создания point-to-point туннелей, а в них будем раутить чего хотим. На мой взгляд, так логичнее. 5. Собственно теперь в этот туннель с любого из концов его можно заворачивать трафик. С помощью gated в static это выглядит приблизительно так: [ip.address.network.s] masklen [size] gw [ip.address.destination.tunnel] retain; На стороне cisco все еще проще Interface tunnel[число] description [бла бла бла] ip address [ip.address.source.tunnel] 255.255.255.252 tunnel source [realip.address.source.tunnel] tunnel destination [realip.address.destination.tunnel] tunnel mode ipip Ну и трафик в него заворачивать [ip.address.network.s] [netmask] tunnel[номер] Или в ip адрес [ip.address.network.s] [netmask] [ip.address.destination.tunnel] Теперь поднимаем IPSec между cisco и FreeBSD. На cisco нужен IOS который поддерживает IPSec. На FreeBSD в опции ядра добавить options IPSEC options IPSEC_ESP options IPSEC_DEBUG Для обмена ключами на FreeBSD ставим racoon. Конфигурация ipsec на cisco: crypto isakmp policy 1 (или другой номер) hash md5 authentication pre-share lifetime 3600 crypto isakmp key [секретная фраза] address [realip.address.destination.tunnel] crypto ipsec transform-set [имя transform-а] esp-des esp-md5-mac mode transport crypto map [имя map] 1 (или другой номер) ipsec-isakmp set peer [realip.address.destination.tunnel] set transform-set [имя transform-а] set pfs group1 match address [номер access-list-а] access-list [номер access-list-а] permit ip host [realip.address.source.tunnel] \ host [realip.address.destination.tunnel] И на нужные нам интерфейсы говорим crypto map [имя map] (Это должен быть сам туннель и физический интерфейс, через который этот туннель работает). После этого начинаем настраивать FreeBSD. Сначала делаем записи в rc.conf ipsec_enable="YES" И создаем файл в каталоге /etc с именем ipsec.conf Пишем туда нечто вроде flush; spdflush; spdadd [realip.address.source.tunnel] [realip.address.destination.tunnel] any -P \ out ipsec esp/transport/[realip.address.source.tunnel]-[realip.address.destination.tunnel]/require; spdadd [realip.address.destination.tunnel] [ralip.address.source.tunnel] any -P \ in ipsec esp/transport/[realip.address.destination.tunnel]-[realip.address.source.tunnel]/require; Затем ставим из /usr/ports/secure - racoon. И настраиваем его. Прописываем в /usr/local/etc/racoon/psk.txt [ip.addrees.peer] [секретная фраза] А файл конфигурации racoon.conf делаем приблизительно такого вида: ------------------------------------------------------------------ # "path" must be placed before it should be used. # You can overwrite which you defined, but it should not use due to confusing. path include "/usr/local/etc/racoon" ; #include "remote.conf" ; # search this file for pre_shared_key with various ID key. path pre_shared_key "/usr/local/etc/racoon/psk.txt" ; # racoon will look for certificate file in the directory, # if the certificate/certificate request payload is received. #path certificate "/usr/local/etc/cert" ; # "log" specifies logging level. It is followed by either "notify", "debug" # or "debug2". log notify; # "padding" defines some parameter of padding. 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 to all # available interface addresses. listen { #isakmp ::1 [7000]; #isakmp 202.249.11.124 [500]; #admin [7002]; # administrative's port by kmpstat. #strict_address; # required all addresses must be bound. } # Specification of default various timer. 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,aggressive; #exchange_mode aggressive,main; doi ipsec_doi; situation identity_only; #my_identifier address; my_identifier user_fqdn "sakane@kame.net"; peers_identifier user_fqdn "sakane@kame.net"; #certificate_type x509 "mycert" "mypriv"; nonce_size 16; lifetime time 1 min; # sec,min,hour initial_contact on; support_mip6 on; proposal_check obey; # obey, strict or claim proposal { lifetime time 3600 sec; # sec,min,hour encryption_algorithm des; hash_algorithm md5; authentication_method pre_shared_key ; dh_group 1 ; } } sainfo anonymous { pfs_group 1; lifetime time 3600 sec; encryption_algorithm des ; # authentication_algorithm hmac_md5; authentication_algorithm non_auth; compression_algorithm deflate ; } ------------------------------------------------------------------- Теперь перегружаем машину (предварительно убедившись, что racoon.sh живет в /usr/local/etc/rc.d). И делаем trace или ping с адреса сети, который должен шифроваться на аналогичный адрес другой сети. Все должно состояться. Если не работает смотреть racoon.conf и debug crypto isakmp debug crypto ipsec. До того как оно заработает. IPSec между FreeBSD - FreeBSD поднимается аналогично. P.S. Отдельная благодарность yk@donbass.net за потраченое время. :)

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
  • 1, toor99 (ok), 10:42, 24/07/2005 [ответить]  
  • +/
    Человек не до конца понимает, что делает.
    Хотя такая записка, конечно, лучше чем ничего.
     
  • 2, Никита (??), 13:19, 29/03/2011 [ответить]  
  • +/
    -----------------------------------------------------
    1. Добавляем (если нет) поддержку gif я ядро. Примечание: на версиях до 4.4R надо было
      указывать количество устройств, которое необходимо.

        pseudo-device dif [количество]

    С версии 4.4R в этом нет необходимости.

        pseudo-device gif
    -------------------------------------------
    То что у тебя dif и gif это опечатки или так и надо?

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2019 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру