Привет!!!
Имеем такой firewall.conf:
# Pipes, queues
add 100 pipe 1 all from 192.168.0.0/24 to any via fxp0
add 110 pipe 2 all from 192.168.1.0/24 to any via fxp0
add 200 queue 1 all from 192.168.0.0/24 to any via fxp0
add 210 queue 2 all from 192.168.1.0/24 to any via fxp0
queue 1 config pipe 1 weight 50
queue 2 config pipe 2 weight 100
# Localhost
add 500 allow all from any to any via lo0
add 600 deny all from any to 127.0.0.0/8
add 700 deny all from 127.0.0.0/8 to any
# ICMP
add 1000 allow icmp from any to 212.42.XX.XX in via fxp0 icmptype
0,4,8,11,12
add 1100 allow icmp from 212.42.XX.XX to any out via fxp0 icmptype 3,8,12
add 1200 allow icmp from 212.42.XX.XX to any out via fxp0 frag
add 1300 allow icmp from any to 212.42.YY.YY in via fxp0 icmptype
0,4,8,11,12
add 1400 deny log icmp from any to any in via fxp0
# Subnets
add 2000 deny ip from any to any recv fxp1 xmit fxp2
add 2010 deny ip from any to any recv fxp2 xmit fxp1
# NAT
add 64000 divert natd all from any to any via fxp0
# Allow all
add 65000 allow all from any to any
Читаем man ipfw:
pipe pipe_nr
.....however, on exit from the pipe and if the sysctl(8) variable
net.inet.ip.fw.one_pass is not set, the packet is passed again to the
firewall code starting from the next rule.
Дал комманду:
sysctl net.inet.ip.fw.one_pass=0 && ipfw flush && ipfw /etc/firewall.conf -
всё прекрасно работало, счётчики на правилах 100, 110, 200, 210 забегали.
Потом прописал net.inet.ip.fw.one_pass=0 в /etc/sysctl.conf,
перезагрузил машину, и всё... нихера не работает, растёт только счётчик на
правиле 100. sysctl -a | grep net.inet.ip.fw.one_pass показывает, что
переменная выставлена в 0. Причём возврат обратное состояние и проделывание
всего опять вручную уже не помогает.
Где я наступаю на грабли? Система 4.7-STABLE (обновился сегодня).
-----
With best regards, Ivan Poplavsky (system administrator)326110316
Ukraine, Kiev, Vinnitskaya 10, NAM, tel: +380(44)246-2433