如何阅读iptables TRACE日志(政策号)

时间:2017-01-19 17:43:48

标签: iptables trace policy

所以我添加了

sudo iptables -t raw -A PREROUTING -p tcp --dport 25 -j TRACE

以及

sudo iptables -t raw -A OUTPUT -p tcp --dport 25 -j TRACE

当我为TRACE grep我的syslog时,我得到的输出看起来像这样

Jan 19 09:14:46 dev109 kernel: [29067248.683235] TRACE: raw:OUTPUT:rule:2 IN= OUT=eth0  ...
Jan 19 09:14:46 dev109 kernel: [29067248.683244] TRACE: raw:OUTPUT:policy:5 IN= OUT=eth0 ...
Jan 19 09:14:46 dev109 kernel: [29067248.683254] TRACE: mangle:OUTPUT:policy:1 IN= OUT=eth0 ...
Jan 19 09:14:46 dev109 kernel: [29067248.683262] TRACE: filter:OUTPUT:policy:1 ...
Jan 19 09:14:46 dev109 kernel: [29067248.683269] TRACE: mangle:POSTROUTING:policy:1 ...
Jan 19 09:14:46 dev109 kernel: [29067248.683432] TRACE: raw:OUTPUT:rule:4 IN= OUT=eth0 ...
Jan 19 09:14:46 dev109 kernel: [29067248.683441] TRACE: raw:OUTPUT:policy:5 IN= OUT=eth0 ...

我想了解政策号码所指的是policy:1 == ACCEPT ?,如果是,policy:5是什么意思?

2 个答案:

答案 0 :(得分:4)

policy:1type:rulenum。或者采用另一种方式type="policy"rulenum=1

仔细阅读this。具体做法是:

  

TRACE   此目标标记打包,以便内核将记录与数据包匹配的每个规则,因为这些规则遍历表,链,   规则。 (日志记录需要ipt_LOG或ip6t_LOG模块。)使用字符串前缀记录数据包:

     

" TRACE:tablename:chainname:type:rulenum"类型可以是"规则"对于普通规则,"返回"用于用户结束时的隐式规则   定义链和"政策"对于内置链的政策。   它只能在原始表中使用。

现在让我们从问题TRACE: mangle:OUTPUT:policy:1中取一个前缀并应用我们已经学到的东西:

tablename = mangle
chainname = OUTPUT
type      = policy]
rulenum   = 1

答案 1 :(得分:0)

我想根据@OscarAkaElvis 和其他人写的答案提供一个简单的解释。

每条链都有一个默认策略,打印规则就可以看到。在这里,我们可以看到 INPUT 表中的 filter 链具有 ACCEPT 的默认策略:

# iptables -L -t filter
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     icmp --  anywhere             anywhere             /* 000 accept all icmp */
ACCEPT     all  --  anywhere             anywhere             /* 001 accept all to lo interface */
REJECT     all  --  anywhere             127.0.0.0/8          /* 002 reject local traffic not on loopback interface */ reject-with icmp-port-unreachable

https://backreference.org/2010/06/11/iptables-debugging/ 中所述,日志消息的格式为 TRACE: tablename:chainname:type:rulenum

对于策略,格式的最后一部分是 type:rulenumrulenum 数字指的是策略的默认规则,即最后一条规则。基本上是“您添加到链中的规则数量”+ 1。

以下是使用原始问题中提出的链的两种解释:

  • mangle:OUTPUT:policy:1 此链 (mangle:OUTPUT) 不包含任何规则。默认规则是第一个也是唯一的规则。因此数字是 :1
  • raw:OUTPUT:policy:5 该链包含 4 条规则。因此,默认值为规则 #5。