Windows系统不关闭防火墙,允许某个端口的访问怎么设置?
在 Windows 系统 中,若需在 不关闭防火墙 的前提下允许某个端口的访问,可以通过 Windows Defender 防火墙 的 入站规则(Inbound Rules) 进行配置。以下是详细步骤:
一、通过图形界面配置(推荐)
步骤 1:打开 Windows 防火墙高级设置
- 按
Win + R打开运行窗口,输入:
firewall.cpl
- 在打开的 Windows Defender 防火墙 窗口中,点击左侧的 “高级设置”。
步骤 2:创建入站规则
- 在 “高级安全 Windows Defender 防火墙” 窗口中,点击左侧的 “入站规则”。
- 在右侧操作栏点击 “新建规则”,打开 “新建入站规则向导”。
步骤 3:选择规则类型
- 选择 “端口”,点击 “下一步”。
- 选择 “TCP” 或 “UDP”(根据需要开放的协议),并输入要开放的 本地端口号(如
80、3306)。
- 示例:允许
TCP 3306端口(MySQL)。 - 输入格式:
3306或80,443(多个端口用逗号分隔)。
- 点击 “下一步”。
步骤 4:允许连接
- 选择 “允许连接”,点击 “下一步”。
- 选择适用的网络类型(通常全选 域、专用、公用),点击 “下一步”。
- 为规则命名(如
Allow MySQL Port 3306),点击 “完成”。
步骤 5:验证规则
- 在 “入站规则” 列表中,找到新创建的规则,确认其状态为 启用。
- 右键点击规则,选择 “属性”,可进一步配置或禁用规则。
二、通过命令行配置(适用于高级用户)
方法 1:使用 netsh 命令
netsh advfirewall firewall add rule name="Allow Port 3306" dir=in action=allow protocol=TCP localport=3306
- 参数说明:
name:规则名称。dir=in:入站规则。action=allow:允许连接。protocol=TCP:协议类型(可选TCP或UDP)。localport=3306:本地端口号。
方法 2:使用 PowerShell
New-NetFirewallRule -DisplayName "Allow Port 3306" -Direction Inbound -LocalPort 3306 -Protocol TCP -Action Allow
三、验证端口是否开放
方法 1:使用 telnet 测试
- 打开命令提示符(CMD):
telnet <服务器IP> <端口号>
- 示例:
telnet 192.168.1.100 3306 - 如果连接成功,说明端口已开放。
方法 2:使用 PowerShell 测试
Test-NetConnection <服务器IP> -Port <端口号>
- 示例:
Test-NetConnection 192.168.1.100 -Port 3306
四、常见问题与注意事项
- 规则未生效:
- 检查规则是否被启用(右键规则 → 启用)。
- 确保规则的网络类型与当前连接类型匹配(域/专用/公用)。
- 第三方防火墙冲突:
- 如果安装了第三方防火墙(如 360、火绒),需在其中单独配置端口规则。
- 云服务器安全组:
- 若使用云服务器(如 AWS、阿里云),还需在云平台的安全组中开放对应端口。
- 服务监听问题:
- 确保目标服务(如 MySQL、Nginx)已正确配置并监听目标端口。
- 检查服务状态:
netstat -ano | findstr :<端口号>
- 安全建议:
- 仅开放必要的端口,避免暴露不必要的服务。
- 使用最小权限原则,限制访问来源(可通过高级规则设置 IP 范围)。
五、示例:允许 3389 端口(远程桌面)
图形界面配置
- 按上述步骤创建规则,协议选择
TCP,端口填写3389。 - 确保规则名称为
Allow RDP Port 3389。
命令行配置
netsh advfirewall firewall add rule name="Allow RDP Port 3389" dir=in action=allow protocol=TCP localport=3389
通过以上步骤,您可以在 不关闭 Windows 防火墙 的情况下,安全地允许特定端口的访问。操作完成后,务必验证端口连通性并确保服务正常运行。
