登录
首页 >  文章 >  linux

Linux怎么开放指定端口_Linux防火墙端口放行方法【服务】

时间:2026-05-05 17:55:31 434浏览 收藏

各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题《Linux怎么开放指定端口_Linux防火墙端口放行方法【服务】》,很明显是关于文章的文章哈哈哈,其中内容主要会涉及到等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享!

ufw开放8080端口需先启用防火墙(sudo ufw enable),再执行sudo ufw allow 8080;若已全局deny,须确保allow规则在前,且ufw实时生效无需reload。

Linux怎么开放指定端口_Linux防火墙端口放行方法【服务】

怎么用 ufw 开放 8080 端口(Ubuntu/Debian 默认防火墙)

绝大多数新装的 Ubuntu 或 Debian 服务器默认启用 ufw,它比 iptables 更直观,但容易因状态没开或规则顺序错导致“开了却连不上”。

  • ufw 默认是禁用状态,执行 sudo ufw status verbose 如果显示 Inactive,得先 sudo ufw enable
  • 开放单端口:用 sudo ufw allow 8080;如果只允许某 IP 访问,写成 sudo ufw allow from 192.168.1.100 to any port 8080
  • 别直接 allow 8080/tcp——ufw 能自动推断协议,加 /tcp 反而可能在某些旧版本里被忽略
  • 改完规则后不用 reload,ufw 实时生效;但若之前已 deny 全局入站,要确保 allow 规则在 deny 之前(ufw 按添加顺序匹配,不支持插入)

为什么 firewall-cmd 加了端口还是连不上(CentOS/RHEL 8+)

firewalld 的规则分 runtime 和 permanent 两层,很多人只改了其中一层,重启后失效;另外 zone 配置错也常见。

  • 必须同时运行两条命令:sudo firewall-cmd --add-port=8080/tcp(临时) + sudo firewall-cmd --permanent --add-port=8080/tcp(永久)
  • 确认当前活跃 zone:firewall-cmd --get-active-zones,如果服务绑在 eth0 但活跃 zone 是 public,而你往 internal zone 加了端口,就白加
  • 改 permanent 后必须 sudo firewall-cmd --reload 才会同步到 runtime;只 reload 不加 permanent,重启后端口又关了
  • --add-port 不支持范围写法如 8000-8010,得用 --add-port=8000-8010/tcp,漏写 /tcp/udp 会静默失败

iptables 直接加规则但重启就消失,怎么办

原始 iptables 规则不持久,系统重启即清空。不同发行版保存方式不同,硬记命令容易漏存或存错位置。

  • Debian/Ubuntu:加完用 sudo iptables-save | sudo tee /etc/iptables/rules.v4(IPv4),注意路径和文件名不能错,iptables-persistent 包必须已安装
  • CentOS 6:用 sudo service iptables save,但该命令在 CentOS 7+ 已废弃,强行运行无报错却什么都不做
  • 别在 iptables -A INPUT ... 前漏掉 -p tcp ——没有协议限制的规则可能意外放行 UDP 包,且部分内核版本会拒绝无协议参数的规则
  • 如果已有 REJECTDROP 在最后,新加的 ACCEPT 必须用 -I INPUT 1 插到最前,用 -A 追加大概率被挡在后面

端口通了但服务收不到请求,可能是哪里卡住了

防火墙只是链路一环,常见干扰点藏在更底层或更高层。

  • 检查服务是否真在监听:ss -tlnp | grep :8080,如果没输出,说明应用根本没 bind 到该端口,或 bind 到了 127.0.0.1(只限本地),得改成 0.0.0.0 或具体外网 IP
  • 云服务器(阿里云、腾讯云等)有独立安全组,必须在控制台额外放行端口,系统防火墙开了也没用
  • SELinux 在 RHEL/CentOS 上默认启用,即使防火墙全开,sestatus 显示 enabled 时,http_port_t 类型不包含 8080,需手动加: sudo semanage port -a -t http_port_t -p tcp 8080
  • 某些 Docker 容器映射端口时用了 -p 127.0.0.1:8080:8080,这会让宿主机其他机器无法访问,去掉 127.0.0.1: 即可

真正麻烦的不是加一条规则,而是得同时盯住防火墙层、网络层、内核安全模块、云平台策略、容器网络这五六个地方;少查一个,就卡在“明明开了却不通”里出不来。

今天关于《Linux怎么开放指定端口_Linux防火墙端口放行方法【服务】》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>