如何将所有传入的连接数据包传递给 NFQUEUE
How to pass to NFQUEUE all incoming connection packets
我开发了一个应用程序来检查到达 linux 机器的数据包。
我想在 NFQUEUE 中发送所有传入的连接数据包,并且只发送传入的连接数据包。对于由客户端发起的连接,不仅 --state NEW
而且 --state ESTABLISHED, RELATED
。
最后一件事,要为所有端口进行 tcp 握手,我还需要这条规则才能起作用:
iptables -A PREROUTING -t nat -p tcp -match multiport! --dport 64646 -j REDIRECT --to-ports 1234
如有任何帮助,我们将不胜感激。
谢谢!
如果有人感兴趣,我找到了解决方案。
# 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)。
我开发了一个应用程序来检查到达 linux 机器的数据包。
我想在 NFQUEUE 中发送所有传入的连接数据包,并且只发送传入的连接数据包。对于由客户端发起的连接,不仅 --state NEW
而且 --state ESTABLISHED, RELATED
。
最后一件事,要为所有端口进行 tcp 握手,我还需要这条规则才能起作用:
iptables -A PREROUTING -t nat -p tcp -match multiport! --dport 64646 -j REDIRECT --to-ports 1234
如有任何帮助,我们将不胜感激。
谢谢!
如果有人感兴趣,我找到了解决方案。
# 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)。