<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[Snooda]]></title> 
<link>http://www.snooda.com/index</link> 
<description><![CDATA[Snooda's Blog]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[Snooda]]></copyright>
<item>
<link>http://www.snooda.com/read/</link>
<title><![CDATA[iptables规则延迟生效/不生效问题-conntrack]]></title> 
<author>snooda &lt;admin@snooda.com&gt;</author>
<category><![CDATA[默认分类]]></category>
<pubDate>Wed, 21 Jul 2021 12:04:39 +0000</pubDate> 
<guid>http://www.snooda.com/read/</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;生产环境线上一般是不允许开启conntrack的，因为默认的连接跟踪表也就万级别，不小心打满后，容易导致很难排查的网络问题。（iptables -t nat只查看也会不知不觉启用conntrack）所以很多团队是规定禁止线上运行iptables的。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;但是某些设备上，conntrack是必备的一项功能，比如网关，用来做防火墙、包转发等。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;今天就遇到了一个很特殊的场景。。表现特征是iptables配的MASQUERADE看起来并不生效。有时不知怎么回事生效以后，删掉规则居然仍然能转发。。明明删除了规则，居然还能ping通，新增了规则，居然还转发到老的地方。。<br/><br/>后来研究了一下，发现原来对于iptables的nat表来讲，只有连接新建时，才会查表进行一次匹配。当连接被conntrack后，就不再走nat表匹配了。<br/>对于icmp来讲，默认conntrack会保留30s，所以如果添加规则前30s如果ping了一下。那么添加完并不会生效已有的。。。。反之亦然。<br/>可以使用conntrack -E作为验证手段。该命令会打印conntrack模块对连接的跟踪情况。<br/><br/>如果想手动移除映射关系，可以使用conntrack -D<br/>Tags - <a href="http://www.snooda.com/tags/iptables/" rel="tag">iptables</a> , <a href="http://www.snooda.com/tags/conntrack/" rel="tag">conntrack</a>
]]>
</description>
</item><item>
<link>http://www.snooda.com/read/#blogcomment</link>
<title><![CDATA[[评论] iptables规则延迟生效/不生效问题-conntrack]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.snooda.com/read/#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>