PF firewall

From
Yuri Chumakov (2:5079/65.2)
To
All
Date
2006-11-07T20:55:26Z
Area
RU.UNIX.BSD
Привет All!

Решил я тут перелезть под subj... В силу каких причин - отдельная история.
Нашел на opennet'е кое-какую доку... Настроил. Вроде работает....

Но вот есть проблема. Не знаю как решить...

Подскажите плз...

В общем тут так все устроено:
xl1 - dhcp'шный интерфейс, на котором поднимается pppoe.
tun0 - pppoe, поднимаемый через ppp. Адрес тоже на dhcp (защита у прова, дабы не строили домашних сетей - уроды одним словом). Локалка прова.
ng0 - vpn соединение, поднимаемое через mpd. Адрес dhcp. Интернет.

xl1 и tun0 - подняты всегда, пока работает комп. ng0 - иногда, по мере необходимости интернета.

Есть такие правила в /etc/pf.conf:

#ext_if="{ xl1, tun0, ng0 }"    # external interface name
ext_if="{ xl1, tun0 }"          # external interface name
int_if="xl0"                    # internal interface name
internal_net="192.168.0.0/24"
internal_addr="192.168.0.1"

#
#
# Translation ####################
#
nat on $ext_if from $internal_net to any -> $ext_if

По понятным причинам, нат нужен на всех 3-х интерфейсах. НО!!! Если раскоментировать первую строку, где есть все 3 интерфейса, то ната не будет нигде, так как ng0 - нет в системе.

Вот я счас подключаю интернет, потом перекоментировываю 2-е строки в конфиге и перезапуска subj.

Правил, где участвует $ext_if - много, почти весь конфиг...

Посоветуйте, плз, есть-ли какой-нить путь, для автоматической перегенерации правил, при поднятии интерфейса? Типа, изменения "на лету" переменной $ext_if, и добавления правил? Или может в самом pf есть какой-нить механизм обработки таких ситуаций?

ps Вариант держать поднятым ng0 - не устраивает. Интернет - 5р за метр. Я на одних сканированиях адреса разорюсь... :(

До встречи, с уважением Yuri Chumakov

--- GoldED+/W32 1.1.5-030809
 * Origin: Default origin (2:5079/65.2)
SEEN-BY: 50/12 203 51/7 400/814 450/186 1024 451/30 461/435 550/196 5030
SEEN-BY: 4614/20 4635/4 5000/5000 5011/13 5012/46 5014/33 5014 5015/28 5019/31
SEEN-BY: 5020/154 175 400 545 549 758 1523 1604 1630 2142 2238 2395 2450 2590
SEEN-BY: 5020/2871 4441 5021/3 29 5022/128 5025/3 750 5027/12 5029/32 5030/49
SEEN-BY: 5030/479 500 556 557 606 644 792 966 1063 1080 1228 1327 1375 1416
SEEN-BY: 5030/1487 1492 1520 1522 1543 1900 1957 1997 2828 5031/7 47 70
SEEN-BY: 5035/38 5040/47 5042/13 5045/7 5049/50 97 5054/1 4 8 9 11 28 35 36 37
SEEN-BY: 5054/45 63 66 67 70 75 84 85 5055/95 5056/12 5059/9 37 5062/1 10
SEEN-BY: 5063/3 5064/7 5068/1 5076/1 5077/70 5079/46 56 65 67 5080/80 1003
SEEN-BY: 5082/6 5083/21 5084/9 5085/13 5090/108 5094/4 5095/20 5096/18 5099/11
SEEN-BY: 6001/10
PATH: 5079/65 46 5030/966 5020/4441 545 5054/1 37