windows怎么关掉对应的端口

老刘

Windows 怎么关掉对应的端口?一篇讲清楚端口关闭方法

在 Windows 里,很多人说的“关掉端口”,其实有几种不同意思:

  • 停止占用这个端口的程序
  • 在防火墙里封掉这个端口的入站或出站流量
  • 关闭系统服务,让端口不再监听
  • 路由器或安全软件里顺带限制端口访问

如果你的目标是:让某个端口不再对外开放,最常用、最稳妥的方法就是 防火墙封端口;如果是 端口被某个程序占着,就要先找到占用进程并停掉它。

下面我按“新手也能看懂”的方式,一步一步讲清楚。


一、先搞明白:你要关的是哪一种“端口”

在 Windows 里,端口通常分两类情况:

1. 端口正在被某个程序监听

比如:

  • 80 端口被 IIS、Apache、Nginx 占用
  • 3306 端口被 MySQL 占用
  • 3389 端口被远程桌面占用
  • 6379 端口被 Redis 占用

这种情况下,端口会“对外服务”。

2. 端口虽然存在,但被防火墙拦住

程序可能还在运行,但外面访问不进来,这就是“防火墙封端口”。

如果你只是想让外网访问不了,防火墙封端口最直接
如果你想让端口彻底不再被占用,还得把对应程序或服务关掉。


二、最常用的方法:用 Windows 防火墙关掉端口

这是最适合普通用户的办法。
优点是:

  • 操作安全
  • 不容易误伤系统
  • 可按端口精确封锁
  • 重启后规则还在

方法 1:图形界面关闭端口

步骤 1:打开高级防火墙

  1. Win + R
  2. 输入:wf.msc
  3. 回车

这会打开“高级安全 Windows Defender 防火墙”。


步骤 2:新建入站规则

如果你想禁止别人从外面访问你电脑的某个端口,一般创建 入站规则

  1. 左侧点 入站规则
  2. 右侧点 新建规则
  3. 选择 端口
  4. 下一步

步骤 3:选择协议和端口

这里分两种:

如果不确定,先查清楚程序用的是哪个协议。
比如:

  • HTTP / HTTPS:多为 TCP
  • 游戏语音、DNS、某些实时通信:可能用 UDP
  • 远程桌面:TCP 3389

输入端口号,例如:

  • 80
  • 443
  • 3306
  • 3389
  • 8080
  • 6379

如果是多个端口,可以用逗号分隔,例如:

  • 80,443,8080

如果是端口范围,例如:

  • 1000-2000

步骤 4:选择“阻止连接”

选择:

  • 阻止连接

然后点下一步。


步骤 5:选择生效范围

一般直接全选:

  • 专用
  • 公用

除非你很清楚自己在做什么,否则建议都勾上。


步骤 6:命名规则

比如起名:

  • 阻止 TCP 3389
  • 阻止 3306 入站
  • 禁止 8080 外部访问

最后点 完成


方法 2:用命令行关闭端口,速度更快

如果你会一点命令行,推荐直接用 netsh,效率很高。

关闭入站端口示例

比如封掉 TCP 3306:

netsh advfirewall firewall add rule name="Block TCP 3306" dir=in action=block protocol=TCP localport=3306

封掉 TCP 3389:

netsh advfirewall firewall add rule name="Block TCP 3389" dir=in action=block protocol=TCP localport=3389

封掉 UDP 53:

netsh advfirewall firewall add rule name="Block UDP 53" dir=in action=block protocol=UDP localport=53

封掉多个端口:

netsh advfirewall firewall add rule name="Block TCP 80,443,8080" dir=in action=block protocol=TCP localport=80,443,8080

删除刚才添加的防火墙规则

如果你不想封了,可以删掉:

netsh advfirewall firewall delete rule name="Block TCP 3306"

三、如果端口被程序占用,要先找出是谁在用

有时候你封了防火墙,但本机软件还在监听这个端口。
如果你想让这个端口彻底“消失”,就必须先找到占用者。


方法 1:查看端口被谁占用

打开命令提示符或 PowerShell,输入:

netstat -ano | findstr :3306

这里以 3306 为例。
输出结果可能类似这样:

TCP    0.0.0.0:3306    0.0.0.0:0    LISTENING    1234

最后那个 1234PID,也就是进程编号。


方法 2:根据 PID 找程序

继续输入:

tasklist | findstr 1234

如果查到是某个程序,比如:

  • mysqld.exe
  • nginx.exe
  • java.exe
  • svchost.exe

你就能知道是谁占着这个端口。


方法 3:结束进程

如果确定可以关掉,输入:

taskkill /PID 1234 /F

注意:

  • 1234 换成你的 PID
  • /F 表示强制结束

四、如果是系统服务占用端口,要停服务

有些端口不是普通程序占的,而是 Windows 服务占的。
这时候要到服务里关。

比如:

  • 3389:远程桌面
  • 135、445:系统共享相关服务
  • 80:IIS
  • 3306:MySQL 服务
  • 6379:Redis 服务

方法 1:打开服务管理器

  1. Win + R
  2. 输入:services.msc
  3. 回车

找到对应服务,比如:

  • SQL Server
  • World Wide Web Publishing Service
  • Remote Desktop Services

右键点:

  • 停止

如果不想开机启动,还可以:

  • 右键 属性
  • 把“启动类型”改成 禁用

方法 2:命令行停止服务

比如停止 MySQL 服务:

net stop mysql

或者根据服务名停止:

sc stop 服务名

如果要禁用开机启动:

sc config 服务名 start= disabled

注意:start= 后面有一个空格,这是 sc 命令的固定写法。


五、只想关闭“出站端口”怎么办?

有时候你不是要别人连进来,而是想阻止某个程序联网发数据。
这种情况下要建 出站规则


图形界面操作

  1. 打开 wf.msc
  2. 左侧点 出站规则
  3. 新建规则
  4. 选择 端口
  5. 填端口
  6. 选择 阻止连接
  7. 完成

命令行示例

netsh advfirewall firewall add rule name="Block Out TCP 4444" dir=out action=block protocol=TCP localport=4444

六、想确认端口有没有真正关掉,怎么检查

封完以后,最好验证一下。


方法 1:用 netstat 看监听状态

例如检查 3389:

netstat -ano | findstr :3389

如果没有输出,通常说明这个端口当前没有监听。
如果还有 LISTENING,说明程序还在占用。


方法 2:用 telnet 测试端口

前提是你电脑装了 telnet 功能。

测试本机或目标主机端口是否开放:

telnet 127.0.0.1 3389

如果连不上,通常说明端口不通。
不过这个方法不如 netstat 直接。


方法 3:用 PowerShell 测试

Test-NetConnection 127.0.0.1 -Port 3389

如果返回 TcpTestSucceeded : False,说明端口没通。


七、常见端口关闭场景

下面这些场景很常见,很多人会遇到:

1. 关掉 3389 远程桌面端口

适合:不想让别人远程连你电脑。
处理方式:

  • 关闭远程桌面功能
  • 防火墙封 3389
  • 路由器别做 3389 端口映射

2. 关掉 3306 数据库端口

适合:本机 MySQL 不想对外暴露。
处理方式:

  • MySQL 配置只监听 127.0.0.1
  • 防火墙封 3306
  • 不要把 3306 映射到公网

3. 关掉 80 / 443 网站端口

适合:本机网站不再对外开放。
处理方式:

  • 停掉 IIS / Nginx / Apache
  • 删除端口映射
  • 防火墙封端口

4. 关掉 445 文件共享端口

适合:减少局域网风险。
但要注意:

  • 445 是 Windows 文件共享相关端口
  • 乱关可能影响局域网共享、打印机共享、域环境连接

如果你不懂业务影响,不建议直接乱封系统核心端口。


八、哪些端口不要随便乱关

这点很重要。
有些端口关了之后,系统功能会出问题。

比如:

  • 135、137、138、139、445:与 Windows 网络共享、远程管理有关
  • 53:DNS 相关
  • 67/68:DHCP 相关
  • 80/443:网页访问相关
  • 3389:远程桌面

如果你只是普通用户,建议只关自己明确知道用途的端口。
不要看到一个端口号就全部封掉,否则容易导致:

  • 网络异常
  • 打印机不可用
  • 局域网共享失效
  • 软件无法联网
  • 远程桌面失效

九、最实用的做法:先找占用,再封防火墙

如果你是第一次处理,建议按这个顺序来:

第一步:查看端口占用

netstat -ano | findstr :端口号

第二步:找到程序

tasklist | findstr PID

第三步:判断是否要停服务或程序

  • 能停程序就停程序
  • 是系统服务就停服务
  • 只是禁止外部访问,就加防火墙规则

第四步:用防火墙封掉端口

netsh advfirewall firewall add rule name="Block TCP 端口号" dir=in action=block protocol=TCP localport=端口号

十、注意事项

1. 不要把“关闭端口”和“结束进程”混为一谈

  • 结束进程:程序停了
  • 防火墙封端口:程序可能还在,但外部访问不了

2. 公网环境一定要谨慎

如果你的电脑开了端口映射,光关本机防火墙不一定够,还要检查:

  • 路由器端口映射
  • 光猫映射
  • 云服务器安全组
  • 远程访问软件设置

3. 封端口前先备份规则

如果你经常改防火墙,建议先导出规则,防止误操作后难恢复。

4. 系统核心端口别乱封

尤其是共享、网络、远程管理相关端口,封错了会引发更多问题。


十一、最简洁的总结

如果你想在 Windows 里关掉某个端口,最常见的办法是:

方式一:防火墙封端口

  • 打开 wf.msc
  • 新建入站规则
  • 选择端口
  • 输入端口号
  • 选择阻止连接

方式二:命令行快速封

netsh advfirewall firewall add rule name="Block TCP 3306" dir=in action=block protocol=TCP localport=3306

方式三:关闭占用端口的程序或服务

netstat -ano | findstr :3306
taskkill /PID 进程号 /F

如果是服务,再去 services.msc 里停止或禁用。


十二、可直接复制的常用命令

查端口占用

netstat -ano | findstr :3306

查 PID 对应程序

tasklist | findstr 1234

结束进程

taskkill /PID 1234 /F

封入站 TCP 3306

netsh advfirewall firewall add rule name="Block TCP 3306" dir=in action=block protocol=TCP localport=3306

封出站 TCP 3306

netsh advfirewall firewall add rule name="Block Out TCP 3306" dir=out action=block protocol=TCP localport=3306

删除规则

netsh advfirewall firewall delete rule name="Block TCP 3306"

如果你的目标是“关掉某个具体端口”,最稳的方式永远是:先查占用,再停服务,最后用防火墙封锁。这样既能保证端口不再开放,也不容易误伤系统。

文章版权声明:文章内容均来源于各大短视频平台搜集以及修改和删减新增,如有侵权或者违规,请联系站长进行删除,如需转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
验证码
评论列表 (暂无评论,3人围观)

还没有评论,来说两句吧...

目录[+]