WEB开发网
开发学院网络安全防火墙 iptables的状态检测机制 阅读

iptables的状态检测机制

 2006-04-03 12:37:11 来源:WEB开发网   
核心提示: iptables -A INPUT -p udp -m state --state ESTABLISHED -j ACCEPT iptables -A OUTPUT -P udp -m state --state NEW,ESTABLISHED -j ACCEPT 上面的状态表项包含如下信

iptables -A INPUT -p udp -m state --state ESTABLISHED -j ACCEPT

iptables -A OUTPUT -P udp -m state --state NEW,ESTABLISHED -j ACCEPT

上面的状态表项包含如下信息:

连接的协议是UDP(IP协议号17)。

这个状态表项还有19秒中就超时。

发起连接方向上的源、目的地址和源、目的端口。

应答方向上的源、目的地址和源、目的端口。这个连接使用UNREPLIED标记,表示还没有收到应答。

UDP连接的超时时间在/usr/src/linux/net/ipv4/netfilter/ip_conntrack_proto_udp.c文件中设置,如果改变了这个值,需要重新编译Linux内核源代码才能生效。下面是UDP连接超时时间的相关的源代码:

#define UDP_TIMEOUT (30*HZ)

#define UDP_STREAM_TIMEOUT (180*HZ)

一个UDP请求等待应答的时间是30*HZ(这个值一般是30秒)。在上面的例子中,等待的时间已经消耗了11秒,还剩余19秒,如果在这段时间之内没有收到应答分组,这个表项就会被删除。一旦收到了应答,这个值就被重置为30,UNREPLIED标志也被删除。这个表项编程如下形式:

udp 17 28 src=192.168.1.2 dst=192.168.1.50 sport=1032 dport=53 src=192.168.1.50 dst=192.168.1.2 sport=53 dport=1032 use=1

如果在这一对源、目的地址和源、目的端口上,发生了多个请求和应答,这个表项就作为一个数据流表项,它的超时时间是180秒。这种情况下,这个表项就变成如下形式:

udp 17 177 src=192.168.1.2 dst=192.168.1.50 sport=1032 dport=53 src=192.168.1.50 dst=192.168.1.2 sport=53 dport=1032 [ASSURED] use=1

这时我们看到这个表项使用ASSURED标志。一旦连接表项使用ASSURED标志,那么即使在网络负沉重的情况下,也不会被丢弃。如果状态表已经饱和,当新的连接到达时,使用UNREPLIED标志的表项会受被丢弃。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:iptables 状态 检测

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接