今天是个好日子。
我们假设下一个configuration:我们有一个公网IP地址为1.2.3.4的路由器(外部接口 – wan)。
如果由于某种原因,路由器收到一个伪造的源IP地址的数据包,它与我们的外部接口的公共地址相同,就netfilter子系统而言,这个数据包将被分配什么链?
这个数据包的目标IP地址可以是任何内部局域网/另一个外部地址。
将这个数据包视为路由器本身(OUTPUT链)或转发数据包(FORWARD链)的输出数据包?
如果任意目的地址与路由器不一致,路由器的路由系统根据数据包的目的地址决定转发,那么数据包将通过filter表的FORWARD链。
要将数据包放入OUTPUT链,您的路由器必须自己创build数据包。 在ipchains古代,行为是不同的。 如果你不用iptables尝试花哨的东西,比如把伪造的数据包NFQUEUE给用户空间,并且编写自己的工具(从内核的angular度来看:生成一个新数据包),那么你正在说的数据包关于永远不应该在OUTPUT链中结束。
请注意,内核的rp_filter (反向pathfilter)可能已经在欺骗数据包到达filter表的FORWARD链之前丢弃了该数据包。
另外请注意:有些人喜欢在做出路由决定之前执行欺骗保护规则,即在raw表的PREROUTING链中。