每当一个应用程序想通过网络访问自己时,它就会申请一个 TCP/IP 端口,这意味着该端口不能被其他任何程序使用。那么,如何检查开放的端口,看看哪个应用程序已经在使用它呢?
Windows
查看端口使用情况和进程名称
netstat -ab
按 Enter 键后,结果可能需要一两分钟才能完全显示出来,请耐心等待。滚动列表找到端口(列在本地 IP 地址右侧冒号之后),然后就能看到该行下列出的进程名称。如果你想让事情更简单一些,请记住你也可以将命令结果导入文本文件。然后,你就可以在文本文件中搜索你想要的端口号了。
例如,在这里你可以看到 49902 端口被一个名为 picpick.exe 的进程占用了。PicPick 是我们系统中的一个图片编辑器,因此我们可以假设该端口实际上是被一个定期检查应用程序更新的进程占用了。
查看端口使用情况和流程标识符
如果您查找的端口号的进程名称难以确定相关应用程序是什么,您可以尝试使用显示进程标识符 (PID) 而不是名称的命令版本。
netstat -aon
使用 netsh 打开端口(推荐)
开启6624端口, protocol可以是TCP或者UDP
netsh advfirewall firewall add rule name="TCP Port 6624" dir=in action=allow protocol=TCP localport=6624
删除Rule
netsh advfirewall firewall delete rule name="TCP Port 6624" protocol=TCP localport=6624
使用 Powershell 打开端口
PowerShell 是命令提示符的高级形式。它扩展了大量现成可用的 cmdlet,并能在各种情况下使用 .NET framework/C#。您可以使用它在 Windows 10 中打开或关闭端口。
New-NetFirewallRule -DisplayName 'My port' -Profile 'Private' -Direction Inbound -Action Allow -Protocol TCP -LocalPort 6624
Linux
查看端口
Linux 用户可以使用多种可用的网络工具检查开放端口。每个工具都会显示相同的结果,但输出格式和信息量各不相同。
下文将介绍使用 lsof、netstat、ss、Nmap 和 netcat 工具检查开放端口的方法。
$ sudo lsof -nP -iTCP -sTCP:LISTEN
参考 https://phoenixnap.com/kb/linux-check-open-ports
iptables 开启端口
开启端口
$ sudo iptables -I INPUT -p tcp -m tcp --dport 5355 -j ACCEPT
删除端口
$ sudo iptables -D INPUT -p tcp -m tcp --dport 5355 -j ACCEPT
参考 https://www.digitalocean.com/community/tutorials/how-to-list-and-delete-iptables-firewall-rules
firewall 开启端口
Zone
分区(Zone)是一种概念,用于更透明地管理传入流量。分区与网络接口相连,或分配一定范围的源地址。您可以独立管理每个区域的防火墙规则,这样就能定义复杂的防火墙设置并将其应用于流量。
~]# firewall-cmd --get-zones ~]# firewall-cmd --list-all-zones
添加80/tcp
这将在运行时环境的公共区域打开 80 端口(协议为 tcp)。运行环境只在机器重启或 firewalld 服务重启前有效。如果端口应添加到默认区域,则可以省略区域选项。
firewall-cmd --zone=public --add-port=80/tcp
如果您也想永久更改,那么在永久环境中也要打开端口。这意味着在系统重启或 firewalld 服务重载后,端口也将被打开。
firewall-cmd --permanent --zone=public --add-port=80/tcp
开启服务
firewall-cmd --zone=public --add-service=http firewall-cmd --permanent --zone=public --add-service=http