netfilter预路由挂钩中的源nat

| 我们正在开发自己的内核模块,该模块在netfilter预路由钩子中执行高级源代码。从Linux内核2.6.32(Ubuntu 10.04)升级到2.6.35(Ubuntu 10.04 lucid-back-ports)后,似乎SNATted数据包只是简单地丢弃在Linux内核中。 我知道从不建议在一般用途的“预路由”挂钩(Netfilter邮件列表)中进行SNAT,但是仍有一些原因使我们更愿意在做出实际的路由决定之前进行源NAT。 有没有人开发过在2.6.35+ linux内核的netfilter预路由钩子中执行SNAT的内核模块的经验?到底应该在linux-kernel / netfilter-kernel-module代码中进行哪些更改,以便SNATted数据包不会被丢弃?也许对于2.6.35+ Linux内核而言,预路由中的SNAT根本不是一个好主意,我们应该更好地使用nf_marks进行路由决策,而后路由中是否需要SNAT? 我在X86_64上将Ubunut 10.04与反向移植的Linux内核(2.6.35)一起使用。     
已邀请:
从找到丢弃数据包的确切行开始。     
更新源IP后,您是否重新计算了所有校验和?请记住,您还需要更新TCP / UDP校验和,因为它们基于src / dst IP地址。     

要回复问题请先登录注册