# Ubuntu 开放指定端口

- Link: https://yjyj.net/learn/6209.html
- Published: 2021-05-27T17:04:28+08:00
- Author: 小 虾

⚡ 生猛大蝦编辑部 · 30 秒核心看点

 * 用 iptables -I INPUT 按端口放行 TCP 流量，操作直接有效。
 * iptables-save 只能临时保存，重启后规则仍可能丢失。
 * 配合 iptables-persistent 和 netfilter-persistent，才能把开放端口真正固化。

一般情况下，ubuntu安装好的时候，iptables会被安装上，如果没有的话先安装
 `sudo apt-
get install iptables` 添加开放端口

    ```language-shell
    # sudo iptables -I INPUT -p tcp --dport [端口号] -j ACCEPT
    sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT
    # 临时保存配置，重启后失效
    sudo iptables-save
    ```

安装 iptables-persistent工具，持久化开放端口配置
 `sudo apt-get install iptables-
persistent`

    ```language-shell
    sudo netfilter-persistent save
    sudo netfilter-persistent reload
    ```

📌 生猛大蝦编辑部 · 背景与实操延伸

这篇内容虽然短，但核心是“先放行、再固化”。在 Ubuntu 上改防火墙规则时，最容易踩坑
的是只做了临时放行，却忘了持久化，导致服务一重启就访问失败。实操时建议先确认端口
确实被业务程序监听，再添加规则；如果机器上还有其他防火墙策略，也要一起排查，避免
只开了端口却仍然连不上。

❓ 延伸问答与排错指南（FAQ）

Ubuntu 开放端口后为什么重启就没了？

因为只执行了临时规则写入，没有把 iptables 规则持久化。重启后内核防火墙规则会恢复，
需安装 iptables-persistent，并用 netfilter-persistent save 保存，再 reload 验证。

开放 80 端口的命令怎么写？

可直接执行 sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT。若要开放其他端口，
把 80 替换成目标端口号即可。执行后建议再检查现有规则是否已插入成功。

iptables 和持久化工具分别负责什么？

iptables 负责即时添加防火墙放行规则，适合立刻生效；iptables-persistent 与 netfilter-
persistent 负责把规则保存到系统配置中，让重启后仍然保留。两者通常要配合使用。

📚 【[招数学习](https://yjyj.net/category/learn)】专栏延伸阅读与热门精选（[全站文章归档](https://yjyj.net/archive)）：

 * [甲骨文使用ssh登陆 – FinalShell](https://yjyj.net/learn/centos/6208.html)
 * [table css样式](https://yjyj.net/learn/6206.html)
 * [ssh 远程登陆指定端口](https://yjyj.net/learn/centos/6210.html)
 * [electerm 设置同步](https://yjyj.net/learn/6218.html)
 * 热门必读[CSS 盒模型边界重叠 (Margin Collapse) 原理与解决方案](https://yjyj.net/css/3536.html)
 * 热门必读[css布局实例](https://yjyj.net/learn/3901.html)
