我正在尝试使用 iptables 将所有出站连接记录到一个文件中。
这是我的规则:
-A OUTPUT ! -o lo ! --destination 127.0.0.1 -m state --state NEW -j LOG --log-prefix "new_connection " --log-level 7
Run Code Online (Sandbox Code Playgroud)
但是,如果我添加另一个 IP 目的地(多播),那么我的规则变为:
-A OUTPUT ! -o lo ! --destination 127.0.0.1 ! --destination 239.192.0.0 -m state --state NEW -j LOG --log-prefix "new_connection " --log-level 7
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
multiple -d flags not allowed
Run Code Online (Sandbox Code Playgroud)
我的问题不是错误是什么意思,而是如何在我的规则中排除多个 IP 地址?两个条件
! --destination 127.0.0.1
Run Code Online (Sandbox Code Playgroud)
和
! --destination 239.192.0.0
Run Code Online (Sandbox Code Playgroud)
是相互排斥的,因此拥有两个规则实际上就像根本没有它们一样(更糟糕的是,因为我会得到将近两倍的日志)
那么有“and”运算符吗?
And*_*ese 11
对于此类问题,您可以定义新链并在它们之间跳转。例如,您可以添加一个链,LOGGING
并在该链的开头匹配那些您不想使用以下操作记录的数据包RETURN
:
$ iptables -N LOGGING
$ iptables -A LOGGING -d 127.0.0.0/8 -j RETURN
$ iptables -A LOGGING -d 239.192.0.0/16 -j RETURN
$ iptables -A LOGGING -j LOG
$ iptables -A OUTPUT -j LOGGING
Run Code Online (Sandbox Code Playgroud)
这样,所有通过OUTPUT
链的数据包将首先通过LOGGING
链,所有不为127.0.0.0/8
和的239.192.0.0/16
都将被记录,然后控制将返回到OUTPUT
.
归档时间: |
|
查看次数: |
9381 次 |
最近记录: |