我们正在开发我们自己的内核模块,在netfilter预出钩子中做高级源nat。在从Linux2.6.32(Ubuntu10.04)升级到2.6.35 (Ubuntu10.04清晰的后端端口)之后,似乎SNATted包只是简单地丢弃在Linux内核中。
我知道SNAT从来没有被建议在(Netfilter邮件列表)中执行,但是在做出实际的路由决定之前,我们仍然有一些理由希望做源纳特。
有开发2.6.35+ linux内核的内核模块的经验吗?在linux内核/netfilter内核模块代码中到底应该修改什么,这样才不会丢弃SNATted数据包?对于2.6.35+ Linux内核来说,提前执行SNAT可能是个坏主意,我们应该更好地使用nf_marks进行路由决策,并在postrouting?中执行SNAT。
我在X86_64上使用的是Ubunut 10.04和支持移植的Linux内核(2.6.35)。
发布于 2011-04-15 15:57:56
首先要找出丢包的确切线。
发布于 2015-09-30 01:53:19
更新源IP后,是否重新计算了所有校验和?请记住,您还需要更新TCP/UDP校验和,因为它们基于src/dst IP地址。
https://stackoverflow.com/questions/5669032
复制相似问题