После перехода на FreeBSD v7.0 Release перестал работать IPSec.
Две машины i386 (FreeBSD v6.2 и FreeBSD v5.4) обеспечивали шлюзы IPSec ESP в туннельном режиме для связи других двух машин. Без всякой детской плесени с gif из Handbook.Попробовал заменить одну из них на FreeBSD v7.0 Realease
Ядро собирал с
---------------------
options IPSEC
options IPSEC_FILTERTUNNEL
device crypto/etc/ipsec.conf:
---------------------
flush;add a.a.a.a b.b.b.b esp 257 -m tunnel -f zero-pad
-E rijndael-cbc "****************" ;
add b.b.b.b a.a.a.a esp 256 -m tunnel -f zero-pad
-E rijndael-cbc "****************" ;
spdflush;spdadd x.x.x.x/32[any] y.y.y.y/32[any] any -P in ipsec
esp/tunnel/a.a.a.a-b.b.b.b/require ;
spdadd y.y.y.y/32[any] x.x.x.x/32[any] any -P out ipsec
esp/tunnel/b.b.b.b-a.a.a.a/require ;
ipsec.conf рабочий со старой машины.
Команды "setkey -D" и "setkey -DP" показывают, что и политики и SA загружены,
команда "setkey -D" ещё показывает увеличивающийся счётчик пропущенных через SA пакетов,
команда "tcpdump -sp ipsec" показывает исходящие и приходящие IPSec ESP как и должно быть,
а команда "netstat -sp ipsec" всегда показывает нули в статистике за исключением увеличивающегося "mbufs inserted during makespace". Никаких ошибок netstat не показывает - сплошные нули, как будто ipsec ничего не формирует и не принимает. Трафик внутри туннели не ходит.Вопрос: они там сломали чтоо-то в v7.0? У кого-нибудь работает IPSec в это версии FreeBSD?
>Вопрос: они там сломали чтоо-то в v7.0? У кого-нибудь работает IPSec в
>это версии FreeBSD?Делали такое :)
Разрешите в IPFW прохождение пакетов ipencap.
>>Вопрос: они там сломали чтоо-то в v7.0? У кого-нибудь работает IPSec в
>>это версии FreeBSD?
>
>Делали такое :)
>
>Разрешите в IPFW прохождение пакетов ipencap.ipencap это при том самом детском способе с использованием gif: ip over ip over ipsec. Какой-то дятел лет десять назад в Handbook написал этe муть и с тех пор никто переписать по-нормальному не хочет. Всё нормально работает при простом использовании политик IPSec: ip инкапсулируется в IPSec-ESP и выходит в сеть, так же приходящие пакеты декапсулируются согласно политике и всё работает у меня в FreeBSD v4.11, v5.4 и v6.2. А вот в FreeBSD v7.0 почему-то приходящие пакеты IPSec в статистике IPSec видны а потом куда-то пропадают и netstat -sp esp их не показывает, как будто и не было.
Чувствую что, как всегда, только сам себе помошник.
>Чувствую что, как всегда, только сам себе помошник.Обновите систему до RELENG_7, после релиза было много фиксов к ipsec. Посмотрите мартовские архивы cvs-src.
Нашёл: глючит из-за директивы в описании SA "-f zero-pad" (см. первое сообщение). Удалил её на обоих концах туннеля и всё заработало. FreeBSD v6.2 <-> FreeBSD v7.0.Плюс заодно выяснил, что сборка ядра без "options IPSEC_FILTERTUNNEL" избавляет от необходимости обрабатывать в IP-фильтрах протокол IPENCAP. Это функция и представлена для расширения возможности фильтровать туннелируемые пакеты. Для транспортных режимов не необходима, бесполезна и не действует.