今天是个好日子。
让我们假设下一个配置:我们有一个公共 IP 地址为 1.2.3.4(外部接口 - wan)的路由器。
如果由于某种原因,路由器收到一个带有伪造源 IP 地址的数据包,该地址与我们外部接口的公共地址相同,那么就 netfilter 子系统而言,该数据包将被分配到哪条链?
此数据包的目标 IP 地址可以是任何内容,内部局域网/另一个外部地址。
这个数据包会被视为路由器本身的输出数据包(OUTPUT 链)还是转发的数据包(FORWARD 链)?
答案1
如果任意目标地址与路由器不同,并且路由器的路由系统做出决定(基于数据包的目标地址)转发它,那么该数据包将通过表FORWARD
的链移动filter
。
要将数据包放入OUTPUT
链中,路由器必须自行创建数据包。在以前ipchains
,行为有所不同。如果您不尝试使用iptables
,例如NFQUEUE
将欺骗的数据包发送到用户空间并编写自己的工具从用户空间路由数据包(从内核的角度来看:生成新数据包),您所说的数据包就永远不会进入链中OUTPUT
。
请注意rp_filter
内核的反向路径过滤器 (reverse path filter) 可能已经在欺骗数据包到达表链之前将其FORWARD
丢弃filter
。
另请注意:有些人更喜欢在做出路由决策之前(即在表PREROUTING
的链中)实施他们的欺骗保护规则raw
。