Назад | Перейти на главную страницу

FreeBSD ipfw firewall_type

Я пытаюсь создать свой собственный скрипт межсетевого экрана внутри FreeBSD, и у меня возникают небольшие проблемы. Мне было интересно, сделал ли кто-нибудь что-то более улыбчивое и мог бы показать мне пример?

su-3.2# grep ^firewall /etc/rc.conf 
firewall_enable="YES"       # Set to YES to enable firewall functionality
firewall_type="/etc/ipfw.rules"
firewall_quiet="YES"        # Set to YES to suppress rule display
firewall_logging="YES"      # Set to YES to enable events logging
firewall_logdeny="YES"      # Set to YES to log default denied incoming
su-3.2# cat /etc/ipfw.rules 
${fwcmd} add 65000 pass all from any to any
su-3.2# /etc/rc.d/ipfw restart
/etc/rc.d/ipfw: DEBUG: checkyesno: firewall_enable is set to YES.
/etc/rc.d/ipfw: DEBUG: checkyesno: firewall_enable is set to YES.
/etc/rc.d/ipfw: DEBUG: run_rc_command: doit: ipfw_stop 
net.inet.ip.fw.enable: 1 -> 0
/etc/rc.d/natd: DEBUG: checkyesno: natd_enable is set to NO.
/etc/rc.d/ipfw: DEBUG: checkyesno: firewall_enable is set to YES.
/etc/rc.d/ipfw: DEBUG: run_rc_command: start_precmd: ipfw_prestart 
/etc/rc.d/ipfw: DEBUG: checkyesno: dummynet_enable is set to NO.
/etc/rc.d/ipfw: DEBUG: checkyesno: firewall_nat_enable is set to NO.
/etc/rc.d/ipfw: DEBUG: load_kld: ipfw kernel module already loaded.
/etc/rc.d/ipfw: DEBUG: run_rc_command: doit: ipfw_start 
/etc/rc.d/natd: DEBUG: checkyesno: natd_enable is set to NO.
Line 1: bad command `${fwcmd}'
Firewall rules loaded.
/etc/rc.d/ipfw: DEBUG: checkyesno: firewall_logging is set to YES.
Firewall logging enabled.
net.inet.ip.fw.enable: 0Read from remote host XXXXX.XXX: Connection reset by peer
Connection to XXXXX.XXX closed.
mbp:~ alexus$ 

Наконечник: Вы должны вводить правила в IPFW из сценария rc.d (например, /usr/local/etc/rc.d/ipfw.sh), не используйте /etc/ipfw.rules, это совсем не гибко

Потерять ${fwcmd}. Ваш файл предоставляется ipfw в качестве аргумента.

ipfw [-cfnNqS] [-p preproc [preproc-flags]] pathname

Чтобы упростить настройку, правила можно поместить в файл, который обрабатывается с помощью ipfw, как показано в последней строке синопсиса. Необходимо использовать абсолютный путь. Файл будет считываться построчно и применяться в качестве аргументов утилиты ipfw.

Попробуйте бежать ipfw /etc/ipfw.rules

в основном делай то, что сказал глеб.

если вы хотите указать сценарий в rc.conf, вам следует переименовать файл и использовать что-то вроде: firewall_script="/etc/ipfw.conf"

видеть /etc/defaults/rc.conf для получения дополнительной информации.

также, ${fwcmd} необходимо определить; обычно это что-то вроде:

fwcmd="/sbin/ipfw"

см. здесь для получения дополнительной информации: http://www.freebsd.org/doc/en/books/handbook/firewalls-ipfw.html