我需要设置一些规则来阻止网络流量,包括 IPv4 和 IPv6。根据情况,路由应该是黑洞或无法访问的。在 Linux 和 MacOSX 中似乎很简单,添加路由时有特定的关键字/标志(Linux 中的“黑洞”、“无法访问”,MacOSX 中的标志“B”或“R”)。我的问题是 Windows。
我找到了 Blackhole 的解决方案,你可以看看这里例如,仅举一个网站。基本上将流量发送到环回接口。这是针对 IPv4 的。对于 IPv6,我使用类似的技巧,使用环回接口,但0100::1
指向丢弃前缀,引用:
“0100::/64 作为‘Internet 协议版本 6 地址空间’中的仅丢弃前缀”
那么,我的问题是:
- 我写的解决方案是“标准方法”吗?有没有更好的方法来实现这一点?
- 如何在 Windows 中实现“不可达”路由而不是“黑洞”?
- [错误,请参阅编辑]我也可以使用防火墙,有时我读到它是 Windows 中最好的解决方案。例如,我可以将过滤器与操作放在一起
FWP_ACTION_BLOCK
,请参阅FWPM_ACTION0 结构。但是这个路由会不会变成黑洞?或者无法到达?
感谢大家。
编辑:
防火墙规则似乎不是正确的解决方案。我测试过,当使用路由0100::1
通过环回接口时,如果尝试使用 IPv6 进行 ping,我会收到错误General failure
,而当使用阻止防火墙规则进行 ping 时,我会收到超时(这正是我所不希望的)。但我仍然无法像Route Unreachable
在 MacOSX 和 Linux 中那样收到错误...
答案1
您可以使用未分配的本地 IP 地址(示例中为 192.168.1.100)执行所需的操作。请注意,在这两种情况下,您都是从 cmd 运行命令。假设您想要对 8.8.4.4 进行空路由:
对于 Windows XP、Server 2003
route add 8.8.4.4 mask 255.255.255.255 192.168.1.100 metric 1 -p
Windows 7、Server 2008
route add 8.8.4.4 mask 255.255.255.255 192.168.1.100 if 1 -p
如果需要,可以使用route delete
命令删除该路线。