在Windows 10和Windows 11上,你可以通过设置Windows防火墙来限制外网访问,同时保持局域网的访问不受影响。以下是具体操作步骤:
方法 1:使用Windows防火墙设置限制
打开防火墙设置:
按 Win + R 打开运行对话框,输入 wf.msc 并按回车,打开“Windows 防火墙高级安全”窗口。
创建新的出站规则:
在左侧菜单中,选择“出站规则”。
在右侧面板中,点击“新建规则”。
选择“自定义”,然后点击“下一步”。
选择要阻止的程序或端口:
你可以选择要限制访问的特定程序,或选择阻止特定端口。
例如,如果你想阻止所有外网访问,可以选择“所有程序”并继续。
设置阻止条件:
在“此规则应用于”的部分,选择“仅限此方向的连接”(即“出站连接”)。
在规则操作选择页面,选择“阻止连接”。
配置规则:
在配置规则时,可以设置仅允许局域网通信。例如,可以通过设置仅允许局域网IP(如192.168.0.0/16)的地址范围来确保局域网的设备仍然能够互相通信。
如果你要阻止的是所有的外网访问,确保没有选择允许外部IP范围,只有局域网IP(例如:192.168.x.x)。
完成并应用规则:
点击完成,完成设置后,你的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 Code
netsh advfirewall firewall show rule name="Allow LAN Traffic"
netsh advfirewall firewall show rule name="Block Internet Access"
尝试访问外网以验证外部网络访问是否被阻止,同时检查局域网中的设备是否可以正常通信。
这样,你就可以通过批处理文件自动化防火墙规则的设置,允许局域网通信并阻止外部网络访问。
方法 2:使用网络共享和限制Internet访问
如果你有多个计算机,并且通过共享网络连接来上网,你可以通过以下方式来限制外网访问:
设置Internet共享:
你可以通过“网络共享中心”设置将Internet连接共享到局域网内的其他设备。
通过这种方法,限制主机访问外网的同时,局域网内的其他计算机可能不会受影响。
配置路由器规则:
如果你有一个路由器,可以在路由器的防火墙或访问控制设置中,限制来自计算机的外网流量,但允许局域网流量。这样可以避免修改Windows设置,直接通过路由器控制。
方法 3:使用第三方软件
除了Windows自带的防火墙之外,你也可以使用第三方网络管理软件,如 NetLimiter 或 GlassWire,这些软件可以让你精细地控制每个程序的网络访问,包括外网与局域网的区分。
通过这些方法,你可以有效地在Windows 10或11中实现限制外网访问,同时保持局域网通信不受影响。