在Windows 10和Windows 11上,你可以通过设置Windows防火墙来限制外网访问,同时保持局域网的访问不受影响。以下是具体操作步骤:
在Windows 10和Windows 11上,你可以通过设置Windows防火墙来限制外网访问,同时保持局域网的访问不受影响。以下是具体操作步骤:
方法 1:使用Windows防火墙设置限制
-
打开防火墙设置:
- 按
Win + R
打开运行对话框,输入wf.msc
并按回车,打开“Windows 防火墙高级安全”窗口。
- 按
-
创建新的出站规则:
- 在左侧菜单中,选择“出站规则”。
- 在右侧面板中,点击“新建规则”。
- 选择“自定义”,然后点击“下一步”。
-
选择要阻止的程序或端口:
- 你可以选择要限制访问的特定程序,或选择阻止特定端口。
- 例如,如果你想阻止所有外网访问,可以选择“所有程序”并继续。
-
设置阻止条件:
- 在“此规则应用于”的部分,选择“仅限此方向的连接”(即“出站连接”)。
- 在规则操作选择页面,选择“阻止连接”。
-
配置规则:
- 在配置规则时,可以设置仅允许局域网通信。例如,可以通过设置仅允许局域网IP(如
192.168.0.0/16
)的地址范围来确保局域网的设备仍然能够互相通信。 - 如果你要阻止的是所有的外网访问,确保没有选择允许外部IP范围,只有局域网IP(例如:
192.168.x.x
)。
- 在配置规则时,可以设置仅允许局域网通信。例如,可以通过设置仅允许局域网IP(如
-
完成并应用规则:
- 点击完成,完成设置后,你的Windows系统将限制外网的访问。
使用 PowerShell 来自动化 Windows 防火墙规则的设置,以下是一个示例代码,它将创建一个出站规则,允许局域网(LAN)通信并阻止外部网络访问:
PowerShell 脚本示例
powershellCopy Code# 定义局域网 IP 范围 $LANIPRange = "192.168.0.0/16" # 根据需要修改为你的局域网 IP 范围 # 创建出站规则:允许局域网通信 New-NetFirewallRule -DisplayName "Allow LAN Traffic" -Direction Outbound -Action Allow -LocalAddress $LANIPRange -Profile Any -Enabled True # 创建出站规则:阻止外网通信 New-NetFirewallRule -DisplayName "Block Internet Access" -Direction Outbound -Action Block -RemoteAddress "any" -Profile Any -Enabled True
脚本解释
-
定义局域网 IP 范围:
$LANIPRange
变量指定了允许访问的局域网地址范围。在此示例中,192.168.0.0/16
是一个常见的局域网 IP 范围,你可以根据你的实际局域网地址修改它。
-
允许局域网通信:
New-NetFirewallRule
创建一个新的防火墙规则,允许指定局域网范围的通信。-Direction Outbound
表示这是一个出站规则。-Action Allow
表示允许符合条件的流量。-LocalAddress $LANIPRange
指定局域网 IP 范围,确保只有该范围的设备可以通信。
-
阻止外网访问:
- 创建第二个规则来阻止所有出站流量访问外部网络。
-RemoteAddress "any"
表示所有外部 IP 地址。-Action Block
表示阻止符合条件的流量。
运行脚本
- 打开 PowerShell,确保以管理员身份运行。你可以右键点击 PowerShell 图标并选择“以管理员身份运行”。
- 复制并粘贴上面的代码到 PowerShell 窗口中,然后按回车执行。
调试和验证
- 执行后,你可以通过
Get-NetFirewallRule
命令来查看和验证这些防火墙规则是否已经成功创建。 - 可以尝试访问外网网站,验证是否被阻止,同时在局域网中的设备应能正常互通。
这样,你就通过 PowerShell 实现了对外网访问的限制,并允许局域网通信。
CMD 批处理文件中自动化 Windows 防火墙规则的设置,创建出站规则以允许局域网通信并阻止外部网络访问,你可以使用
netsh
命令。netsh
是 Windows 提供的一个命令行工具,可以用来配置和管理网络设置,包括防火墙规则。下面是一个示例的批处理脚本,它可以实现你的要求:
批处理脚本示例
Copy Code@echo off REM 设置局域网 IP 范围 set LAN_IP_RANGE=192.168.0.0/16 REM 创建允许局域网通信的出站规则 netsh advfirewall firewall add rule name="Allow LAN Traffic" dir=out action=allow remoteip=%LAN_IP_RANGE% profile=any enable=yes REM 创建阻止外部网络通信的出站规则 netsh advfirewall firewall add rule name="Block Internet Access" dir=out action=block remoteip=any profile=any enable=yes echo 防火墙规则已成功设置 pause
脚本说明
-
定义局域网 IP 范围:
set LAN_IP_RANGE=192.168.0.0/16
设置局域网 IP 地址范围。你可以根据自己的网络配置修改该范围。此示例中的192.168.0.0/16
是一个常见的私有网络地址。
-
创建允许局域网通信的出站规则:
netsh advfirewall firewall add rule name="Allow LAN Traffic" dir=out action=allow remoteip=%LAN_IP_RANGE% profile=any enable=yes
添加一个防火墙规则,允许通过指定的局域网 IP 范围(remoteip=%LAN_IP_RANGE%
)的出站通信。
-
创建阻止外部网络通信的出站规则:
netsh advfirewall firewall add rule name="Block Internet Access" dir=out action=block remoteip=any profile=any enable=yes
添加一个防火墙规则,阻止所有出站通信到任何外部网络(remoteip=any
)。
-
完成提示:
echo 防火墙规则已成功设置
用于输出成功设置防火墙规则的信息。pause
用于暂停脚本执行,以便你可以看到命令行窗口中的输出。
使用方法
- 将上述代码保存为
.bat
文件(例如:setup_firewall_rules.bat
)。 - 右键点击批处理文件并选择“以管理员身份运行”,因为修改防火墙规则需要管理员权限。
调试和验证
-
你可以通过以下命令来查看防火墙规则是否已正确设置:
Copy Codenetsh advfirewall firewall show rule name="Allow LAN Traffic" netsh advfirewall firewall show rule name="Block Internet Access"
-
尝试访问外网以验证外部网络访问是否被阻止,同时检查局域网中的设备是否可以正常通信。
这样,你就可以通过批处理文件自动化防火墙规则的设置,允许局域网通信并阻止外部网络访问。
-
- 点击完成,完成设置后,你的Windows系统将限制外网的访问。
方法 2:使用网络共享和限制Internet访问
如果你有多个计算机,并且通过共享网络连接来上网,你可以通过以下方式来限制外网访问:
-
设置Internet共享:
- 你可以通过“网络共享中心”设置将Internet连接共享到局域网内的其他设备。
- 通过这种方法,限制主机访问外网的同时,局域网内的其他计算机可能不会受影响。
-
配置路由器规则:
- 如果你有一个路由器,可以在路由器的防火墙或访问控制设置中,限制来自计算机的外网流量,但允许局域网流量。这样可以避免修改Windows设置,直接通过路由器控制。
方法 3:使用第三方软件
除了Windows自带的防火墙之外,你也可以使用第三方网络管理软件,如 NetLimiter 或 GlassWire,这些软件可以让你精细地控制每个程序的网络访问,包括外网与局域网的区分。
通过这些方法,你可以有效地在Windows 10或11中实现限制外网访问,同时保持局域网通信不受影响。