我正在尝试在 FreeBSD 中创建自己的防火墙脚本,但遇到了一些问题,我想知道是否有人做了一些更有趣的事情并可以给我举个例子?
su-3.2# grep ^firewall /etc/rc.conf firewall_enable="YES" # 设置为 YES 以启用防火墙功能 防火墙类型="/etc/ipfw.rules" firewall_quiet="YES" #设置为YES,则禁止显示规则 firewall_logging="YES" # 设置为 YES 以启用事件日志记录 firewall_logdeny="YES" # 设置为 YES 以记录默认拒绝传入 su-3.2# cat /etc/ipfw.rules ${fwcmd} 添加 65000 传递所有从任意到任意 su-3.2# /etc/rc.d/ipfw 重启 /etc/rc.d/ipfw:DEBUG:checkyesno:firewall_enable 设置为 YES。 /etc/rc.d/ipfw:DEBUG:checkyesno:firewall_enable 设置为 YES。 /etc/rc.d/ipfw:调试:run_rc_command:doit:ipfw_stop net.inet.ip.fw.enable:1 -> 0 /etc/rc.d/natd: DEBUG: checkyesno: natd_enable 设置为 NO。 /etc/rc.d/ipfw:DEBUG:checkyesno:firewall_enable 设置为 YES。 /etc/rc.d/ipfw:调试:run_rc_command:start_precmd:ipfw_prestart /etc/rc.d/ipfw: DEBUG: checkyesno: dummynet_enable 设置为 NO。 /etc/rc.d/ipfw:DEBUG:checkyesno:firewall_nat_enable 设置为 NO。 /etc/rc.d/ipfw:DEBUG:load_kld:ipfw 内核模块已加载。 /etc/rc.d/ipfw:调试:run_rc_command:doit:ipfw_start /etc/rc.d/natd: DEBUG: checkyesno: natd_enable 设置为 NO。 第 1 行:错误命令‘${fwcmd}’ 防火墙规则已加载。 /etc/rc.d/ipfw:DEBUG:checkyesno:firewall_logging 设置为 YES。 防火墙日志已启用。 net.inet.ip.fw.enable: 0从远程主机读取 XXXXX.XXX: 对端重置连接 与 XXXXX.XXX 的连接已关闭。 mbp:~ alexus$
答案1
丢失${fwcmd}
。您的文件将作为参数提供给 ipfw。
ipfw [-cfnNqS] [-p preproc [preproc-flags]] pathname
为了简化配置,可以将规则放入使用 ipfw 处理的文件中,如最后一条概要行所示。必须使用绝对路径名。该文件将逐行读取并作为参数应用于 ipfw 实用程序。
尝试运行ipfw /etc/ipfw.rules
答案2
提示:您应该从 rc.d 脚本(例如:/usr/local/etc/rc.d/ipfw.sh)输入 IPFW 规则,不要使用 /etc/ipfw.rules ,因为它根本不灵活
答案3
基本上,按照 gleb 所说的去做。
如果您想在中指定脚本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