我开发了一个应用程序来检查到达linux机器的数据包。
我想在NFQUEUE中发送所有传入的连接数据包,只发送传入的连接数据包。对于由客户端发起的连接,不仅--state NEW
而且--state ESTABLISHED, RELATED
。
最后一件事,为了对所有端口进行tcp握手,我需要这条规则另外工作:
iptables -A PREROUTING -t nat -p tcp -match multiport! --dport 64646 -j REDIRECT --to-ports 1234
非常感谢任何帮助。
谢谢!
答案 0 :(得分:0)
如果某人感兴趣,我找到了解决方案。
# Accept our ssh on a modified port
iptables -A PREROUTING -t raw -p tcp --dport 64646 -j ACCEPT
# Mark all packets of incoming NEW connection with mark 1 (netfilter connmark)
iptables -A PREROUTING -t mangle -m state --state NEW -j CONNMARK --set-mark 1
# Push into nfqueue all marked packets (netfilter nfqueue)
iptables -A PREROUTING -t mangle -m connmark --mark 1 -j NFQUEUE --queue-num 0
# Redirect all incoming connections to the userland listener to make TCP handshake
iptables -A PREROUTING -t nat -p tcp --match multiport ! --dport 64646 -j REDIRECT --to-ports 1234
最后所有传入的数据包都进入nfqueue但是如果我在机器上工作(更新,升级,安装......),则数据包与规则不匹配。 此外,重定向在nfqueue决定之后应用,因此我记录了基本端口(而不是1234)。