Linux端口范围

在 Linux 系统中,端口的使用范围由系统内核设置和网络协议标准决定。以下是有关 Linux 中端口范围的一些关键点:

1. 端口分类

  • 系统端口(Well-Known Ports):0-1023

    • 这些端口用于标准服务和协议,例如 HTTP(80)、HTTPS(443)、FTP(21)、SSH(22)等。
    • 只有系统进程或需要超级用户权限的程序可以绑定这些端口。
  • 注册端口(Registered Ports):1024-49151

    • 这些端口由应用程序使用,通常是应用程序的特定服务,如数据库服务(例如 MySQL 的 3306 端口)或其他应用。
    • 这些端口不需要超级用户权限,但应当避免与知名应用的端口冲突。
  • 动态端口(Dynamic/Private Ports):49152-65535

    • 这些端口通常用于临时或动态分配,例如客户端应用程序的端口。
    • 这些端口用于从系统端口池中分配给应用程序,通常由操作系统在运行时分配。

2. 查看和配置端口范围

查看端口范围

可以使用以下命令查看系统中的端口范围设置:

cat /proc/sys/net/ipv4/ip_local_port_range

该命令的输出类似于:

32768   60999

这表示系统的动态端口范围是 32768 到 60999。

配置端口范围

如果需要更改动态端口范围,可以使用 sysctl 命令或直接修改 /etc/sysctl.conf 文件:

  1. 临时更改

    sudo sysctl -w net.ipv4.ip_local_port_range="20000 65000"
    
  2. 永久更改

    • 编辑 /etc/sysctl.conf 文件,添加或修改以下行:
      net.ipv4.ip_local_port_range = 20000 65000
      
    • 使更改生效:
      sudo sysctl -p
      

3. 端口冲突和安全性

  • 端口冲突:确保应用程序在绑定端口时不会与系统服务或其他应用程序发生冲突。通常,通过检查 /etc/services 文件和使用 netstatss 命令来避免端口冲突。
  • 安全性:为了提高安全性,建议限制外部访问非必要的端口,并使用防火墙(如 iptablesfirewalld)来控制端口访问。

4. 相关命令

  • 查看正在使用的端口

    netstat -tuln
    

    ss -tuln
    
  • 查看端口占用情况

    lsof -i :port_number
    
  • 列出端口和协议

    sudo nmap -sT -p- localhost
    

这些工具和命令可以帮助你查看和管理系统中的端口使用情况。