在 Linux 系统中,端口号的范围从 0 到 65535。根据用途,端口号可分为三类:
- 知名端口(Well-known Ports):
- 范围:0–1023
- 用途:通常用于系统级和知名服务,如 HTTP (80)、HTTPS (443)、FTP (21)、SSH (22) 等。
- 说明:这些端口通常需要超级用户权限 root 才能使用,它们紧密绑定与一些常见服务,例如 FTP 服务使用端口 21,我们可以
/etc/services 里面查看到对应的映射关系。
- 注册端口(Registered Ports):
- 范围:1024–49151
- 用途:用于用户进程或程序,这些端口可以由应用程序自行分配。例如 MySQL (3306)、PostgreSQL (5432) 等。
- 动态/私有端口(Dynamic/Private Ports):
- 范围:49152–65535
- 用途:通常用于短暂连接和客户端分配,比如 NAT 设备和临时网络连接。这些端口不固定分配给任何特定服务。
- 说明:Linux 中有限定端口的使用范围,如果要为程序预留某些端口,需要控制这个端口范围。
/proc/sys/net/ipv4/ip_local_port_range 定义了本地 TCP/UDP 的端口范围,我们可以在 /etc/sysctl.conf 里面定义 net.ipv4.ip_local_port_range = 1024 65000
可用端口号
- 一般使用:在开发中,如果需要选择可用的端口号,推荐使用 1024 以上的端口(例如 1024–49151),以避免冲突和系统权限问题。
- 动态端口:49152–65535 范围的端口号适合用于临时或动态分配,通常用于短期服务或客户端连接。
检查端口是否可用
- netstat 工具检测开放端口
apt install net-tools -y
# 检查某个端口是否已被占用
netstat -tuln | grep :<port_number>
# 查看当前已被占用的所有端口
netstat -tuln
- ss 工具检测开放端口
# 检查某个端口是否已被占用
ss -tuln | grep :<port_number>
# 查看当前已被占用的所有端
ss -tuln
- lsof 工具检测开放端口
# 检查某个端口是否已被占用
lsof -i:3306
- telnet 工具检测开放端口
# 服务器端口即使处于监听状态,但是防火墙 iptables 屏蔽了该端口,是无法通过该方法检测端口是否开放的
- netcat 工具检测开放端口
# 检查某个端口是否已被占用
nc -vv 192.168.0.120 8000
- nmap 工具检测开放端口
apt install nmap -y
# 查看本机开放的端口,会扫描所有端口
nmap 127.0.0.1
修改端口使用参数
# 配置文件
cat /etc/sysctl.conf
# 设置 Linux 随机端口范围
net.ipv4.ip_local_port_range = 32768 60999
# 设置 Linux 保留端口范围(内部服务固定的监听端口)
net.ipv4.ip_local_reserved_ports = 8014,60011-60014
# 修改配置后使生效
sysctl -p /etc/sysctl.conf
|