|
我写了一个简单的netfilter模块,模块功能是把端口为80的数据包给截获下来,然后丢弃。
代码片段如下:
unsigned char *deny_port = "\x00\x50";
ip_head = ip_hdr(sk);
if(ip_head->protocol != IPPROTO_TCP)
{
return NF_ACCEPT;
}
tcp_head = tcp_hdr(sk);
if(tcp_head->dest == *(unsigned short*)deny_port)
{
return NF_DROP;
}
情况一
我用的是传输层的目的端口和deny_port匹配,挂载点是NF_IP_LOCAL_OUT或者NF_IP_POST_ROUTING 这时候网页请求都被截获下来,得到我想要的结果。
奇怪的是情况二
情况二
我修改上面的代码,用传输层的源端口来和deny_port匹配,挂载点试过NF_IP_LOCAL_IN,NF_IP_PRE_POUTING,但是无论用哪一个挂载点,网页数据还是可以到达我的主机。
为什么会这样呢?
谢谢! |
|