菜鸟科技网

关闭网络端口命令有哪些?

核心概念

我们需要明确“关闭端口”的几种方式:

关闭网络端口命令有哪些?-图1
(图片来源网络,侵删)
  1. 停止监听:这是最常见的“关闭”,应用程序不再接收发往该端口的连接请求,这是大多数用户想要的结果。
  2. 防火墙阻止:端口本身可能仍在被应用程序监听,但防火墙会阻止所有外部流量访问该端口,这也能达到“关闭”对外服务的目的。
  3. 禁用网络适配器:这是最彻底的方式,直接关闭整个网卡,所有端口都会被关闭。

Windows 系统

在 Windows 上,我们主要使用 防火墙PowerShell 来管理端口。

方法1:使用 Windows Defender 防火墙图形界面(推荐新手)

这是最简单、最安全的方法,可以阻止外部流量访问特定端口。

  1. 打开“控制面板” -> “系统和安全” -> “Windows Defender 防火墙”。
  2. 在左侧点击“高级设置”。
  3. 在左侧的“入站规则”上点击右键,选择“新建规则...”。
  4. 规则类型:选择“端口”,点击“下一步”。
  5. 协议和端口
    • 选择“TCP”或“UDP”(或两者)。
    • 选择“特定本地端口”,然后输入您想关闭的端口号(8080)或端口范围(8000-9000)。
  6. 操作:选择“阻止连接”,点击“下一步”。
  7. 配置文件:勾选“域”、“专用”、“公用”(根据您的网络环境选择),点击“下一步”。
  8. 名称:为规则起一个名字(Block Port 8080),可以添加描述,然后点击“完成”。

外部设备就无法访问您电脑上的 8080 端口了,但本地程序(如 localhost:8080)通常仍然可以连接。

方法2:使用 PowerShell 命令(功能强大)

PowerShell 是管理 Windows 的现代利器。

关闭网络端口命令有哪些?-图2
(图片来源网络,侵删)

A. 阻止端口(防火墙规则)

这是推荐使用的命令方式,因为它精确且可逆。

# 阻止 TCP 端口 8080 的入站连接
New-NetFirewallRule -DisplayName "Block Port 8080" -Direction Inbound -LocalPort 8080 -Protocol TCP -Action Block
# 阻止 UDP 端口 53 的入站连接
New-NetFirewallRule -DisplayName "Block Port 53 UDP" -Direction Inbound -LocalPort 53 -Protocol UDP -Action Block

如何删除规则(恢复开放)?

# 首先找到规则的显示名称
Get-NetFirewallRule | Where-Object {$_.DisplayName -like "*Block Port 8080*"}
# 然后使用显示名称删除规则
# 假设显示名称是 "Block Port 8080"
Remove-NetFirewallRule -DisplayName "Block Port 8080"

B. 查找并终止占用端口的进程(停止监听)

关闭网络端口命令有哪些?-图3
(图片来源网络,侵删)

如果您想彻底停止某个端口的服务,需要找到并关闭占用该端口的程序。

# 1. 查找占用特定端口的进程
# 查找占用 TCP 8080 端口的进程
Get-NetTCPConnection -LocalPort 8080
# 2. 从输出结果中找到 PID (进程 ID),然后使用 Stop-Process 命令终止它
# 假设 PID 是 12345
Stop-Process -Id 12345 -Force

警告Stop-Process 会强制关闭程序,可能导致数据丢失,请确保您知道关闭的是什么程序。


Linux / macOS 系统

在 Linux 和 macOS 上,我们主要使用 iptables (传统) 和 firewalld (CentOS/RHEL 7+),以及 ufw (Ubuntu/Debian) 等防火墙工具,我们也用 netstatss 来查找和终止进程。

方法1:使用 iptables (传统防火墙,仍在广泛使用)

A. 阻止端口(防火墙规则)

# 阻止 TCP 端口 8080 的入站连接
sudo iptables -A INPUT -p tcp --dport 8080 -j DROP
# 阻止 UDP 端口 53 的入站连接
sudo iptables -A INPUT -p udp --dport 53 -j DROP
  • -A INPUT: 在 INPUT 链的末尾添加规则。
  • -p tcp: 指定协议为 TCP。
  • --dport 8080: 指定目标端口为 8080。
  • -j DROP: 动作为“丢弃”数据包(静默拒绝)。

如何删除规则?

# 删除上面添加的规则
sudo iptables -D INPUT -p tcp --dport 8080 -j DROP

注意iptables 的规则是临时的,重启后会丢失,如果需要永久生效,需要安装 iptables-persistent (Debian/Ubuntu) 或 iptables-services (CentOS/RHEL) 并保存规则。

方法2:使用 ufw (Uncomplicated Firewall, Ubuntu/Debian 推荐)

ufw 是一个为简化 iptables 而设计的用户友好的前端工具。

A. 阻止端口

# 阻止 TCP 端口 8080
sudo ufw deny 8080/tcp
# 阻止 UDP 端口 53
sudo ufw deny 53/udp

如何删除规则(恢复开放)?

# 查看规则编号
sudo ufw status numbered
# 假设规则编号是 3,删除它
sudo ufw delete 3

方法3:查找并终止占用端口的进程(停止监听)

这是停止服务本身的方法。

# 1. 使用 ss 命令查找占用端口的进程 (ss 是 netstat 的现代替代品,推荐)
# 查找监听在 TCP 8080 端口的进程
sudo ss -tulpn | grep ':8080'
# 2. 使用 netstat 命令 (旧系统可能需要)
sudo netstat -tulpn | grep ':8080'
# 3. 从输出结果中找到 PID (进程 ID) 和程序名,然后使用 kill 命令终止
# 假设 PID 是 12345
kill -9 12345
  • ss -tulpn:
    • t: TCP
    • u: UDP
    • l: 只显示监听套接字
    • p: 显示 PID 和程序名
    • n: 以数字形式显示地址和端口
  • kill -9: 强制终止信号,相当于 Windows 的 Stop-Process -Force

总结与对比

操作系统 推荐方法 命令/工具 优点 缺点
Windows 防火墙阻止 PowerShell图形界面 安全,不影响本地程序,可逆 程序仍在后台运行
终止进程 tasklist / taskkillGet-NetTCPConnection / Stop-Process 彻底停止服务 可能导致程序崩溃或数据丢失
Linux/macOS 防火墙阻止 ufw (Ubuntu) / iptables (通用) 灵活,安全,不影响本地程序 需要熟悉命令
终止进程 ss / netstat / kill 彻底停止服务 可能导致程序崩溃或数据丢失

最终建议

  • 如果您只是想禁止外部访问,但让程序继续运行:始终优先使用 防火墙 方法,这是最安全、最标准的做法。
  • 如果您想彻底停止某个服务:使用 查找并终止进程 的方法,但请务必小心,确保您知道关闭的是什么程序。
分享:
扫描分享到社交APP
上一篇
下一篇