iptables conntrack和state的区别

iptables conntrack和state的区别

 

分类: LINUX

2015-07-13 14:47:19

 

-m conntrack --ctstate ESTABLISHED,RELATED -j ...
-m state --state ESTABLISHED,RELATED -j ... 
我们要对一条连接做处理,可以用以上两种match target来实现。
两者的区别是啥?!
有观点:
1. ubuntu的howto推荐是conntrack,除非有错的话,再使用state
2. conntrack模块会在以后的版本中取代state,现在保留state模块只是为了兼容老用户的习惯
3. http://serverfault.com/questions/190978/firewall-questions-about-state-and-policy
   这里面老外得出的结论是,conntrack在技术上完全可以取代state,state会逐渐废弃。然而,事实上state并没被废弃,一直在使用。
4. 一份邮件中提到,state仅仅是conntrack的alias,那么你是用哪个也就无所谓了,反正都是用的conntrack功能

结论:
    根据serverfault的QA
    conntrack和state在内核层的实现是一致的(都使用contrack的nf_ct_get)。
    xt_conntrack.c(conntrack模块的内核实现)比xt_state.c提供了更加丰富的选项和功能。
    state只是一个最小化的状态集合,只支持基本的连接状态。
    而conntrack可以支持包括NAT、连接协议、端口、地址等更复杂的选项。
    iptables -m conntrack --help 可以看到支持的所有匹配选项

你可能感兴趣的:(iptables)