很多小伙伴用Linux VPS跑服务的时候,最常遇到的问题之一就是——“我这个端口到底开没开?外部能不能访问?” ,其实这个问题还是比较简单的,今天小编就教大家怎么查看端口是否开放,并且分享实用的端口开放命令。
一、怎么看端口有没有开放?
最简单直接的方式,就是用 ss 或 netstat 命令。
用 ss 命令
ss -tuln
- -t:显示 TCP 端口
- -u:显示 UDP 端口
- -l:只看监听中的端口
- -n:直接用端口号,不解析域名
小编自己常用这个命令,结果整齐,方便快速找有没有监听。
用 netstat 命令(老工具)
netstat -tuln
原理和 ss 差不多,就是在部分老系统里更常见。
如果你想更详细地看哪个服务在用哪个端口:
ss -tunlp
或者
netstat -tunlp
多了 -p,能看到具体的进程名和 PID,方便排查。
二、如何检测端口对外是否可访问?
监听只是第一步,真正能不能访问,得看防火墙和安全组。小编的习惯是直接用 telnet 或 nc(netcat) 从本地或其他机器测试。
用 telnet
telnet 服务器IP 端口
比如测试 80 端口:
telnet 1.2.3.4 80
如果连上了,说明能访问;如果超时,可能是被防火墙或安全组拦了。
用 nc
nc -zv 服务器IP 端口
比如:
nc -zv 1.2.3.4 22
也是一样,能连上就说明对外开放。
三、Linux 开放端口命令怎么用?
Linux 本身端口监听和应用程序无关,但通常还要在防火墙里“放行”。下面按常见工具说下:
1. firewalld(CentOS/Rocky 默认)
- 放行单个端口(如 8080):
firewall-cmd --permanent --add-port=8080/tcp firewall-cmd --reload
- 查看已开放端口:
firewall-cmd --list-ports
2. UFW(Ubuntu 系统常用)
- 放行端口:
ufw allow 8080/tcp
- 查看已放行:
ufw status
3. iptables(通用防火墙)
- 开放端口:
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
- 保存规则(Debian/Ubuntu):
apt install iptables-persistent netfilter-persistent save
或 CentOS:
service iptables save
四、小编常用技巧和避坑提醒
小编踩过的最大坑就是:安全组也要记得放行!
尤其在云服务器上(阿里云、腾讯云等),控制台里安全组可能会额外拦截端口。防火墙开了没用,安全组不放行还是白搭。
还有一个小技巧:
- 用 nmap 扫描自己服务器端口,能一次看哪些端口开着:
nmap 服务器IP
五、常见问题答疑
1. 为啥我明明开了端口,外网连不上?
检查安全组、云服务商控制台,或者路由器转发设置。
2. Linux 默认开放哪些端口?
默认只开放 SSH(22),其他都得自己配置。
3. 放行 UDP 怎么写?
命令里把 tcp
改成 udp
就行:
ufw allow 1194/udp
4. firewalld 和 iptables 选哪个?
CentOS7 以后用 firewalld,老版本和特殊场景(Docker 中转等)用 iptables。
5. 怎么把防火墙直接关掉测试?
谨慎:
systemctl stop firewalld
ufw disable
别长期关,测试完记得开回来。
六、端口排查+放行,一步都别落!
小编想说:端口能不能连上,取决于三个层面——
- 服务器本地监听
- 防火墙是否放行
- 云安全组有没有授权
只要按上面一步步排查,基本都能搞定。别再被“SSH 连不上”、“网页访问超时”折磨了,动手试试吧!