The OpenNET Project / Index page

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

Создание VPN во FreeBSD на базе IPSEC и racoon (freebsd ipsec vpn racoon security tunnel)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: freebsd, ipsec, vpn, racoon, security, tunnel,  (найти похожие документы)
From: Andrew Machulan <machulan@mail.ru> Newsgroups: email Date: Mon, 4 Jul 2003 14:31:37 +0000 (UTC) Subject: Создание VPN во FreeBSD на базе IPSEC и racoon Создание VPN во FreeBSD на базе IPSEC и racoon. Исходим из предположения, что вам понадобилось объединить два офиса, шлюзами для которых в интернет являются машины с установленными на них FreeBSD. Я проделывал все это на FreeBSD 4.8. Исходим из таких адресов на шлюзах: Шлюз 1. Внешний IP (смотрящий в инет) - xxx.xxx.xxx.xxx Внутренний IP (смотрящий в сеть) - 10.1.1.1 Внутренняя сеть - 10.1.1.0/24 Шлюз 2. Внешний IP (смотрящий в инет) - yyy.yyy.yyy.yyy Внутренний IP (смотрящий в сеть) - 10.1.2.1 Внутренняя сеть - 10.1.2.0/24 Приступим. Для начала добавим в ядро поддержку IPSEC: options IPSEC options IPSEC_ESP options IPSEC_DEBUG для старых версий FreeBSD надо еще добавить количество gif интерфейсов, к примеру вот так: pseudo-device gif 4 В моем случае это не нужно, ибо 4.8 версия совсем не старая ;) Пересобираем ядро. Теперь добавим в rc.conf параметры отвечающие за поднятие тоннеля и запуск IPSEC: Шлюз 1. gifconfig_gif0="xxx.xxx.xxx.xxx yyy.yyy.yyy.yyy" ifconfig_gif0="inet 10.1.1.1 10.1.2.1 netmask 255.255.255.0" static_routes="vpn" route_vpn="10.1.2.0/24 10.1.2.1" export route_vpn ipsec_enable="YES" ipsec_file="/etc/ipsec.conf" Шлюз 2. gifconfig_gif0="yyy.yyy.yyy.yyy xxx.xxx.xxx.xxx" ifconfig_gif0="inet 10.1.2.1 10.1.1.1 netmask 255.255.255.0" static_routes="vpn" route_vpn="10.1.1.0/24 10.1.1.1" export route_vpn ipsec_enable="YES" ipsec_file="/etc/ipsec.conf" Одного поднятия тоннеля мало, нам надо настроить еще и IPSEC. Создаем файл /etc/ipsec.conf, в который пишем следующее: Шлюз 1. flush; spdflush; spdadd 10.1.1.0/24 10.1.2.0/24 any -P out ipsec esp/tunnel/xxx.xxx.xxx.xxx-yyy.yyy.yyy.yyy/require; spdadd 10.1.2.0/24 10.1.1.0/24 any -P in ipsec esp/tunnel/yyy.yyy.yyy.yyy-xxx.xxx.xxx.xxx/require; Шлюз 2. flush; spdflush; spdadd 10.1.2.0/24 10.1.1.0/24 any -P out ipsec esp/tunnel/yyy.yyy.yyy.yyy-xxx.xxx.xxx.xxx/require; spdadd 10.1.1.0/24 10.1.2.0/24 any -P in ipsec esp/tunnel/xxx.xxx.xxx.xxx-yyy.yyy.yyy.yyy/require; Осталось только поставить и настроить racoon, который будет заниматься обменом ключей. На обоих шлюзах: cd /usr/ports/security/racoon; make install clean Правим файл конфигурации /usr/local/etc/racoon/racoon.conf # $KAME: racoon.conf.in,v 1.18 2001/08/16 06:33:40 itojun Exp $ # "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 debug; # "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; 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 24 hour; # sec,min,hour initial_contact on; support_mip6 on; 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 1; lifetime time 24 hour; encryption_algorithm 3des ; authentication_algorithm hmac_sha1; compression_algorithm deflate ; } Правим файл usr/local/etc/racoon/psk.txt: #Шлюз 1. yyy.yyy.yyy.yyy password:) #Шлюз 2. xxx.xxx.xxx.xxx password:) Если у вас на шлюзах есть фаервол (а ведь он у вас есть, правда?) тогда нам нужно разрешить трафик по нашему тоннелю, в ipf это делается так pass in log quick proto esp from any to any pass in log quick proto udp from any port = 500 to any port = 500 Желательно поставить это повыше в рулах. Вот и все. Остается собственно только перегрузить шлюзы. Попробуем теперь как это работает. К примеру для Шлюза 1. В одной консоли пишем ping 10.1.2.1, во второй tcpdump -i <внешний интерфейс> ip host yyy.yyy.yyy.yyy Наблюдать мы должный что-то типа: 19:16:13.207380 yyy.yyy.yyy.yyy > xxx.xxx.xxx.xxx: ESP(spi=0x04406f1c,seq=0x11b2) 19:16:14.024904 xxx.xxx.xxx.xxx > yyy.yyy.yyy.yyy: ESP(spi=0x0e57fdd4,seq=0x1581) Если наблюдаем, значит все у нас шифруется, а то что пинги идут доказывает то, что racoon сделал свое темное дело и обменялся ключами :) Возможно вам не захочется чтобы все машины из ваших подсеток видели друг друга, у меня это решено с помощью ipf следующим образом: pass in quick on xl1 from 10.1.1.51/32 to 10.1.2.0/24 pass in quick on xl1 from 10.1.1.58/32 to 10.1.2.0/24 block in quick on xl1 from 10.1.1.0/24 to 10.1.2.0/24 Здесь xl1 мой внутренний интерфейс. Мы пускаем в тоннель только машины 10.1.1.51 и 10.1.1.58 - остальные могут расслабиться :)

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

Обсуждение [ Линейный режим | Показать все | RSS ]
 
  • 1.1, fdm, 12:05, 06/10/2003 [ответить] [смотреть все]
  • +/
    А какие адреса на реальных (физических) интерфейсах смотрящих во внутреннюю сеть?
     
     
  • 2.2, Rabid, 15:17, 06/10/2003 [^] [ответить] [смотреть все] [показать ветку]
  • +/
    Странный вопрос Что значит на реальных Я ж подробно описал ситуацию На внут... весь текст скрыт [показать] [показать ветку]
     
  • 1.3, Crow, 20:33, 27/10/2003 [ответить] [смотреть все]  
  • +/
    Вроде бы как все сделал правильно, но не работает. Не идет пинг между шлюзами. Т.е. если со шлюза 1 дать команду ping 10.1.2.1, то пинг не проходит, пишет arplookup yyy.yyy.yyy.yyy failed: host is not in local subnet.
    Где я сделал неправильно?
    Заранее спасибо
     
  • 1.4, VVS, 14:57, 28/10/2003 [ответить] [смотреть все]  
  • +/
    наверняка где-то дефолтовый шлюз забыл. он же явно пишет, что не может пакет отроутить.
     
     
  • 2.5, Crow, 19:10, 28/10/2003 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Спасибо за ответ Да, действительно забыл шлюз Забыл поставить в etc rc conf ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.6, Crow, 17:29, 29/10/2003 [^] [ответить] [смотреть все]  
  • +/
    Все, разобрался. Все работает.
    Еще раз спасибо за ответ.
     
  • 3.16, Andrew, 01:36, 17/06/2004 [^] [ответить] [смотреть все]  
  • +/
    Собствено у меня не получается что-то с раконом он пишет после запуска следующее... весь текст скрыт [показать]
     
  • 1.7, tall, 14:56, 17/11/2003 [ответить] [смотреть все]  
  • +/
    Подскажите плиз как настроить Racoon при такой ситуации
    WIN-192.168.0.0/24<-->192.168.0.1-BSD-81.151.8.92-->212.119.170.30 т.е машина с маской 255.255.255.0 должна попадать в тунель
    двух внешних сетевых карт.  
    Если можно по подробней.
    Спасибо.
     
  • 1.8, ArmanT, 09:04, 07/01/2004 [ответить] [смотреть все]  
  • +/
    Здравствуйте,

    Можно использовать статью за базу для модификации, есть несколько дополнений и пару картинок. Буду ссылаться на оригиналю. Спасибо

     
     
  • 2.13, Andrew, 18:18, 04/06/2004 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Можно. Да и все что здесь написано просто компиляция прочитанного мной.
     
  • 1.9, jeka, 10:59, 05/02/2004 [ответить] [смотреть все]  
  • +/
    у меня все тормознулось на этапе запуска racoon
    : could not parse configuration file
    попробовал racoon -F
    вот что получил:
    1. ERROR: pfkey.c:2394:pk_checkalg(): Must get supported algorithms list first.
    2  ERROR: cftoken.l:494:yyerror(): /usr/local/etc/racoon/racoon.conf:102: ";" algorithm 3DES not supported

    Попробовал перекомпилить openssl
    - тоже
    выхода пока не нашел

     
  • 1.10, anonymous, 23:56, 06/02/2004 [ответить] [смотреть все]  
  • +/
    > 2  ERROR: cftoken.l:494:yyerror): /usr/local/etc/racoon/racoon.conf:102: ";" algorithm 3DES not supported

    Ядро пересобери с опцией
    options  IPSEC_ESP

     
  • 1.11, driffire, 17:50, 22/03/2004 [ответить] [смотреть все]  
  • +/
    Ув. автор. А не наблюдается ли проблемм если понадобится делать NAT на gateways? Допустим, что помимо связи сетей 2-х удаленных офисов надо еще чтобы каждый оффис (разумеется в каждом офисе приватная сеть) имел бы доступ в интернет посредством NAT.
     
     
  • 2.15, Andrew, 18:26, 04/06/2004 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Не наблюдается Счас семь VPN-ов и наты на два интерфейса глядящих в инет - все ... весь текст скрыт [показать] [показать ветку]
     
  • 1.12, B00StER, 11:55, 14/05/2004 [ответить] [смотреть все]  
  • +/
    Неплохо бы еще в rc.conf добавлять строку:
        gif_interfaces="gif0"

    Иначе интерфейс gif0 не появляется.

     
     
  • 2.14, Andrew, 18:21, 04/06/2004 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Да. Очень дельное замечание. И как я позабыл :(
     
  • 1.17, Mikhael, 14:19, 24/06/2004 [ответить] [смотреть все]  
  • +/
    мдааа у меня не заработалло хотя сделал все как сказанно только  у меня не ipf  а ipfw не подскажите рулы для него ????
     
  • 1.18, Алексей, 09:46, 20/07/2004 [ответить] [смотреть все]  
  • +/
    Еще в виде рекомендации
    1)использовать на gifX маски /32. Это интерфейсы типа point-to-point и более широкие маски тут не к чему. Или вобще обходиться без адресов на этих интерфейсах.
    2) Поставить mtu по меньше.. где нить 1460. есть сообщения что path mtu в FreeBSD 4.x не учитывает ipsec заголовки.
     
  • 1.20, Valentin Nechayev, 11:00, 20/07/2004 [ответить] [смотреть все]  
  • +/
    Статья, если честно, грубо ошибочная в месте описания создания туннеля Это можн... весь текст скрыт [показать]
     
     
  • 2.21, Valentin Nechayev, 11:02, 20/07/2004 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    К чему же тут явный gif А к попыткам автора не данной статьи, а скорее той мяг... весь текст скрыт [показать] [показать ветку]
     
  • 2.22, Valentin Nechayev, 11:03, 20/07/2004 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Поэтому, рекомендуемый вариант будет следующий поставить gif точно так же как в... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.24, jonik, 08:33, 15/08/2004 [^] [ответить] [смотреть все]  
  • +/
    ты чего ?
    думаешь о чем ? о настройке ИПСЕКА или защите сети ?

    так жеж нельзя
    ты предлагаешь защищать транспортом траффик между маршрутизаторными внутренними интерфейсами ? если я правильно понял ...

    так нельзя делать
    в инете будет видно, твою внутреннюю сеть, потому что в гиф0 будет инкапсулирован внутренний пакет , а потом его тело зашифровано, но заголовок его будет виден !!!

    если использовать транспортный режим, то правильнее всего шифровать протокол инкапсуляции между внешними интерфейсами (х.х.х.х у.у.у.у)

    (если зашифруешь весь, то ракун не сможет инициировать обмен ключами, если скажешь не шифровать трафик ракунов, то ракуну будет тяжело понять какую из записей СПД брать и т.д.)

     
     
  • 4.25, Valentin Nechayev, 17:08, 15/08/2004 [^] [ответить] [смотреть все]  
  • +/
    >так жеж нельзя
    >ты предлагаешь защищать транспортом траффик между маршрутизаторными внутренними интерфейсами ? если я
    >правильно понял ...
    Нет, внешними, конечно. Внутренними - или работать вообще не будет, или как гланды автогеном вырезать :)

    >если использовать транспортный режим, то правильнее всего шифровать протокол инкапсуляции между внешними
    >интерфейсами (х.х.х.х у.у.у.у)
    Кто бы спорил - я не буду :)

    >(если зашифруешь весь, то ракун не сможет инициировать обмен ключами, если скажешь
    >не шифровать трафик ракунов, то ракуну будет тяжело понять какую из
    >записей СПД брать и т.д.)

    Ну, у меня ISAKMP демоны и так договаривались (за счёт use вместо
    require). Хотя исключить из шифрования порты 22, 443, 500 и прочих отдельными SP перед основным - действительно полезная настройка.

     
  • 2.23, Valentin Nechayev, 11:06, 20/07/2004 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Вроде все. Осталось только заметить, что racoon теряет память и при длительной работе его не мешало бы подпереть перезапускалкой и ulimit'ами.;)) Но на пару статических линков и средний аптайм железки в несколько месяцев это не страшно.    
                                                                                    
    Sorry за некоторый сумбур изложения. И просьба к вебмастерам - сделать постинг как-то более разумно, чем передавать весь текст комментария в URL'е. ;(
     
  • 1.26, Bani, 15:00, 25/09/2006 [ответить] [смотреть все]  
  • +/
    а как быть с racoon2? синтаксис тот же?
     
     
  • 2.27, junk, 19:56, 23/06/2007 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    а как быть, если FreeBSD находится за NAT ? что-то у меня не поехало никак это дело...
     
  • 1.28, veranyon, 19:58, 10/08/2007 [ответить] [смотреть все]  
  • +/
    Кто-нибудь делал такую конфу, но из трех сетей, вместо двух, как здесь?

    Отличий много?

     
     
  • 2.29, veranyon, 22:45, 11/08/2007 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    racoon -F
    Foreground mode.
    2007-08-11 22:32:07: INFO: @(#)ipsec-tools 0.6.7 (http://ipsec-tools.sourceforge
    .net)
    2007-08-11 22:32:07: INFO: @(#)This product linked OpenSSL 0.9.7e-p1 25 Oct 2004
    (http://www.openssl.org/)
    2007-08-11 22:32:07: WARNING: /usr/local/etc/racoon/racoon.conf:65: "support_mip
    6" it is obsoleted.  use "support_proxy".
    2007-08-11 22:32:07: ERROR: /usr/local/etc/racoon/racoon.conf:74: "}" no exchang
    e mode specified.

    2007-08-11 22:32:07: ERROR: fatal parse failure (1 errors)
    racoon: failed to parse configuration file.

    видимо, много чего нового появилось и удалилось. Люди. Что racoon.conf нужно поменять?

     
     
  • 3.30, akocherov, 04:44, 28/08/2007 [^] [ответить] [смотреть все]  
  • +/
    ну вопервых заменить фразу support_mip6 на support_proxy
    ну и конечно     exchange_mode main;  или     exchange_mode aggressive; в секцию remote XXX
     

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





      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor