From 24201fecf0f3fc0be741c2d382ff02fc8470df30 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Sat, 19 Jan 2019 19:48:17 +0300 Subject: [PATCH] =?utf8?q?=D0=90=D0=BA=D0=BA=D1=83=D1=80=D0=B0=D1=82=D0=BD?= =?utf8?q?=D0=B5=D0=B5=20=D1=81=20IPsec=20SP=20=D0=B2=20FreeBSD=20=D0=B8?= =?utf8?q?=20strongSwan?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Прежде я использовать strongSwan с auto=add правилами: при запуске они автоматически добавлялись, но security policy явно не задавались. Точнее было так: на шлюзе, концентраторе-IPsec он сам ничего не предпринимал, а только ждал входящие соединения. Клиенты же сами их инициировали. Это опасно тем, что никто явно нигде не говорит что трафик внутри IPv6-IPsec сети (отдельная выделенная /64 сеть) должна быть зашифрована. Если я везде остановлю strongSwan-ы, то всё будет работать и я даже не замечу что шифрования (+аутентификации) то и нет. Выставление auto=route должно создавать security policy явно говорящие что такой-то трафик обязан быть обезопасен ESP. Но соединения у меня не срабатывали почему-то. Сегодня разобрался почему. Использовать туннельный режим IPsec в FreeBSD проблематично. Я до конца всё так и не понял, но самое нормальное это делать явные туннели: например gif-интерфейсы и их обезопашивать в транспортном режиме. Если я скажу что между fcXX и fcYY адресами должен быть транспортный ESP, то всё по идее должно работать, но нет. Как оказалось, потому-что правило требующее безопасности IP-пакетов между fc/8 адресами препятствует ICMPv6 NDP сообщениям. Я мог бы руками жёстко прописать MAC-адреса IPv6 fc/8 хостов, чтобы NDP не требовался, но геморройно. В итоге пришёл к тому что описано в wiki strongSwan-а: явно разрешить хождению NDP пакетов. conn ndp-ns right=::1 leftsubnet=fc00::/8[ipv6-icmp/135] rightsubney=fc00::/8[ipv6-icmp/135] type=passthrough auto=route conn ndp-na right=::1 leftsubnet=fc00::/8[ipv6-icmp/136] rightsubney=fc00::/8[ipv6-icmp/136] type=passthrough auto=route Для себя я намотал на ус следующее: * лучше использовать родные туннельные протоколы типа gif, создающие отдельный сетевой интерфейс. Лично мне это легче понимать и управлять * про туннельный режим проще забыть, так как туннель всё-равно будет внутри gif-а. Только транспортный. Им же можно и чисто host-to-host безопасность обеспечить * всегда делать auto=route, так как оно явно прописывает security policy (раз мы пишем туда правило, то значит явно хотим только ESP-трафик?) -- 2.50.0