背景

Ubuntu 24.04 默认使用 nftables 作为底层防火墙,但 iptables 命令仍然可用(通过 iptables-nft 兼容层)。本文记录使用 iptables 管理端口的基本操作。


1. 查询当前开放的端口

iptables -L -n

输出示例:

Chain INPUT (policy ACCEPT)
target     prot opt source         destination
ACCEPT     tcp  --  0.0.0.0/0     0.0.0.0/0    tcp dpt:22
ACCEPT     tcp  --  0.0.0.0/0     0.0.0.0/0    tcp dpt:80
ACCEPT     tcp  --  0.0.0.0/0     0.0.0.0/0    tcp dpt:443

如果想查看带行号的输出(方便后续删除),使用:

iptables -L INPUT --line-numbers

2. 开启端口

2.1 添加规则

# 在 INPUT 链的第 5 条位置插入规则,放行 7777 端口 TCP 流量
iptables -I INPUT 5 -p tcp --dport 7777 -j ACCEPT

参数说明:

参数 含义
-I INPUT 5 插入到 INPUT 链的第 5 条位置
-p tcp 协议为 TCP
--dport 7777 目标端口为 7777
-j ACCEPT 动作:允许

2.2 永久保存规则

iptables 规则默认保存在内存中,重启后会丢失。需要安装并保存:

# 安装持久化工具
apt install iptables-persistent

# 保存当前规则
netfilter-persistent save

# 或使用
iptables-save > /etc/iptables/rules.v4

如果安装 iptables-persistent 时提示保存当前规则,选择


3. 关闭端口

3.1 查找规则序号

iptables -L INPUT --line-numbers | grep 7777

输出示例:

5    ACCEPT     tcp  --  anywhere  anywhere  tcp dpt:7777

3.2 删除规则

# 删除 INPUT 链的第 5 条规则
iptables -D INPUT 5

3.3 永久保存

netfilter-persistent save

4. 完整操作示例

# 查看当前规则(带行号)
iptables -L INPUT --line-numbers

# 开启 7777 端口
iptables -I INPUT 5 -p tcp --dport 7777 -j ACCEPT
netfilter-persistent save

# 关闭 7777 端口
iptables -L INPUT --line-numbers | grep 7777
iptables -D INPUT 5
netfilter-persistent save

5. 注意事项

注意点 说明
规则顺序 iptables 按顺序匹配,-I 插入到指定位置,-A 追加到末尾
重启丢失 未保存的规则重启后丢失,务必执行 netfilter-persistent save
Ubuntu 24.04 底层使用 nftables,iptables 通过兼容层运行,功能完全兼容
ufw 冲突 如果同时使用 ufw,两者规则可能互相覆盖,建议只用一种
云服务商 阿里云/腾讯云/天翼云的安全组规则独立于系统防火墙,需在云控制台也放行端口

Professional English Terms

Term Meaning
iptables Linux 内核防火墙管理工具,基于规则表的包过滤
INPUT Chain 入站流量处理链,控制进入本机的数据包
ACCEPT / DROP 允许 / 丢弃数据包的动作
netfilter-persistent iptables 规则持久化工具,保存规则到文件
iptables-nft Ubuntu 24.04 中 iptables 的 nftables 兼容层