On 23.04.2015 14:27, Golub Mikhail wrote: > Добрый день. > > Задал вопрос на форуме - был один ответ, что никак подобное не сделать. > Но все же ... > Никто не делал подобное на FreeBSD? > > Хочу на FreeBSD 10.1 натировать сеть в сеть средствами pf перед > заворачиванием в ipsec-туннель (например, локалку 192.168.1.0/24 в > 172.16.1.0/24) > pfsense такое делает (а там 10.1-RELEASE-p9 FreeBSD). > В pfsense есть два параметра: > net.inet.ip.pfil.inbound: pf > net.inet.ip.pfil.outbound: pf > > На 10.1, 9.3, 8.4, 7* - таких oid-ов нет.
Судя по названию, эти оиды регулируют порядок или необходимость запуска pfil хуков на input/output. Т.е. к сути дела не имеют. А есть у вас возможность попробовать head/? По сути вам нужно включить filtertunnel, настроить filter_mask так, чтобы исходящий пакет отправлялся в NAT до инкапсуляции, а входящий после отрезания внешнего заголовка (см. if_enc(4)). В политике ipsec вам нужно указать туннельный режим с неотначенными адресами в качестве адресов матчинга src_range/dst_range и endpoint адресами туннеля. Эти же endpoint адреса туннеля должны быть указаны в соответствующих SA. При такой конфигурации secpolicy отправляет ваши неотначенные пакеты на обработку в ipsec, тот отправляет их в pfil, который должен выполнить трансляцию, после возвращения из pfil к пакету будет прилеплен новый IP заголовок с endpoint адресами тунеля из SA. Далее он шифруется и уходит в сеть. На принимающей стороне пакет благодаря обратной SA дешифруется, ему отрезается внешний IP заголовок и уже этот оттранслированный пакет приходит в хост систему. На вид как-то вот так это должно работать в head/. -- WBR, Andrey V. Elsukov
signature.asc
Description: OpenPGP digital signature
