必须绕过默认“允许所有入站连接”策略,通过图形界面新建入站规则(指定端口+IP)、命令行锁死再放行(支持多IP)、或修改现有规则作用域三种方式,实现仅允许特定IP访问本机指定端口。

要在Windows上设置防火墙只允许特定IP地址访问本机,必须绕过默认“允许所有入站连接”的宽松策略,否则远程服务(如开发接口、远程桌面、数据库)会暴露在局域网甚至公网中,极易被扫描利用。
方法一:图形界面新建入站规则(适合单端口+单IP)
第一步:打开「控制面板 → 系统和安全 → Windows Defender 防火墙 → 高级设置」,确保以管理员身份运行;若提示权限不足,请右键快捷方式选择“以管理员身份运行”。
第二步:左侧点击「入站规则」→ 右侧「新建规则」→ 选择「端口」→ 下一步。
第三步:协议选「TCP」,本地端口填你要保护的端口号(例如8080或3389),继续下一步。
第四步:操作选「允许连接」→ 下一步。
第五步:配置「作用域」→ 在「远程IP地址」处勾选「下列IP地址」→ 点击「添加」→ 输入目标IP(如192.168.1.100)→ 确定→ 下一步。
第六步:命名规则(如“Allow_8080_From_192.168.1.100”),勾选「应用此规则」→ 完成。此时该端口仅对该IP响应,其余所有IP尝试连接都会被静默丢弃。
方法二:命令行一键锁定(推荐用于多IP或全端口放行)
这一步必须用管理员权限打开 PowerShell 或 CMD,普通用户执行会报错且无提示。
先执行全局策略锁死:
netsh advfirewall set allprofiles firewallpolicy blockinbound,blockoutbound
再添加放行规则(支持多个IP,用英文逗号分隔):
netsh advfirewall firewalladdrule name="Dev_Allow" dir=in action=allow protocol=ANY remoteip=192.168.1.100,10.0.0.5 profile=any enable=yes
【注意:执行第一条命令后,所有未显式放行的入站/出站连接立即中断,包括你正在使用的远程桌面、SSH、文件共享等】务必确保第二条命令能成功执行,否则可能失去远程控制能力。
方法三:直接修改现有规则(快速适配已启用的服务)
适用于已存在“远程桌面(TCP-In)”“World Wide Web Services (HTTP-In)”等默认规则,不想重建,只想收紧访问范围。
在「高级安全 Windows Defender 防火墙」中,展开「入站规则」→ 找到对应服务规则(如名称含“Remote Desktop”或“HTTP”)→ 右键「属性」→ 切换到「作用域」选项卡。
取消勾选「任何IP地址」→ 勾选「下列IP地址」→ 点击「添加」→ 输入允许的IP或IP段(如192.168.1.0/24表示整个C类子网)→ 确定保存。
这条操作不新增规则,而是复用系统原有规则逻辑,避免规则冗余冲突。但要注意:若原规则动作是“允许”,而你没改作用域,它依然对所有IP生效。











