Обсуждение статьи тематического каталога: Создание VPN во FreeBSD на базе IPSEC и racoon (freebsd ipsec vpn racoon security tunnel)Ссылка на текст статьи: http://www.opennet.me/base/net/vpn_ipsec_racoon.txt.html
А какие адреса на реальных (физических) интерфейсах смотрящих во внутреннюю сеть?
Странный вопрос. Что значит "на реальных". Я ж подробно описал ситуацию. На внутреннем интерфейсе Шлюза 1 - 10.1.1.1, на Шлюзе 2 - 10.1.1.2 Имелись ввиду именно адреса на реальных интерфейсах.
Вроде бы как все сделал правильно, но не работает. Не идет пинг между шлюзами. Т.е. если со шлюза 1 дать команду ping 10.1.2.1, то пинг не проходит, пишет arplookup yyy.yyy.yyy.yyy failed: host is not in local subnet.
Где я сделал неправильно?
Заранее спасибо
наверняка где-то дефолтовый шлюз забыл. он же явно пишет, что не может пакет отроутить.
Спасибо за ответ.
Да, действительно забыл шлюз. Забыл поставить в /etc/rc.conf разрешение на создание gif-интерфейса. Сейчас поставил на обоих машинах, в ifconfig и netstat сети вижу, с одной сети в другую пинг идет, а наоборот - нет :(((((
Racoon пока отключил, пробую без него.....
Все, разобрался. Все работает.
Еще раз спасибо за ответ.
Собствено у меня не получается что-то с раконом он пишет после запуска следующее:
2004-06-16 21:29:40: INFO: main.c:172:main(): @(#)package version freebsd-200307
11a
2004-06-16 21:29:40: INFO: main.c:174:main(): @(#)internal version 20001216 saka
ne@kame.net
2004-06-16 21:29:40: INFO: main.c:175:main(): @(#)This product linked OpenSSL 0.
9.7c 30 Sep 2003 (http://www.openssl.org/)
2004-06-16 21:29:40: DEBUG: algorithm.c:614:alg_oakley_dhdef(): hmac(modp1024)
2004-06-16 21:29:40: DEBUG: pfkey.c:2310:pk_checkalg(): compression algorithm ca
n not be checked because sadb message doesn't support it.
2004-06-16 21:29:40: INFO: isakmp.c:1358:isakmp_open(): 213.130.2.247[500] used
as isakmp port (fd=5)
2004-06-16 21:29:40: DEBUG: pfkey.c:195:pfkey_handler(): get pfkey X_SPDDUMP mes
sage
2004-06-16 21:29:40: DEBUG: pfkey.c:195:pfkey_handler(): get pfkey X_SPDDUMP mes
sage
2004-06-16 21:29:40: DEBUG: policy.c:184:cmpspidxstrict(): sub:0xbfbff978: 192.1
68.0.0/24[0] 192.168.1.0/24[0] proto=any dir=out
2004-06-16 21:29:40: DEBUG: policy.c:185:cmpspidxstrict(): db :0x80a1c08: 192.16
8.1.0/24[0] 192.168.0.0/24[0] proto=any dir=in
2004-06-16 21:30:13: DEBUG: grabmyaddr.c:441:update_myaddrs(): msg 1 not interes
ting
2004-06-16 21:30:13: DEBUG: grabmyaddr.c:447:update_myaddrs(): caught rtm:2, nee
d update interface address list
2004-06-16 21:30:13: DEBUG: grabmyaddr.c:441:update_myaddrs(): msg 1 not interes
ting
2004-06-16 21:30:13: DEBUG: grabmyaddr.c:447:update_myaddrs(): caught rtm:2, nee
d update interface address list
2004-06-16 21:30:13: DEBUG: grabmyaddr.c:441:update_myaddrs(): msg 1 not interes
ting
2004-06-16 21:30:13: DEBUG: grabmyaddr.c:447:update_myaddrs(): caught rtm:2, nee
d update interface address list
2004-06-16 21:30:14: DEBUG: grabmyaddr.c:441:update_myaddrs(): msg 1 not interes
ting
2004-06-16 21:30:14: DEBUG: grabmyaddr.c:447:update_myaddrs(): caught rtm:2, nee
d update interface address list
2004-06-16 21:30:14: DEBUG: grabmyaddr.c:441:update_myaddrs(): msg 1 not interes
ting
2004-06-16 21:30:14: DEBUG: grabmyaddr.c:447:update_myaddrs(): caught rtm:2, nee
d update interface address list
2004-06-16 21:30:14: DEBUG: grabmyaddr.c:441:update_myaddrs(): msg 1 not interes
ting
2004-06-16 21:30:14: DEBUG: grabmyaddr.c:447:update_myaddrs(): caught rtm:2, nee
d update interface address list
2004-06-16 21:30:14: DEBUG: grabmyaddr.c:441:update_myaddrs(): msg 1 not interes
ting
2004-06-16 21:30:14: DEBUG: grabmyaddr.c:447:update_myaddrs(): caught rtm:2, nee
d update interface address list
2004-06-16 21:30:14: DEBUG: grabmyaddr.c:441:update_myaddrs(): msg 1 not interes
ting
2004-06-16 21:30:14: DEBUG: grabmyaddr.c:447:update_myaddrs(): caught rtm:2, nee
d update interface address list
2004-06-16 21:30:15: DEBUG: grabmyaddr.c:441:update_myaddrs(): msg 1 not interes
ting
2004-06-16 21:30:15: DEBUG: grabmyaddr.c:441:update_myaddrs(): msg 1 not interes
ting
2004-06-16 21:30:15: DEBUG: grabmyaddr.c:447:update_myaddrs(): caught rtm:2, nee
d update interface address list
2004-06-16 21:30:15: DEBUG: grabmyaddr.c:447:update_myaddrs(): caught rtm:2, nee
d update interface address list
2004-06-16 21:30:15: DEBUG: grabmyaddr.c:441:update_myaddrs(): msg 1 not interes
ting
2004-06-16 21:30:15: DEBUG: grabmyaddr.c:447:update_myaddrs(): caught rtm:2, nee
d update interface address list
2004-06-16 21:30:15: DEBUG: grabmyaddr.c:441:update_myaddrs(): msg 1 not interes
ting
2004-06-16 21:30:15: DEBUG: grabmyaddr.c:447:update_myaddrs(): caught rtm:2, nee
d update interface address list
2004-06-16 21:30:15: DEBUG: grabmyaddr.c:441:update_myaddrs(): msg 1 not interes
ting
2004-06-16 21:30:15: DEBUG: grabmyaddr.c:447:update_myaddrs(): caught rtm:2, nee
d update interface address list
2004-06-16 21:30:16: DEBUG: grabmyaddr.c:441:update_myaddrs(): msg 1 not interes
ting
2004-06-16 21:30:16: DEBUG: grabmyaddr.c:447:update_myaddrs(): caught rtm:2, nee
d update interface address list
2004-06-16 21:30:16: DEBUG: grabmyaddr.c:441:update_myaddrs(): msg 1 not interes
ting
2004-06-16 21:30:16: DEBUG: grabmyaddr.c:447:update_myaddrs(): caught rtm:2, nee
d update interface address list
2004-06-16 21:30:16: DEBUG: grabmyaddr.c:441:update_myaddrs(): msg 1 not interes
ting
2004-06-16 21:30:16: DEBUG: grabmyaddr.c:447:update_myaddrs(): caught rtm:2, nee
d update interface address list
Подскажите плиз как настроить Racoon при такой ситуации
WIN-192.168.0.0/24<-->192.168.0.1-BSD-81.151.8.92-->212.119.170.30 т.е машина с маской 255.255.255.0 должна попадать в тунель
двух внешних сетевых карт.
Если можно по подробней.
Спасибо.
Здравствуйте,Можно использовать статью за базу для модификации, есть несколько дополнений и пару картинок. Буду ссылаться на оригиналю. Спасибо
Можно. Да и все что здесь написано просто компиляция прочитанного мной.
у меня все тормознулось на этапе запуска 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
- тоже
выхода пока не нашел
> 2 ERROR: cftoken.l:494:yyerror): /usr/local/etc/racoon/racoon.conf:102: ";" algorithm 3DES not supportedЯдро пересобери с опцией
options IPSEC_ESP
Ув. автор. А не наблюдается ли проблемм если понадобится делать NAT на gateways? Допустим, что помимо связи сетей 2-х удаленных офисов надо еще чтобы каждый оффис (разумеется в каждом офисе приватная сеть) имел бы доступ в интернет посредством NAT.
>Ув. автор. А не наблюдается ли проблемм если понадобится делать NAT на
>gateways? Допустим, что помимо связи сетей 2-х удаленных офисов надо еще
>чтобы каждый оффис (разумеется в каждом офисе приватная сеть) имел бы
>доступ в интернет посредством NAT.Не наблюдается. Счас семь VPN-ов и наты на два интерфейса глядящих в инет - все работает. Да и почему бы не работать. Нат настраивается на физические интерфейсы, а VPN юзает gif-ы.
Неплохо бы еще в rc.conf добавлять строку:
gif_interfaces="gif0"Иначе интерфейс gif0 не появляется.
Да. Очень дельное замечание. И как я позабыл :(
мдааа у меня не заработалло хотя сделал все как сказанно только у меня не ipf а ipfw не подскажите рулы для него ????
Еще в виде рекомендации
1)использовать на gifX маски /32. Это интерфейсы типа point-to-point и более широкие маски тут не к чему. Или вобще обходиться без адресов на этих интерфейсах.
2) Поставить mtu по меньше.. где нить 1460. есть сообщения что path mtu в FreeBSD 4.x не учитывает ipsec заголовки.
Статья, если честно, грубо ошибочная в месте описания создания туннеля. Это можно извинить совершенно неясным и туманным описанием в handbook, и безнадёжно бардачными KAME'шными описалками, но тем не менее. Хотя на качество работы настроенной сети это _почти_ не влияет... см. ниже.А суть ситуации следующая: gif в данном случае противоречит туннельному ipsec'у и просто не используется. Он имел бы смысл, если бы строился транспортный IPSEC между шлюзами (как я и посоветовал бы в данном случае - см.ниже), но в случае туннельного IPSEC до него дело просто не доходит:
правила IPSEC SPD - в частности, правило "криптовать всё с 10.0.1.0/24 на 10.0.2.0/24" срабатывает до раутинга (это принципиально в IPSEC), и тут туннельный ipsec реализует по сути свой gif: строит такой же пакет, как в случае ipip туннелирования gif'ом, и криптует по ESP содержимое этого пакета. На стороне получателя происходит обратное: обнаружив ESP и адекватную его содержимому SP, расшифровывает, снимает ipip-оболочку и отправляет пакет в стек.(продолжить попробую в следующем письме, а то такие большие тексты не хочет постить)
К чему же тут явный gif? А к попыткам автора (не данной статьи, а скорее той мягкой бумажки, что в старом handbook'е) восстановить конфигурацию, которая у него хоть как-то работала. При отсутствии работающего SP (KMPD в лице racoon не установил SA) и при вариантах правил в SP use вместо require это даст то, что туннелирование не будет сделано, и пакет отправится далее - по раутингу - попадёт в gif и пойдёт абсолютно идентичным путём, но без криптования содержимого. На приёмной стороне, при отсутствии признака ESP, правила SP вообще не будут применяться, с пакета будет снята туннельная оболочка средствами gif и он пойдёт в сеть. Всё будет работать, но без шифрования ;)
Если же оставить текущие require, и поставить на обе стороны такие настройки как сейчас... всё снова будет работать. Но в обход gif ;))
Чем плох такой вариант? Тем, что с туннелями есть проблемы с MTU. Например, мне жаловались, что при MTU 1500 на внешнем линке, IPSEC отправляет обратно ICMP NEEDFRAG с указанием допустимого MTU опять же 1500:( Явный gif честнее в этом плане.(опять продолжение следует)
Поэтому, рекомендуемый вариант будет следующий: поставить gif точно так же как в статье, обмен ключами - точно так же, но правила в SPD заменить на следующие (для первого шлюза; для второго - аналогично):
spdadd 10.1.1.1 10.1.2.1 any -P out ipsec esp/transport//require;
spdadd 10.1.2.1 10.1.1.1 any -P in ipsec esp/transport//require;
С точки зрения формата и содержимого пакетов вообще ничего не поменяется (так что менять можно даже на одной из сторон;)), но будет меньше проблем с MTU. Проблема с MTU будет решаться в драйвере gif (который на порядок более прозрачен и в котором это решено), остаётся только выставить там разумное MTU (например, 1440). Другое преимущество этого варианта - возможность поддержки динамического раутинга дополнительных сетей (средствами zebra/quagga/gated/routed/аналогов): IPSEC SPD не содержит маршруты сетей они пишутся вместо этого в таблицу раутинга, где с ними значительно легче разбираться. В варианте же с туннельным IPSEC требуется продираться через глупости конструкции SPD (принципиально требуемый по RFC последовательный порядок правил и отсутствие возможности вставлять правила в начало/середину).
И вариант с транспортным IPSEC и gif внутри - я проверял и он работает, лучше, чем с туннелем :)
ты чего ?
думаешь о чем ? о настройке ИПСЕКА или защите сети ?так жеж нельзя
ты предлагаешь защищать транспортом траффик между маршрутизаторными внутренними интерфейсами ? если я правильно понял ...так нельзя делать
в инете будет видно, твою внутреннюю сеть, потому что в гиф0 будет инкапсулирован внутренний пакет , а потом его тело зашифровано, но заголовок его будет виден !!!если использовать транспортный режим, то правильнее всего шифровать протокол инкапсуляции между внешними интерфейсами (х.х.х.х у.у.у.у)
(если зашифруешь весь, то ракун не сможет инициировать обмен ключами, если скажешь не шифровать трафик ракунов, то ракуну будет тяжело понять какую из записей СПД брать и т.д.)
>так жеж нельзя
>ты предлагаешь защищать транспортом траффик между маршрутизаторными внутренними интерфейсами ? если я
>правильно понял ...
Нет, внешними, конечно. Внутренними - или работать вообще не будет, или как гланды автогеном вырезать :)>если использовать транспортный режим, то правильнее всего шифровать протокол инкапсуляции между внешними
>интерфейсами (х.х.х.х у.у.у.у)
Кто бы спорил - я не буду :)>(если зашифруешь весь, то ракун не сможет инициировать обмен ключами, если скажешь
>не шифровать трафик ракунов, то ракуну будет тяжело понять какую из
>записей СПД брать и т.д.)Ну, у меня ISAKMP демоны и так договаривались (за счёт use вместо
require). Хотя исключить из шифрования порты 22, 443, 500 и прочих отдельными SP перед основным - действительно полезная настройка.
Вроде все. Осталось только заметить, что racoon теряет память и при длительной работе его не мешало бы подпереть перезапускалкой и ulimit'ами.;)) Но на пару статических линков и средний аптайм железки в несколько месяцев это не страшно.
Sorry за некоторый сумбур изложения. И просьба к вебмастерам - сделать постинг как-то более разумно, чем передавать весь текст комментария в URL'е. ;(
а как быть с racoon2? синтаксис тот же?
а как быть, если FreeBSD находится за NAT ? что-то у меня не поехало никак это дело...
Кто-нибудь делал такую конфу, но из трех сетей, вместо двух, как здесь?Отличий много?
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 нужно поменять?
ну вопервых заменить фразу support_mip6 на support_proxy
ну и конечно exchange_mode main; или exchange_mode aggressive; в секцию remote XXX