llccd
llccd
试试我改的 https://github.com/llccd/netfilter-full-cone-nat/tree/dev ,原理是把`nat_mapping`里面的`ifindex`改成出接口IP,同时合并@tingjunli的patch,这样出接口改变或出接口IP改变就应该都没问题了。 Update: 在`fullconenat_tg_init`里面调用一下`nf_nat_masquerade_inet_register_notifiers`好像就行了
@taolu-soft 你的内核版本是多少,是模块加载不上还是运行崩溃了,能不能提供stacktrace? 另外,解决CT表无法及时删除的最简单方法是 1. 添加赋值ifindex的patch 2. 确保MASQUERADE模块已加载,或者MASQUERADE编译进内核(可以不添加MASQUERADE规则,但模块要加载)
这样好像就是将MASQUERADE模块里的notifier重新实现了一遍,如果MASQUERADE模块同时加载的话,相同代码的功能就会执行两遍。 另外,不依赖MASQUERADE是不可能的,如果你在编译内核时把MASQUERADE禁用,`nat`结构体里面根本就不会有`masq_index`这个成员。 我觉得使用下面的方法更好,调用下面两个函数可以直接注册和MASQUERADE模块相同的notifier,而且在与MASQUERADE模块同时加载时只会注册一次: - 对于>=5.2版本的内核,可以使用`nf_nat_masquerade_inet_register_notifiers()`, - 对于=3.18版本的内核,可以使用`nf_nat_masquerade_ipv4_register_notifier()` - 对于3.18版本以下的内核,只能重新实现notifier或者加载MASQUERADE模块