在 Linux 中,“保留端口”通常指的是防止其他程序占用某些特定端口,或者确保某些端口始终可用给特定的服务,这可以通过以下几种方式实现:
使用 systemd 服务管理端口
如果你运行的是一个 systemd 服务(如 Nginx、MySQL 等),可以通过配置服务文件来绑定特定端口。
示例:Nginx 绑定 80 和 443 端口
编辑 /etc/nginx/nginx.conf:
server {
listen 80;
listen [::]:80;
...
}
server {
listen 443 ssl;
listen [::]:443 ssl;
...
}
然后重启服务:
sudo systemctl restart nginx
使用 iptables 或 nftables 限制端口访问
你可以使用防火墙规则来限制哪些进程可以绑定到特定端口。
示例:只允许 root 绑定 80 端口
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 80 -j DROP
注意:这只是限制了外部访问,而不是限制本地绑定。
使用 sysctl 设置端口范围(防止端口冲突)
你可以设置内核参数来限制哪些端口范围可以被普通用户绑定。
查看当前端口范围:
cat /proc/sys/net/ipv4/ip_local_port_range
修改端口范围(临时):
sudo sysctl -w net.ipv4.ip_local_port_range="1024 65535"
永久修改:
编辑
/etc/sysctl.conf:
net.ipv4.ip_local_port_range = 1024 65535
然后生效:
sudo sysctl -p
使用 firewalld(CentOS/RHEL/Fedora)
sudo firewall-cmd --permanent --add-port=80/tcp sudo firewall-cmd --reload
使用 lsof 或 ss 检查端口占用
# 查看某个端口是否被占用 sudo lsof -i :80 sudo ss -tlnp | grep :80
使用 systemd 的 BindToDevice 或 ListenStream 限制端口
在 systemd 服务文件中,可以指定监听地址和端口:
[Service] ExecStart=/usr/bin/myapp ListenStream=127.0.0.1:8080
使用 netfilter 的 SO_BINDTODEVICE 绑定网卡
某些服务可以绑定到特定网卡和端口,避免冲突。
| 方法 | 用途 |
|---|---|
systemd 服务配置 |
绑定特定端口给服务 |
iptables / nftables |
防火墙规则限制端口访问 |
sysctl 端口范围 |
控制用户可绑定的端口范围 |
firewalld |
防火墙管理端口 |
lsof / ss |
检查端口占用情况 |
systemd 的 ListenStream |
精确控制服务监听端口 |
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/477149.html



