当前位置:首页>Linux>深入 Linux 防火墙:双组件原理与落地配置指南

深入 Linux 防火墙:双组件原理与落地配置指南

  • 2026-06-22 04:41:17
深入 Linux 防火墙:双组件原理与落地配置指南

问题背景

Linux 防火墙是服务器网络安全的第一道屏障。无论是在本地数据中心还是云服务器上,正确配置防火墙都是运维工程师的基本功。配置不当可能导致:

  • 该开放的端口没开放,业务无法访问
  • 该关闭的端口没关闭,攻击面暴露
  • 规则顺序错误导致流量被意外放行或阻断
  • 生产环境操作时把自己踢出去,无法远程登录

Linux 防火墙有两套主流工具:iptables 和 firewalld(CentOS 7+ 默认使用)。Ubuntu 默认使用 ufw(底层也是 iptables)。这三者原理相通,只是配置方式不同。这篇文章面向初中级 Linux 运维工程师,系统讲解 iptables 和 firewalld 的工作原理、配置方法、常见场景和排错思路。

防火墙基本原理

1.1 什么是 Netfilter

Linux 防火墙的核心是 Netfilter,它是内核模块,负责在网络包经过的各个 Hook 点检查和处理数据包。iptables/firewalld/ufw 都是用来配置 Netfilter 规则的工具,不是防火墙本身。

Netfilter 的 5 个 Hook 点:

PREROUTING  →  路由决策前(DNAT)
FORWARD     →  转发流量(不是本机进出的包)
INPUT       →  到达本机的包
OUTPUT      →  本机发出的包
POSTROUTING →  路由决策后(SNAT)

1.2 iptables 的表(tables)和链(chains)

iptables 将规则组织成

表(tables)

  • filter:最常用,负责过滤流量(放行/拒绝)
  • nat:网络地址转换(DNAT/SNAT)
  • mangle:修改数据包的特殊字段(如 TOS、TTL)
  • raw:绕过连接追踪(raw 表的 PREROUTING 和 OUTPUT)

链(chains): 每个表有不同的内置链:

filter 表:INPUT, FORWARD, OUTPUT
nat 表:PREROUTING, INPUT, OUTPUT, POSTROUTING
mangle 表:PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING
raw 表:PREROUTING, OUTPUT

数据包在 iptables 中的处理流程

入站流量:
eth0 → PREROUTING (nat) → 路由判断 → INPUT (filter) → 本机进程

转发流量:
eth0 → PREROUTING (nat) → 路由判断 → FORWARD (filter) → POSTROUTING (nat) → eth1

出站流量:
本机进程 → OUTPUT (filter/nat) → POSTROUTING (nat) → eth0

1.3 规则匹配顺序

iptables 规则按顺序匹配,第一个匹配的规则决定数据包的处理方式。如果没有任何规则匹配,则使用链的默认策略(Policy)。

匹配顺序:从头到尾依次匹配,遇到第一条匹配的规则就执行该规则的动作(ACCEPT/DROP/REJECT),不再继续匹配后续规则。

这就是为什么经常有人把"允许 SSH"规则放在所有拒绝规则之前——如果放错了顺序,所有流量都会被前面的拒绝规则拦住。

第二步:iptables 基础操作

2.1 查看当前规则

# 查看 filter 表的规则(最常用的表)
sudo iptables -L -n -v

# 参数说明:
# -L: 列出规则
# -n: 不做 DNS 反解,显示 IP 和端口数字
# -v: 显示详细信息(包计数、字节计数)

# 只看某个链(INPUT/OUTPUT/FORWARD)
sudo iptables -L INPUT -n -v
sudo iptables -L OUTPUT -n -v
sudo iptables -L FORWARD -n -v

# 查看 nat 表的规则
sudo iptables -t nat -L -n -v

# 查看规则编号(用于删除特定规则)
sudo iptables -L INPUT -n --line-numbers

# 查看规则并显示规则所属的链和表
sudo iptables -L -n --table filter

2.2 iptables 的基本语法

# 基本语法:
# iptables [-t table] -A chain rule-specification [options]
# iptables [-t table] -D chain rule-specification [options]
# iptables [-t table] -I chain [rulenum] rule-specification [options]
# iptables [-t table] -R chain rulenum rule-specification [options]
# iptables [-t table] -F [chain]
# iptables [-t table] -P chain target [options]

# 常用动作(target):
# ACCEPT:放行
# DROP:丢弃(不响应客户端)
# REJECT:拒绝(响应客户端一个 ICMP 或 TCP RST)
# LOG:记录日志(但不改变数据包的处理)
# SNAT:源地址转换
# DNAT:目标地址转换
# MASQUERADE:动态源地址转换(常用于 NAT 场景)

2.3 规则的匹配条件

# 按源 IP 匹配
sudo iptables -A INPUT -s 192.168.1.100 -j ACCEPT

# 按目标 IP 匹配
sudo iptables -A OUTPUT -d 8.8.8.8 -j DROP

# 按协议匹配
sudo iptables -A INPUT -p tcp -j ACCEPT
sudo iptables -A INPUT -p udp -j ACCEPT
sudo iptables -A INPUT -p icmp -j ACCEPT

# 按端口匹配(必须先指定 -p tcp 或 -p udp)
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# 按源端口匹配(通常用于 OUTPUT 链)
sudo iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

# 按多个端口匹配
sudo iptables -A INPUT -p tcp -m multiport --dports 80,443,8080 -j ACCEPT

# 按 IP 和端口组合匹配
sudo iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -j ACCEPT

# 按网络接口匹配(-i 指定入站网卡,-o 指定出站网卡)
sudo iptables -A INPUT -i eth0 -j ACCEPT
sudo iptables -A OUTPUT -o eth0 -j ACCEPT

# 按连接状态匹配(ESTABLISHED, RELATED 是已建立连接,NEW 是新建连接)
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 按 ICMP 类型匹配
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
sudo iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT

2.4 规则基本操作

# 追加规则(-A):在链的最后添加规则
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 插入规则(-I):在链的开头或指定位置插入规则
sudo iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT
# 这条规则会被插入到 INPUT 链的第 1 位(最前面)

# 删除规则(-D):删除匹配的规则
sudo iptables -D INPUT -p tcp --dport 22 -j ACCEPT

# 按编号删除
sudo iptables -D INPUT 3  # 删除 INPUT 链的第 3 条规则

# 替换规则(-R):替换指定位置的规则
sudo iptables -R INPUT 3 -p tcp --dport 2222 -j ACCEPT

# 清空链的所有规则(-F)
sudo iptables -F INPUT    # 清空 INPUT 链
sudo iptables -F OUTPUT  # 清空 OUTPUT 链
sudo iptables -F         # 清空 filter 表的所有链

# 设置默认策略(-P)
sudo iptables -P INPUT DROP      # 默认拒绝所有入站
sudo iptables -P FORWARD DROP    # 默认拒绝转发
sudo iptables -P OUTPUT ACCEPT   # 默认允许所有出站

2.5 保存和恢复规则

# CentOS/RHEL: 使用 iptables-services
sudo yum install -y iptables-services

# 保存当前规则到文件
sudo iptables-save > /etc/sysconfig/iptables

# 从文件恢复规则
sudo iptables-restore < /etc/sysconfig/iptables

# 设置开机自动加载(CentOS)
sudo systemctl enable iptables

# Ubuntu: 使用 iptables-persistent
sudo apt-get install -y iptables-persistent

# 保存规则
sudo netfilter-persistent save

# Ubuntu 低版本使用:
sudo sh -c "iptables-save > /etc/iptables/rules.v4"

第三步:生产环境规则配置实战

3.1 最小化防火墙规则模板

以下是一套最小化、安全的 iptables 规则配置,适合大多数 Linux 服务器:

#!/bin/bash
# save as: setup_iptables.sh
# ⚠️ 重要:执行前确保你有 VNC/ILO 等备用登录方式

# 清空现有规则(会断开所有现有连接,确保这是通过本地 console 执行的)
sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t mangle -F
sudo iptables -t mangle -X

# 设置默认策略
sudo iptables -P INPUT DROP      # 默认拒绝所有入站
sudo iptables -P FORWARD DROP    # 默认拒绝转发
sudo iptables -P OUTPUT ACCEPT   # 默认允许所有出站

# 允许本地回环流量
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT

# 允许已建立的连接
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 允许 SSH(把你的 IP 替换进去,多个 IP 用逗号分隔)
ALLOWED_SSH_IPS="192.168.1.100"
for ip in$ALLOWED_SSH_IPSdo
    sudo iptables -A INPUT -p tcp -s $ip --dport 22 -j ACCEPT
done

# 如果没有固定 IP,临时允许所有 SSH(生产环境建议用 fail2ban + 有限 IP)
# sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 允许 HTTP/HTTPS
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# 允许 ICMP(ping),可选
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

# 保存规则
sudo iptables-save > /etc/sysconfig/iptables

# 如果是 Ubuntu
# sudo netfilter-persistent save

3.2 开放 MySQL/Redis 等数据库端口

⚠️ 警告:数据库端口(MySQL 3306、Redis 6379、MongoDB 27017 等)默认不应该暴露在公网。以下配置假设数据库只允许应用服务器访问。

# 允许应用服务器 IP 访问 MySQL(3306)
sudo iptables -A INPUT -p tcp -s 10.0.1.0/24 --dport 3306 -j ACCEPT

# 允许应用服务器 IP 访问 Redis(6379)
# 注意:Redis 默认没有密码,不应该暴露在公网
sudo iptables -A INPUT -p tcp -s 10.0.1.0/24 --dport 6379 -j ACCEPT

# 允许应用服务器 IP 访问 PostgreSQL(5432)
sudo iptables -A INPUT -p tcp -s 10.0.1.0/24 --dport 5432 -j ACCEPT

# 允许内网 IP 访问 MongoDB(27017)
sudo iptables -A INPUT -p tcp -s 10.0.1.0/24 --dport 27017 -j ACCEPT

# 保存规则
sudo iptables-save > /etc/sysconfig/iptables

3.3 限制 SSH 访问来源

# 只允许特定 IP 或 IP 段访问 SSH
# 先清除之前的 SSH 规则(如果有)
sudo iptables -D INPUT -p tcp --dport 22 -j ACCEPT
# 或者按编号删除
# sudo iptables -D INPUT <rule_number>

# 允许特定 IP 访问 SSH
sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 22 -j ACCEPT

# 允许 IP 段访问 SSH
sudo iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -j ACCEPT

# 允许多个 IP 段(用逗号分隔不生效,需要多条规则)
sudo iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp -s 10.0.0.0/8 --dport 22 -j ACCEPT

# 保存
sudo iptables-save > /etc/sysconfig/iptables

3.4 防止 SYN Flood 攻击

# 启用 SYN Cookie(防止 SYN Flood)
sudo sysctl -w net.ipv4.tcp_syncookies=1

# 限制 SYN 队列长度
sudo sysctl -w net.ipv4.tcp_max_syn_backlog=4096

# 在 iptables 中添加 SYN 限制
sudo iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --set --name SYN_FLOOD
sudo iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 10 --count 100 --rttl --name SYN_FLOOD -j DROP

# 限制每个 IP 的并发连接数
sudo iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP
sudo iptables -A INPUT -p tcp --dport 443 -m connlimit --connlimit-above 50 -j DROP

3.5 配置 NAT 和端口转发

场景:内网服务器无法直接访问公网,需要通过有公网 IP 的服务器做 NAT 上网:

# 开启 IP 转发(临时)
sudo sysctl -w net.ipv4.ip_forward=1

# 开启 IP 转发(永久)
echo"net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

# 配置 SNAT(源地址转换,适合有固定公网 IP)
sudo iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -o eth0 -j SNAT --to-source 203.0.113.10

# 配置 MASQUERADE(动态源地址转换,适合公网 IP 会变化的情况)
sudo iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -o eth0 -j MASQUERADE

# 配置 DNAT(端口转发,把公网 IP 的 8080 端口转发到内网 10.0.1.100 的 80 端口)
sudo iptables -t nat -A PREROUTING -p tcp -d 203.0.113.10 --dport 8080 -j DNAT --to-destination 10.0.1.100:80

# 本机端口转发(访问本机的 8080 端口,转发到内网 10.0.1.100:80)
sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 10.0.1.100:80
sudo iptables -A FORWARD -d 10.0.1.100 -p tcp --dport 80 -j ACCEPT

# 保存 NAT 规则
sudo iptables-save > /etc/sysconfig/iptables

第四步:firewalld 基础操作

CentOS 7/8 和 RHEL 7/8 默认使用 firewalld 作为防火墙管理工具。firewalld 是 iptables 的上层封装,提供了 Zone(区域)和 Service(服务)的概念,简化了规则配置。

4.1 firewalld 基本概念

Zone(区域):firewalld 使用预定义的 Zone 来管理不同信任级别的网络:

drop:丢弃所有连接,完全不响应(最严格)
block:拒绝所有入站连接,并返回 ICMP 错误
public:不信任的网络,只允许选定的入站连接
external:用于外部网络,启用 NAT/MASQUERADE
dmz:只允许 SSH 入站(隔离区)
work:工作网络,信任程度较高
home:家庭网络,信任程度较高
internal:内部网络,信任程度较高
trusted:完全信任,允许所有流量

Service(服务):预定义的服务包含一组端口和协议:

ssh:22/TCP
http:80/TCP
https:443/TCP
mysql:3306/TCP

4.2 firewalld 基本命令

# 查看 firewalld 状态
sudo firewall-cmd --state
# running 表示运行中

# 查看默认 zone
sudo firewall-cmd --get-default-zone

# 查看激活的 zone
sudo firewall-cmd --get-active-zones

# 查看某个 zone 的规则
sudo firewall-cmd --zone=public --list-all

# 查看所有预定义服务
sudo firewall-cmd --get-services

# 查看所有预定义 ICMP 类型
sudo firewall-cmd --get-icmptypes

4.3 firewalld 配置规则

# 临时放行端口(重启后失效)
sudo firewall-cmd --add-port=8080/tcp
sudo firewall-cmd --add-port=3306/tcp

# 永久放行端口(重启后仍有效,需要 --permanent)
sudo firewall-cmd --permanent --add-port=8080/tcp

# 临时放行服务
sudo firewall-cmd --add-service=http
sudo firewall-cmd --add-service=https

# 永久放行服务
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https

# 移除端口
sudo firewall-cmd --remove-port=8080/tcp

# 移除服务
sudo firewall-cmd --remove-service=http

# 允许特定 IP 访问端口
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="22" protocol="tcp" accept'

# 允许 IP 段访问端口
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="3306" protocol="tcp" accept'

# 拒绝特定 IP 访问
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="1.2.3.4" port port="22" protocol="tcp" reject'

# 丢弃来自特定 IP 的所有流量
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="1.2.3.4" drop'

# 限制并发连接数
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="0.0.0.0/0" port port="80" protocol="tcp" limit value="50/m" accept'

# 重新加载规则(每次修改 --permanent 规则后需要执行)
sudo firewall-cmd --reload

# 查看当前规则
sudo firewall-cmd --list-all

4.4 firewalld Zone 配置实战

# 将网卡添加到特定 Zone
sudo firewall-cmd --zone=trusted --change-interface=eth0

# 设置默认 Zone 为 trusted(完全信任)
sudo firewall-cmd --set-default-zone=trusted

# 为特定 Zone 添加服务
sudo firewall-cmd --zone=work --add-service=ssh
sudo firewall-cmd --zone=work --add-service=https

# 设置 Zone 的默认策略
sudo firewall-cmd --zone=public --set-target=DROP
sudo firewall-cmd --zone=public --add-service=ssh
sudo firewall-cmd --zone=public --add-service=http

4.5 firewalld 配置 NAT

# 开启 NAT(类似 iptables 的 MASQUERADE)
sudo firewall-cmd --permanent --zone=external --add-masquerade

# 端口转发
# 把 external zone 的 8080 端口转发到内网 10.0.1.100:80
sudo firewall-cmd --permanent --zone=external --add-forward-port=port=8080:proto=tcp:toport=80:toaddr=10.0.1.100

# IP 转发(类似 DNAT)
sudo firewall-cmd --permanent --zone=external --add-forward-port=port=80:proto=tcp:toaddr=10.0.1.100

# reload 后查看
sudo firewall-cmd --reload
sudo firewall-cmd --zone=external --list-all

第五步:ufw 基础操作(Ubuntu)

Ubuntu 默认使用 ufw(Uncomplicated Firewall),是 iptables 的简化封装。

5.1 ufw 基本命令

# 查看 ufw 状态
sudo ufw status verbose

# 启用 ufw
sudo ufw enable

# 禁用 ufw
sudo ufw disable

# 查看规则编号
sudo ufw status numbered

# 删除规则
sudo ufw delete <rule_number>

5.2 ufw 配置规则

# 设置默认策略
sudo ufw default deny incoming
sudo ufw default allow outgoing

# 允许 SSH
sudo ufw allow ssh
# 或
sudo ufw allow 22/tcp

# 允许特定 IP 访问 SSH
sudo ufw allow from 192.168.1.100 to any port 22

# 允许 IP 段访问 SSH
sudo ufw allow from 192.168.1.0/24 to any port 22

# 允许 HTTP/HTTPS
sudo ufw allow http
sudo ufw allow https
# 或
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# 拒绝特定 IP
sudo ufw deny from 1.2.3.4

# 限制 SSH 登录(5 分钟内最多 6 次尝试)
sudo ufw limit 22/tcp

# 删除规则
sudo ufw delete allow 80/tcp

# 重置所有规则
sudo ufw reset

第六步:常见问题排错

6.1 被防火墙规则挡了,无法 SSH 登录

⚠️ 如果你已经把自己踢出去了,通过 VNC/ILO/云控制台登录

# 1. 先查看当前规则
sudo iptables -L INPUT -n --line-numbers

# 2. 查看是否有 SSH 规则
sudo iptables -L INPUT -n | grep 22

# 3. 如果 SSH 规则没有了,从 console 本地添加
sudo iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT

# 4. 如果防火墙是 DROP 掉了所有流量,先允许 console 登录
# 在云环境中,eth0 通常是管理网卡
sudo iptables -I INPUT 1 -i eth0 -j ACCEPT

# 5. 如果是 firewalld,在 console 中执行
sudo firewall-cmd --zone=trusted --add-interface=eth0
sudo firewall-cmd --zone=public --add-service=ssh

6.2 规则顺序错误导致流量被意外放行

问题:添加了一条 REJECT 规则在 ACCEPT 规则之前,导致所有流量都被 REJECT 了。

# 查看规则顺序
sudo iptables -L INPUT -n --line-numbers

# 错误示例:
# Chain INPUT (policy ACCEPT)
# num  target     prot opt source               destination
# 1    REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited
# 2    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
# 第 1 条规则把所有人都 REJECT 了,第 2 条永远不会匹配到

# 修复:删除错误的 REJECT 规则,插入到正确位置
sudo iptables -D INPUT 1  # 删除错误的规则
sudo iptables -I INPUT 2 -p tcp --dport 22 -j ACCEPT  # 插入到正确位置(通常是最前面)

# firewalld 查看和删除 rich rule
sudo firewall-cmd --list-rich-rules
sudo firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="0.0.0.0/0" reject'

6.3 DNS 解析失败

问题:配置防火墙后,DNS 解析不工作了。

# DNS 使用 53/UDP
sudo iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
sudo iptables -A INPUT -p udp --sport 53 -j ACCEPT

# 或者允许所有 DNS 流量
sudo iptables -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
sudo iptables -A INPUT -p udp -m udp --sport 53 -j ACCEPT

6.4 规则生效但端口仍然无法访问

排查顺序:

# 1. 确认规则是否已添加
sudo iptables -L INPUT -n | grep <port>

# 2. 确认端口确实在监听
sudo ss -tunapl | grep <port>
sudo netstat -tunapl | grep <port>

# 3. 确认服务已启动
sudo systemctl status <service-name>

# 4. 确认链的默认策略
sudo iptables -L | grep "policy"

# 5. 查看数据包计数(判断规则是否被匹配)
sudo iptables -L INPUT -n -v
# pkts 列:如果一直是 0,说明规则没有被匹配到

# 6. 尝试抓包确认数据包是否到达
sudo tcpdump -i eth0 port <port> -n

6.5 服务启动后端口未监听

# 查看服务状态
sudo systemctl status nginx

# 查看端口是否监听
sudo ss -tunapl | grep :80

# 查看服务启动日志
sudo journalctl -u nginx -n 50

# 如果是 Docker 容器,检查容器是否在运行
sudo docker ps

# 检查 iptables 规则是否有误拦截
sudo iptables -L INPUT -n --counter | grep <port>

第七步:生产环境防火墙管理最佳实践

7.1 规则变更流程

# 1. 变更前:备份当前规则
sudo iptables-save > /etc/sysconfig/iptables.bak.$(date +%Y%m%d_%H%M%S)

# 2. 变更中:先在本地 console 测试(如果有)
# 如果必须通过 SSH 操作,先开一个新的 SSH session 测试
# 新增规则时先写好删除命令,万一失败可以立即回滚

# 3. 变更后:验证
# - 确认新规则已添加
sudo iptables -L INPUT -n | grep <port>

# - 验证端口可达性
# 从外部机器测试:telnet <server-ip> <port>
# 或:nc -zv <server-ip> <port>

# - 验证业务功能正常

# 4. 保存规则
sudo iptables-save > /etc/sysconfig/iptables

7.2 防火墙规则审计脚本

#!/bin/bash
# save as: iptables_audit.sh
# 定期审计防火墙规则

echo"===== iptables 规则审计 ====="
echo"执行时间: $(date)"
echo""

echo"[1] 默认策略"
sudo iptables -L -n | grep "policy"
echo""

echo"[2] INPUT 链规则数量"
sudo iptables -L INPUT -n | wc -l
echo""

echo"[3] 当前监听端口"
sudo ss -tunapl | grep LISTEN | awk '{print $5}' | awk -F: '{print $2}' | sort -n | uniq
echo""

echo"[4] SSH 访问规则"
sudo iptables -L INPUT -n | grep ":22 "
echo""

echo"[5] 所有 ACCEPT 规则(允许的流量)"
sudo iptables -L INPUT -n | grep ACCEPT
echo""

echo"[6] 所有 DROP/REJECT 规则(拒绝的流量)"
sudo iptables -L INPUT -n | grep -E "DROP|REJECT"
echo""

echo"[7] NAT 规则"
sudo iptables -t nat -L -n --line-numbers
echo""

echo"[8] 规则保存位置"
if [ -f /etc/sysconfig/iptables ]; then
echo"规则已保存到 /etc/sysconfig/iptables"
echo"最后修改时间: $(stat -c %y /etc/sysconfig/iptables)"
else
echo"⚠️ 警告:规则未保存到 /etc/sysconfig/iptables"
fi

总结

Linux 防火墙的核心是理解规则顺序三个概念:

iptables 的处理顺序:
数据包 → PREROUTING → 路由判断 → INPUT/FORWARD/OUTPUT → POSTROUTING → 数据包

生产环境防火墙配置原则

  1. 默认拒绝:INPUT 和 FORWARD 链默认策略设为 DROP
  2. 最小权限:只开放业务必需的端口
  3. 来源限制:SSH 端口只允许运维 IP 访问,禁止 0.0.0.0/0
  4. 规则顺序:允许规则在前,拒绝规则在后
  5. 状态追踪:放行 ESTABLISHED,RELATED 连接,减少规则数量
  6. 日志审计:记录 DROP 的流量,便于发现攻击
  7. 备份恢复:变更前备份,变更后验证,异常时回滚

工具选择

  • CentOS 7/8、RHEL 7/8:使用 firewalld
  • Ubuntu:使用 ufw
  • Debian、CentOS 6 及更早版本:使用 iptables

排错核心:规则不生效时,先看顺序(iptables -L -n --line-numbers),再看默认策略,最后用 tcpdump 抓包确认数据包是否到达。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 14:00:17 HTTP/2.0 GET : https://f.mffb.com.cn/a/490744.html
  2. 运行时间 : 0.108660s [ 吞吐率:9.20req/s ] 内存消耗:4,599.82kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=7fc0965078af63e3b416b8e0a09fc361
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000783s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000914s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000325s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000252s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000477s ]
  6. SELECT * FROM `set` [ RunTime:0.000219s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000482s ]
  8. SELECT * FROM `article` WHERE `id` = 490744 LIMIT 1 [ RunTime:0.000640s ]
  9. UPDATE `article` SET `lasttime` = 1783058417 WHERE `id` = 490744 [ RunTime:0.015965s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000373s ]
  11. SELECT * FROM `article` WHERE `id` < 490744 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000615s ]
  12. SELECT * FROM `article` WHERE `id` > 490744 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000439s ]
  13. SELECT * FROM `article` WHERE `id` < 490744 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002240s ]
  14. SELECT * FROM `article` WHERE `id` < 490744 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.010886s ]
  15. SELECT * FROM `article` WHERE `id` < 490744 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.002511s ]
0.110315s