关于IPFW明示允许规则集的一些疑问

本帖最后由 migoumigou 于 2011-04-22 17:22 编辑

初学ipfw,是小菜,所以有些疑问请教
内核编译的时候,已经放入了options    IPFIREWALL_DEFAULT_TO_ACCEPT
现在想要做一个明示允许的规则集,除了规则集中列出的MAC列表allow,其他都deny,这样写的:
ipfw -q -f flush
ipfw -q add 00050 divert 8668 ip4 from any to any via bge0
ipfw -q add 00100 allow ip from any to any via lo0
ipfw -q add 00200 deny ip from any to 127.0.0.0/8
ipfw -q add 00300 deny ip from 127.0.0.0/8 to any
ipfw -q add 00400 allow ip from any to any MAC x0:0x:0x:0x:0x:0x any
ipfw -q add 00500 allow ip from any to any MAC x0:0x:0x:0x:0x:0x any
ipfw -q add 00600 allow ip from any to any MAC x0:0x:0x:0x:0x:0x any
ipfw -q add 65535 deny ip from any to any
重启加载规则后ipfw list,前面的几项规则都显示正常,唯独65535还是
65535 allow ip from any to any
然后规则中MAC列表以外的机器仍可以正常通过防火墙连接外网

请问是规则集写的有问题吗?烦请指出哪里有问题?
如果规则集没有问题,那是不是明示允许的规则,前提是必须把内核中的options    IPFIREWALL_DEFAULT_TO_ACCEPT拿掉,重新编译内核,才能让上面的规则集正常运作?

作者: migoumigou   发布时间: 2011-04-22

kernel里面的那个是最后的默认设置吧。

作者: fender0107401   发布时间: 2011-04-22

那你就用下面一句,65535那句你不可能把它重新定义,而是会有两个65535,加上65534后,65535永远不起作用:
ipfw -q add 65534 deny ip from any to any

作者: lsstarboy   发布时间: 2011-04-22

Check this!
  1. ################################################################################

  2. # delete all rules

  3. ipfw -q -f flush

  4. # variable declaration

  5. nic="re0"

  6. dns1="+++"

  7. dns2="+++"

  8. dhcp="192.168.1.1"

  9. cmd="ipfw -q add "

  10. ks="keep-state"

  11. ################################################################################

  12. # loopback

  13. $cmd 00100 allow all from any to any via lo0

  14. $cmd 00200 check-state

  15. ################################################################################

  16. # dns

  17. $cmd 00300 allow tcp from me to $dns1 53 out via $nic setup $ks

  18. $cmd 00400 allow udp from me to $dns2 53 out via $nic $ks

  19. $cmd 00500 allow tcp from me to $dns1 53 out via $nic setup $ks

  20. $cmd 00600 allow udp from me to $dns2 53 out via $nic $ks

  21. # dhcp

  22. $cmd 00700 allow udp from me to $dhcp 67 out via $nic $ks

  23. ################################################################################

  24. # www

  25. $cmd 00800 allow tcp from me to any 80 out via $nic setup $ks

  26. # secure www

  27. $cmd 00920 allow tcp from me to any 443 out via $nic setup $ks

  28. # email

  29. $cmd 01000 allow tcp from me to any 587 out via $nic setup $ks

  30. $cmd 01100 allow tcp from me to any 995 out via $nic setup $ks

  31. # irc

  32. $cmd 01200 allow tcp from me to any 7000 out via $nic setup $ks

  33. # ftp

  34. $cmd 01300 allow tcp from me to any 21 out via $nic setup $ks

  35. $cmd 01400 allow tcp from me to any 1024-65535 out via $nic setup $ks

  36. # ntp

  37. $cmd 01500 allow udp from me to any 123 out via $nic $ks

  38. # csup

  39. $cmd 01600 allow tcp from me to any out via $nic setup $ks uid root

  40. ################################################################################
复制代码

作者: fender0107401   发布时间: 2011-04-22