Я пытаюсь создать свой собственный скрипт межсетевого экрана внутри 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