[an error occurred while processing this directive]

Трансляция PPTP (GRE) на шлюзе с PF
Как известно, межсетевой экран PF, портированный в FreeBSD из OpenBSD, не может
корректно транслировать (NAT) GRE-протокол и, к примеру, из локальной сети
невозможно создать несколько одновременных соединений к внешнему серверу VPN PPTP.

Одним из способов решения проблемы является трансляция PPTP-соединений родным
IPFW с "ядерным" NAT. При этом вовсе необязательно компилировать ядро. Все
описанные действия проверены в FreeBSD версии 7.2. Но должно работать и в
других версиях, где есть поддержка "ядерного" NAT для IPFW.

В /etc/rc.conf добавляем

   #Включаем IPFW
   firewall_enable="YES"
   # Подгружаем модуль ядра ipfw_nat
   firewall_nat_enable="YES"
   # Указываем путь к скрипту загрузки правил
   firewall_script="/etc/ipfw.script"

Создаем файл /etc/ipfw.script

   #!/bin/sh
   
   /sbin/ipfw -q /dev/stdin <<RULES
   flush
   #em0 - внешний интерфейс шлюза
   nat 10 config if em0
   #Правила для трансляции PPTP-соединения
   add 10 nat 10 gre from any to any
   add 11 nat 10 tcp from any to any dst-port pptp
   add 12 nat 10 tcp from any pptp to any
   # Разрешаем весь трафик
   add allow all from any to any
  
   RULES

Делаем скрипт исполняемым

   # chmod +x /etc/ipfw.script

Добавляем в правила PF

   # Запрещаем PF транслировать PPTP-соединения
   no nat on $external_if proto gre all
   no nat on $external_if proto tcp from any to any port = pptp
   no nat on $external_if proto tcp from any port = pptp to any
   ... skip ...
   
   # Пропускаем PPTP-соединения
   pass quick on $external_if inet proto tcp from any to any port 1723
   pass quick on $external_if inet proto tcp from any port 1723 to any
   pass quick on $external_if inet proto gre from any to any

После всех сделанных изменений перезагружаемся.
 
11.12.2009 , Автор: Князь , Источник: http://www.propheta.ru/2009/11/pptp...
Ключи: pf, firewall, ipfw, freebsd
Раздел:    Корень / Администратору / Сетевая подсистема, маршрутизация / Пакетные фильтры и фаерволы / Пакетный фильтр в FreeBSD: ipfw, IP-Filter

[an error occurred while processing this directive]

[an error occurred while processing this directive]