免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1942 | 回复: 4
打印 上一主题 下一主题

ipfilter的严重问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-01-12 10:20 |只看该作者 |倒序浏览
我为一客户做的防火墙(FreeBSD(p23)+ipfilter 3.4.33pre2)每天都要死好几次,而且每次都是在没任何反应和输出信息的情况下死掉,弄得我好没面子。我一直没查出问题在哪。
这几天在Ipfilter的网站上看到邮件列表里一个人碰到和我相同的情况,原文如下:
Using FreeBSD 4.9-STABLE + ipfilter 3.4.33pre2
If I have ipf rules like:
block return-icmp (port-unr) in log quick on xl0 proto udp from any to any port = 111
attempts to connect to that port cause the sytem to freeze instantly, no crash dumps, no errors etc.
The same happens using
block return-icmp-as-dest ........

I haven't seen anything like this in recent archives.
What can I do to further debug this ?

大家可以做个简单的测试:
假设防火墙为A,工作站为B。
在你的ipf.conf规则文件的最前面加上这样一条规则:
block return-icmp-as-dest in quick on fxp0 proto udp from any to any port = 53

其中fxp0是你要测试的接口,根据你自己的情况修改。
然后在另外一台电脑B上把DNS设为要测试的这台防火墙A的IP地址,在B上运行nslookup,随便查询几个域名,多查几次,你就会看到防火墙A在没任何信息输出的情况下立即冻结,死机。真可怕,百事百灵。即使你的ipf.conf没这个规则在特殊情况下也会出现这种现象,我试了3.4.33pre1-pre3都有这个毛病,据说3.4.32也是,3.4.31好象没这个毛病。有人公布了一个patch,我试了一下,有效。我附在后面,这个patch已得到ipfilter作者的认同,可以放心使用。


Index: ip_fil.c
===================================================================
RCS file: /home/cvs/firewall/firewall/usrlocal/ipfilter34/ipfilter3433/ip_fil.c,v
retrieving revision 1.3
diff -u -r1.3 ip_fil.c
--- ip_fil.c 17 Dec 2003 12:33:56 -0000 1.3
+++ ip_fil.c 22 Dec 2003 11:23:28 -0000
@@ -1285,7 +1285,7 @@
frn.fin_ifp = fin->;fin_ifp;
frn.fin_v = fin->;fin_v;
frn.fin_out = fin->;fin_out;
- frn.fin_mp = fin->;fin_mp;
+ frn.fin_mp = mp;

ip = mtod(m, ip_t *);
hlen = sizeof(*ip);
@@ -1465,7 +1465,13 @@
#endif

if (avail) {
+ slen = oip->;ip_len;
+ oip->;ip_len = htons(oip->;ip_len);
+ soff = oip->;ip_off;
+ oip->;ip_off = htons(oip->;ip_off);
bcopy((char *)oip, (char *)&icmp->;icmp_ip, MIN(ohlen, avail));
+ oip->;ip_len = slen;
+ oip->;ip_off = soff;
avail -= MIN(ohlen, avail);
}

@@ -1486,10 +1492,6 @@
} else
#endif
{
- slen = oip->;ip_len;
- oip->;ip_len = htons(oip->;ip_len);
- soff = oip->;ip_off;
- oip->;ip_off = htons(ip->;ip_off);

ip->;ip_src.s_addr = dst4.s_addr;
ip->;ip_dst.s_addr = oip->;ip_src.s_addr;
@@ -1509,13 +1511,7 @@
fin->;fin_hlen = hlen;
err = send_ip(oip, fin, &m);
fin->;fin_hlen = shlen;
-#ifdef USE_INET6
- if (fin->;fin_v == 4)
-#endif
- {
- oip->;ip_len = slen;
- oip->;ip_off = soff;
- }
+
return err;
}

论坛徽章:
0
2 [报告]
发表于 2004-01-12 17:17 |只看该作者

ipfilter的严重问题

不知 NetBSD 会不会出现这种情况 ...

论坛徽章:
0
3 [报告]
发表于 2004-01-15 22:55 |只看该作者

ipfilter的严重问题

我的FreeBSD 4.9-STABLE的ipfilter是 3.4.31.

论坛徽章:
0
4 [报告]
发表于 2004-01-15 23:41 |只看该作者

ipfilter的严重问题

[quote]原帖由 "dylibin"]我的FreeBSD 4.9-STABLE的ipfilter是 3.4.31.[/quote 发表:


嗯,是了。不知楼主的 ipfilter 是 FreeBSD 自带的还是从源码安装的?

论坛徽章:
0
5 [报告]
发表于 2004-01-16 01:27 |只看该作者

ipfilter的严重问题

应该是从源码安装的吧..

# uname -r
4.9-STABLE
# ipf -V
ipf: IP Filter: v3.4.31 (336)
open device: Device not configured
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP