这些是我在失去连接时使用的命令。
sudo iptables -I INPUT -j NFQUEUE --queue-num 0
sudo iptables -I OUTPUT -j NFQUEUE --queue-num 0
谁能告诉我为什么?
答案1
iptables' 的文档NF队列告诉:
--queue-bypass
默认情况下,如果没有用户空间程序正在监听 NFQUEUE,然后 所有要排队的数据包都被丢弃。使用此选项时,NFQUEUE 规则的行为类似于 ACCEPT,并且数据包将移至下一个表。
因此,这意味着您应该运行一个程序来接收通过该队列发送的数据包,但没有这样的进程在运行。
这是解释如何使用 NFQUEUE 的链接,包括示例代码(不能按原样使用):
Linux 及更高版本!使用 NFQUEUE 和 libnetfilter_queue
请注意,示例中使用的一些函数是已弃用。
同时,如果您不想在设置此类程序或工具时失去连接但发生错误,您可以添加--queue-bypass
这样的选项(但根据实现使用不同的队列可能是有意义的):
sudo iptables -I INPUT -j NFQUEUE --queue-num 0 --queue-bypass
sudo iptables -I OUTPUT -j NFQUEUE --queue-num 0 --queue-bypass
唉,这意味着你的过滤器输入和输出链将被完全绕过,因为NF队列会表现为接受,而NF队列进程可以使用判决重新注入数据包以进行进一步处理NF_重复和标记,例如同一博客中的另一个链接中所述: