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

Attachment: signature.asc
Description: OpenPGP digital signature

Ответить