目录标题
Linux 系统中的端口(Port)
Linux 系统中的端口(Port)是用于标识网络进程的逻辑端口,TCP/IP 协议中端口范围为:0 ~ 65535。这些端口号被 IANA(Internet Assigned Numbers Authority)划分为三个范围,各有不同的用途。
🧩 一、Linux 端口号的划分
| 端口范围 | 名称/类型 | 用途说明 |
|---|---|---|
| 0 - 1023 | 知名端口(Well-known ports) | 系统服务使用,必须由 root 权限进程绑定。如:HTTP、SSH、DNS 等 |
| 1024 - 49151 | 注册端口(Registered ports) | 普通应用程序注册使用,用户进程或服务可能使用,如 MySQL、PostgreSQL 等 |
| 49152 - 65535 | 动态/私有端口(Dynamic/Private ports) | 客户端临时通信时自动分配的端口,称为临时端口(Ephemeral Ports) |
🧠 二、常见端口示例
1. 知名端口(0~1023)
| 端口 | 服务名称 | 协议 | 用途 |
|---|---|---|---|
| 22 | SSH | TCP | 安全远程登录 |
| 23 | Telnet | TCP | 不安全的远程登录 |
| 25 | SMTP | TCP | 邮件传输 |
| 53 | DNS | UDP/TCP | 域名解析 |
| 80 | HTTP | TCP | 网站访问 |
| 443 | HTTPS | TCP | 加密网站访问 |
| 3306 | MySQL | TCP | 数据库服务 |
| 5432 | PostgreSQL | TCP | 数据库服务 |
2. 注册端口(1024~49151)
这些端口由开发者向 IANA 注册,部分常见服务如下:
| 端口 | 服务名称 | 用途 |
|---|---|---|
| 2379/2380 | etcd 集群 | 分布式配置 |
| 2181 | Zookeeper | 协调服务 |
| 8080 | Tomcat / HTTP | 开发常用 Web 服务端口 |
3. 动态/私有端口(49152~65535)
- 不会被服务器监听使用。
- 客户端用于和服务器建立连接时的临时端口。
- 操作系统在发起 TCP/UDP 连接时动态分配。
例如:
# 客户端主动连接服务器时使用的端口
curl http://example.com
# 系统自动分配一个 49152~65535 的临时端口
🧾 三、查看当前端口使用情况的命令
# 显示监听的端口及服务
ss -tnlp
# 或
netstat -tunlp
# 查看某端口是否被监听
lsof -i:8080
⚙️ 四、端口安全管理建议
-
关闭不必要的端口/服务:减小攻击面。
-
配置防火墙策略:
# 使用 firewalld 添加允许端口 firewall-cmd --add-port=80/tcp --permanent firewall-cmd --reload -
启用 SELinux/AppArmor 等安全机制 控制端口访问。
如果要 NFS 的默认端口 2049 改成其他端口,主要需要考虑以下几个方面:
✅ 一、选用新端口的原则
-
避免系统知名端口(0–1023),以免冲突。
-
避免与常见注册端口冲突,例如:
3306(MySQL)5432(PostgreSQL)6379(Redis)27017(MongoDB)8080(常见Web端口)
-
尽量在私有/动态端口中挑选(49152–65535)
- 好处:冲突概率低,使用灵活。
- 缺点:有些老旧的客户端或防火墙策略可能不允许此范围通信。
🎯 推荐的替代端口范围(相对安全)
以下是一些通常“闲置”的端口,可以用于替代:
| 端口号 | 理由说明 |
|---|---|
| 30000–31000 | Kubernetes NodePort 范围内,常用于服务测试,自定义用途多 |
| 40000–41000 | 一般无特定服务绑定,可作私有协议使用 |
| 50000–51000 | 传统上为备选私有服务端口,例如 Jenkins 使用 50000 作为 slave 通信 |
| 60000–61000 | 通常未被常见服务占用,适合自定义服务 |
🚧 二、注意事项
- 改了端口后,客户端也要同步更改,否则连接不上。
- NFS 4 默认使用固定端口
2049,如需更换,得结合rpcbind/nfsd做更多配置,且兼容性较差。 - 有些 NFS 功能仍依赖
rpcbind的动态端口(如mountd),可以通过配置让其使用固定端口。
🛠️ 三、如何修改 NFS 端口(以 mountd 为例)
# 设定 mountd 使用固定端口 4001
echo "MOUNTD_PORT=4001" >> /etc/sysconfig/nfs
# 如果你坚持要改掉 2049 端口(不推荐)
# 修改 /etc/modprobe.d/nfs.conf
echo "options nfs nfsport=4009" >> /etc/modprobe.d/nfs.conf
# 重启 NFS 服务
systemctl restart nfs-server
🔒 四、防火墙开放
记得放通新端口:
# 以 4009 为例
firewall-cmd --add-port=4009/tcp --permanent
firewall-cmd --reload
🧠 总结建议
推荐端口:40000 ~ 41000 范围内选择一个(例如:
4009)
如果你只是想避免暴露默认端口用于安全增强,这种方式配合防火墙、加密(如 Kerberos、VPN)效果更好。
1572

被折叠的 条评论
为什么被折叠?



