例如我将以下规则添加到PREROUTING链:
iptables -t nat -A PREROUTING -d 210.210.210.210 -j DNAT --to-destination 200.200.200.200
(可以说这两个IP地址是互联网上的networking服务器)
现在当我使用任何浏览器冲浪到210.210.210.210我被redirect到200.200.200.200到目前为止这么好..当我从链中删除规则后,我冲浪,并刷新或再次打字的地址和“去“我仍然被redirect到200.200.200.200它的这样留下几分钟,过了一会儿,当我重试我回到210.210.210.210
如果它的浏览器caching问题,我怎么能强迫它不cachingDNS地址或iptables如何防止发生?
Linux中的NAT通过“连接跟踪”基础结构实现。 顾名思义它跟踪连接。 nat规则只定义了在连接开始时做了什么 – 然后build立了NAT,创build了一个conntrack规则,iptables nat规则不再用于这个连接。
浏览器可能使用持久的HTTP连接到服务器,并且在删除规则后,请求将通过已build立的连接发送。
conntrack-tools包中的“conntrack”实用程序( http://linux.die.net/man/8/conntrack )可以帮助您删除conntrack规则。
如果这个工具不适用于你,你可能试图打破与另一个iptables规则的连接,就像这个(它阻止所有的stream量到200.200.200.200):
iptables -I FORWARD -d 200.200.200.200 -j REJECT
通常这需要插入到FORWARD表('-I')的开头,通常有一个规则来接受已经build立的连接。
我使用了REJECT,因为这会向发送者发送错误响应,这可能比DROP更早地中断连接。