Windows Server 限制特定应用仅访问内网需配置两条出站规则:先创建允许规则匹配私有IP段(如10.0.0.0/8),再创建阻止规则匹配“任何IP”并排除该内网段,两者均指定程序路径及相同网络配置文件,确保启用且无冲突。
在 windows server 中,限制特定应用程序只能访问内网(如 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16 等私有地址段),核心是配置出站规则(outbound rules),并精确指定目标 ip 范围。windows 防火墙默认允许所有出站连接,因此必须显式创建“阻止”规则来拦截外网流量,同时保留对内网的放行。
明确区分:先放行内网,再阻止外网
不能只加一条“阻止所有外网”的规则——那样会误拦内网通信。正确逻辑是:
- 新建一条允许出站规则,仅针对目标 IP 是内网地址段(如 10.0.0.0/8)的连接,指定该应用程序路径
- 再新建一条阻止出站规则,匹配所有其他目标 IP(即“除内网外的所有地址”),同样指定该程序
- 两条规则都需设置相同的作用域(Domain/Private/Public)且优先级高于默认策略
- 确保规则中“配置文件”与服务器实际网络类型一致(通常为 Domain 或 Private)
图形界面操作步骤(推荐用于首次配置)
以限制 C:\App\backup.exe 只能访问 10.x.x.x 网段为例:
- 按 Win + R,输入
wf.msc打开高级安全防火墙 - 左侧选“出站规则”,右侧点“新建规则…” → 选择“程序” → 下一步
- 输入程序完整路径:
C:\App\backup.exe→ 下一步 - 选择“允许连接” → 下一步
- 在“作用域”页,“远程 IP 地址”选“下列 IP 地址”,点击“添加”,填入:
10.0.0.0 - 10.255.255.255(支持 CIDR 的系统可直接输10.0.0.0/8)→ 下一步 - 勾选适用的网络配置文件(Domain/Private)→ 输入名称如“Allow backup.exe to 10.x.x.x” → 完成
- 重复新建规则流程,这次选择“阻止连接”,作用域设为“任何 IP 地址”,但勾选“除外” → 添加同上内网段 → 名称如“Block backup.exe to non-10net”
命令行快速配置(适合批量或脚本化)
使用 netsh advfirewall 可一键部署,注意顺序不影响生效(防火墙按规则匹配优先级执行,精确匹配优先于泛化匹配):
- 放行内网:
netsh advfirewall firewall add rule name="Allow backup to 10net" dir=out action=allow program="C:\App\backup.exe" remoteip=10.0.0.0/8 - 阻止其余地址:
netsh advfirewall firewall add rule name="Block backup to internet" dir=out action=block program="C:\App\backup.exe" remoteip=any enable=yes - 验证是否生效:
netsh advfirewall firewall show rule name="Allow backup to 10net"
关键细节提醒
避免常见失效原因:
- 规则未启用:创建后检查状态是否为“已启用”,图形界面中规则名前有勾选标记
- 程序路径错误:必须是启动时实际加载的 .exe 绝对路径,不支持通配符或快捷方式
- 多进程场景:若程序会调用子进程(如 PowerShell 脚本启动的后台任务),需单独为子进程添加规则
- IPv6 干扰:如服务器启用 IPv6,建议同步添加对应 IPv6 内网段(如
fd00::/8)或禁用 IPv6 避免绕过 - 规则冲突:若已有全局“允许所有出站”规则,新阻止规则仍有效(阻止优先级高于允许)


















