0

我正在玩通过 libnetfilter_conntrack 捕获数据包

到目前为止,除了 Ubuntu 18.04 之外,以下代码已在 Ubuntu 上运行。

尽管浏览或访问 ssh,但没有输出。

你知道为什么吗???

static int cb(enum nf_conntrack_msg_type eMsgType,
                struct nf_conntrack *psConntrack,
                void *pvData)
{
    char buf[1024] = {0,};

    nfct_snprintf(buf, sizeof(buf), psConntrack, eMsgType, NFCT_O_DEFAULT, NFCT_OF_TIME);
    printf("%s\n", buf);

    return NFCT_CB_STOP;
}
int main()
{
    struct nfct_handle *pSNfctHandle;

    pSNfctHandle = nfct_open(CONNTRACK, NFCT_ALL_CT_GROUPS);
    nfct_callback_register(pSNfctHandle, NFCT_T_ALL, cb, NULL);

    nfct_catch(pSNfctHandle);
    nfct_close(pSNfctHandle);

    return 0;
}

我在添加 nf_conntrack、nf_conntrack_ipv4、nf_conntrack_netlink 内核模块后进行了测试。

4

2 回答 2

0

ufw enable太强大了:)

而不是命令:

ufw启用

添加以下防火墙规则:

/sbin/iptables -t filter -I OUTPUT  1 -p tcp -m conntrack --ctstate RELATED,ESTABLISHED
/sbin/ip6tables -t filter -I OUTPUT  1 -p tcp -m conntrack --ctstate RELATED,ESTABLISHED

如有必要,您还可以使用 INPUT 和 FORWARD 链

于 2019-11-13T14:59:32.770 回答
0

我们在 18.04 遇到了类似的问题。到目前为止,唯一已知的解决方案是命令“ufw enable”,但它非常高级。很高兴知道更多原子操作以在 Ubuntu 18.x 上重新启用 netfilter 功能。建议更受欢迎。

于 2018-06-25T08:59:07.020 回答