我面临一个奇怪的问题。我试图在我的mangle表的输出链中执行以下操作
iptables -t mangle -D OUTPUT -p gre -d 2.2.2.0/24 -j MARK --set-mark <somemark>
当我从shell执行上面的命令时,它会很好,并将上面的规则添加到mangle表中的输出链。
但是,当我尝试使用子进程模块实现相同的操作时,我没有收到任何错误,但规则未添加到mangle表的输出链中。
代码:
p = subprocess.Popen(["iptables", "-t", "mangle", "-I",
"OUTPUT", "--dst", "2.2.2.0/24",
"-p", "gre", "-j", "MARK",
"--set-mark", "0x04"])
p.wait()
另一件让我感到不快的是,当我将协议更改为tcp / udp / esp时,它可以正常工作。当协议是gre时,我只面对这个。我尝试使用GRE,47和gre。
有谁可以让我知道我错过了什么?
当我添加到POSTROUTING链时,只需更新相同的规则,它就会被添加。我不确定将proto 47添加到OUTPUT链有什么特别之处?