Сильно не пинайте.
Начал изучать ipfw, решил использовать ядерный nat.
Соответствующим образом сконфигурил и скомпилил ядро, sysctl - не трогал.
Ядро:
Код: Выделить всё
options IPFIREWALL
# options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPFIREWALL_FORWARD
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=50
options IPFIREWALL_NAT
options LIBALIAS
Код: Выделить всё
firewall_enable=«YES»
firewall_type=”/etc/ipfw.conf”
1. С внешнего интерфейса в локалку делать проброс некоторых портов (к примеру 5223, 8000).
2. На внешнем интерфейсе натить для всей локалки несколько портов (к примеру 25,110).
3. Пускать на web сервер (80,443)
Правила ipfw:
Код: Выделить всё
тут переменные, списки и таблицы.
.....
{ipfw} nat 1 config if ${ext_if} reset same_ports unreg_only \
redirect_port tcp 192.168.0.2:5223 5223 \
redirect_port tcp 192.168.0.2:8000 8000 \
......
${ipfw} add 500 allow all from any to ${ext_if} 25,80,110,443,5223,8000 in via ${ext_if} keep-state
${ipfw} add 600 nat 1 all from any to ${ext_if} 25,110 in via ${ext_if}
${ipfw} add 700 nat 1 all from ${local_ip} to any 25,110 out via ${ext_if}
......
${ipfw} add 1000 allow all from any to any via ${int_if}
${ipfw} add 1100 deny all from any to any
[code]
В результате:
- 80,443 - работает
- 25,110 - не натится в локалке.
- редирект 5223 и 8000 - не работает.
Правильно ли я понимаю что, в начале нужно пустить пакет на интерфейс (500), потом загнать в нат (600).
И для исходящего (700).
Или правило NAT всегда должно быть первое на интерфейсе?
2. Как заставить ipfw пропускать пакеты дальше по фаерволу, для дальнейшей обработки?
К примеру в(500) я открыл несколько портов,но хочу сделать правило (800) в коротом дополнительно открою еще порт 21,20 и т.д
В данном кратком примере это не работает, как я понимаю пакет попадает в NAT и тухнет.