当我执行时sudo iptables -F
,我的 nat 表的 iptable 规则没有被刷新。为什么会这样?上面的命令有什么作用?
我相信有三个表:filter、nat 和 mangle。我认为这些表均不受 的影响sudo iptables -F
。这样对吗?
答案1
作为手册 状态,所有iptables
命令都在特定表上起作用。
当您省略可选-t TABLE
标志时,该iptables -F
命令将仅适用于默认表,筛选桌子。
表格
目前有三个独立的表(哪些表随时存在取决于内核配置选项和存在哪些模块)。
-t, --table table
此选项指定命令应操作的数据包匹配表。如果内核配置了自动模块加载,则将尝试加载该表的相应模块(如果该表尚不存在)。表格如下:
筛选:
这是默认表(如果没有-t
传递选项)。它包含内置链INPUT
(用于发往本地套接字的数据包)、FORWARD
(用于通过盒子路由的数据包)和OUTPUT
(用于本地生成的数据包)。
NAT:
当遇到创建新连接的数据包时,将查阅此表。它由三个内置函数组成:(PREROUTING
用于在数据包进入时立即更改数据包)、OUTPUT
(用于在路由之前更改本地生成的数据包)和POSTROUTING
(用于在数据包即将发出时更改数据包)。
损坏:此表用于专门的数据包更改。
在内核 2.4.17 之前,它有两个内置链:(PREROUTING
用于在路由之前更改传入数据包)和OUTPUT
(用于在路由之前更改本地生成的数据包)。
从内核 2.4.18 开始,还支持其他三个内置链:(INPUT
用于进入盒子本身的数据包)、FORWARD
(用于更改通过盒子路由的数据包)和POSTROUTING
(用于在数据包即将发出时更改它们)。
生的:此表主要用于与NOTRACK
目标结合配置免于连接跟踪。它在具有更高优先级的 netfilter 钩子上注册,因此在 ip_conntrack 或任何其他 IP 表之前被调用。
它提供以下内置链:(PREROUTING
用于通过任何网络接口到达的数据包)OUTPUT
(用于本地进程生成的数据包)
答案2
我相信您需要添加-t <table_name>
刷新nat
和mangle
表格的选项。