我正在尝试设置 Windows 防火墙来阻止默认公共配置文件,但是当出站活动设置为默认阻止时,尽管包括允许 DHCP 和 DNS 规则,我还是遇到了困难。
故障通常会导致无法连接无线服务,也无法访问互联网。换句话说,路由器关联和 DHCP 可能会发生,但无法提供完整的无线功能和网络访问。
更糟糕的是,一旦发生故障,即使恢复了有效的防火墙策略,无线适配器也经常无法运行,需要禁用并重新启用适配器,然后重新启动计算机才能恢复正常的无线功能。据我所知,在 Windows 中,netsh 用于配置防火墙和 TCP/IP 堆栈以及适配器状态,而我使用过的其他操作系统则不是这样。
在连接操作之前,整个网络将保持在 Windows GUI 中可见。失败后,网络和 wifi 图标将消失,并且飞行模式图标将保持停用状态且不可用。
当在高级防火墙 GUI 或 .bat 脚本(我在此处包含)中将防火墙设置为默认阻止时,就会出现这些结果。
这些结果与两个公共无线位置进行了检查,以确保没有特定的无线服务故障。
请注意,为了进一步避免一些简单的故障,在所有情况下都将 DHCP 端口限额开放到 67-68 以进行测试,并且包括 DNS 的 UDP 和 TCP 规则。
日志显示 DHCP 和 DNS 出现了无法解释的丢弃操作。
请注意,从默认阻止到特定允许规则的评估顺序不被认为是问题,如果情况确实如此,我会感到惊讶。这里为所有数据包指定了默认值,我假设显式允许规则是出站例外,但对于是否应该如此存在一些困惑。有关语句示例,请参阅 Superuser 上的以下两个答案。第二个示例与我自己的策略测试非常相似,它们完全破坏了无线功能,但据称可以正常工作。
配置 Windows 防火墙以仅允许 DHCP 客户端和特定的远程 IP
如何阻止除防火墙白名单中的应用程序之外的所有内容(所有传入和传出的互联网访问)?
Bat脚本规则和日志摘录如下。
REM Set policy for all profiles:
netsh advfirewall set allprofiles firewallpolicy blockinbound,blockoutbound
REM Core networking in:
netsh advfirewall firewall add rule NAME="CoreNetworking_DHCP-UDP" dir=in interfacetype=wireless ACTION=ALLOW protocol=UDP remoteip=dhcp localport=68 remoteport=67 program="%WINDIR%\System32\svchost.exe" service=dhcp ENABLE=YES
netsh advfirewall firewall add rule NAME="CoreNetworking_DNSCache-UDP" dir=in interfacetype=wireless ACTION=ALLOW protocol=UDP remoteip=dns remoteport=53 program="%WINDIR%\System32\svchost.exe" service=dnsclient ENABLE=YES
netsh advfirewall firewall add rule NAME="CoreNetworking_DNSCache-TCP" dir=in interfacetype=wireless ACTION=ALLOW protocol=TCP remoteip=dns remoteport=53 program="%WINDIR%\System32\svchost.exe" service=dnsclient ENABLE=YES
REM Core networking out:
netsh advfirewall firewall add rule NAME="CoreNetworking_DHCP-UDP" dir=out interfacetype=wireless ACTION=ALLOW protocol=UDP remoteip=dhcp localport=67 remoteport=68 program="%WINDIR%\System32\svchost.exe" service=dhcp ENABLE=YES
netsh advfirewall firewall add rule NAME="CoreNetworking_DNSCache-UDP" dir=out interfacetype=wireless ACTION=ALLOW protocol=UDP remoteip=dns remoteport=53 program="%WINDIR%\System32\svchost.exe" service=dnsclient ENABLE=YES
netsh advfirewall firewall add rule NAME="CoreNetworking_DNSCache-TCP" dir=out interfacetype=wireless ACTION=ALLOW protocol=TCP remoteip=dns remoteport=53 program="%WINDIR%\System32\svchost.exe" service=dnsclient ENABLE=YES
2023-04-21 17:59:11 DROP UDP 0.0.0.0 255.255.255.255 68 67 0 - - - - - - - SEND
2023-04-21 17:59:11 DROP UDP [redacted] 8.8.8.8 49915 53 0 - - - - - - - SEND
2023-04-21 17:43:50 DROP UDP 0.0.0.0 255.255.255.255 68 67 0 - - - - - - - SEND
2023-04-21 17:43:50 DROP UDP [redacted] 8.8.8.8 64584 53 0 - - - - - - - SEND