日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

FreeBSD ipfilter的嚴重問題

我為一客戶做的防火墻(FreeBSD(p23) ipfilter 3.4.33pre2)每天都要死好幾次,而且每次都是在沒任何反應和輸出信息的情況下死掉,弄得我好沒面子 。我一直沒查出問題在哪 。
這幾天在Ipfilter的網(wǎng)站上看到郵件列表里一個人碰到和我相同的情況,原文如下:
Using FreeBSD 4.9-STABLEipfilter 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規(guī)則文件的最前面加上這樣一條規(guī)則:
block return-icmp-as-dest in quick on fxp0 proto udp from any to any port = 53
其中fxp0是你要測試的接口,根據(jù)你自己的情況修改 。
然后在另外一臺電腦B上把DNS設為要測試的這臺防火墻A的IP地址,在B上運行nslookup,隨便查詢幾個域名,多查幾次,你就會看到防火墻A在沒任何信息輸出的情況下立即凍結(jié),死機 。真可怕,百事百靈 。即使你的ipf.conf沒這個規(guī)則在特殊情況下也會出現(xiàn)這種現(xiàn)象,我試了3.4.33pre1-pre3都有這個毛病,據(jù)說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,71285,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,71465,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,101492,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);
【FreeBSD ipfilter的嚴重問題】ip->ip_src.s_addr = dst4.s_addr;
ip->ip_dst.s_addr = oip->ip_src.s_addr;
@@ -1509,131511,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;
}

    推薦閱讀