我的 U-Verse 调制解调器有一种称为“反射 ACL”的东西,描述如下
反射 ACL:启用 IPv6 时,您可以启用反射访问控制列表来拒绝入站 IPv6 流量,除非此流量来自返回的传出数据包(通过防火墙规则配置的除外)。
这似乎是一种很好的方法,可以避免在路由器后面的每台计算机上维护防火墙,这些计算机都会获得 IPv6 地址。这听起来就像 NAT,对于我的小型家庭网络来说,这就是我现在想要的。
但是现在我的调制解调器作为路由器很差劲,所以我正在配置 OpenBSD 路由器来做这件事。我已支持 IPv6 等,我的 OpenBSD 路由器将通过 rtadvd 分发 IPv6 地址。现在我想阻止人们通过 IPv6 立即访问我的本地网络。
我如何在 OpenBSD 5.0 中使用 pf 最好地执行类似反射 ACL 的操作?
答案1
这将做到:
pass on $int_if all
pass out on $ext_if all
block in on $ext_if all
这将传递除外部接口之外的所有流量,在外部接口上它将丢弃所有传入数据包。OpenBSD 默认是有状态的,因此如果数据包与现有连接匹配,它将允许数据包进入。
答案2
在我看来,这听起来像是状态过滤。
这OpenBSD pf.conf 手册页关于保持状态的说法如下:
默认情况下,pf(4) 会按状态过滤数据包:数据包首次与通过规则匹配时,会创建一个状态条目。数据包过滤器会检查每个数据包,看它是否与现有状态匹配。如果匹配,则数据包通过而不评估任何规则。连接关闭或超时后,状态条目会自动删除。
pf 默认会保持状态。