当前位置:首页>Linux>深入理解 Linux Network Namespace:容器网络隔离的核心基石

深入理解 Linux Network Namespace:容器网络隔离的核心基石

  • 2026-02-03 04:20:31
深入理解 Linux Network Namespace:容器网络隔离的核心基石

一、从一个神奇的现象说起

不知道你是否有过这样的疑问:为什么在同一台宿主机上,两个容器可以各自拥有自己的 IP 地址 172.17.0.2 和 172.17.0.3,而且互不冲突? 更神奇的是,宿主机自己也有一个 IP 地址(比如 192.168.1.100),容器之间、容器与宿主机之间的网络竟然还能正常通信。

这个看似简单的现象背后,其实隐藏着 Linux 内核一个强大的机制——Network Namespace(网络命名空间)。它就像是一个个"网络层面的平行宇宙",每个宇宙都有自己独立的网络设备、IP 地址、路由表、防火墙规则。理解了 Network Namespace,你就掌握了理解 Docker 容器网络、Kubernetes CNI 插件的钥匙。

┌─────────────────────────────────────────────────────────────────┐│                      宿主机 (Root Namespace)                     ││  ┌───────────────────────────────────────────────────────────┐  ││  │  eth0192.168.1.100/24                                   │  ││  │  lo127.0.0.1/8                                          │  ││  │  docker0172.17.0.1/24                                   │  ││  └───────────────────────────────────────────────────────────┘  ││                         │                                        ││         ┌───────────────┼───────────────┐                       ││         ▼               ▼               ▼                       ││  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐             ││  │ Namespace A │  │ Namespace B │  │ Namespace C │             ││  │ eth0@if123  │  │ eth0@if127  │  │ eth0@if131  │             ││  │ 172.17.0.2  │  │ 172.17.0.3  │  │ 172.17.0.4  │             ││  │ lo:127.0.0.1│  │ lo:127.0.0.1│  │ lo:127.0.0.1│             ││  └─────────────┘  └─────────────┘  └─────────────┘             │└─────────────────────────────────────────────────────────────────┘

图示说明:宿主机与多个 Network Namespace 共存,每个 Namespace 拥有独立的网络栈


二、Network Namespace 到底是什么?

2.1 核心定义

Network Namespace 是 Linux 内核提供的一种资源隔离机制,它将系统的网络资源划分为多个独立的逻辑空间。 在一个 Network Namespace 中创建的网卡、配置的 IP 地址、设置的路由规则,只在该 Namespace 内部生效,对其他 Namespace 完全透明。

我们可以把 Network Namespace 想象成一栋大楼里的独立房间。每个房间都有自己的:

  • 电话(网卡):可以接听和拨打电话
  • 通讯录(路由表):记录着打给谁应该怎么走
  • 门禁规则(防火墙):决定谁可以进来,谁可以出去

虽然大家都在同一栋大楼里,但每个房间内部的事情,外面的人看不到、也管不着。这就是"隔离"的含义。

2.2 Network Namespace 隔离了什么?

一个 Network Namespace 会独立维护以下网络资源:

资源类型

隔离内容

网络设备

eth0、veth、br0 等所有网络接口

回环设备

独立的 lo 接口

IP 地址

可以在同一网段重复,不会冲突

端口号

同一端口可以在不同 Namespace 中被不同进程绑定

路由表

独立的转发规则和默认网关

防火墙规则

独立的 iptables/nftables 规则

ARP 表

独立的地址解析协议缓存

⚠️重要提醒:物理网卡(如 eth0)默认属于 Root Namespace(宿主机默认的 Namespace),不能直接"移动"到其他 Namespace。但可以通过 "物理网卡 + veth pair" 的方式让其他 Namespace 访问外部网络,这点我们后面会详细讲解。


三、实战演练:从零开始创建 Network Namespace

说了这么多,是时候动手试试了!下面我们使用 ip netns 命令来创建和管理 Network Namespace。整个操作流程非常简单,保证你一看就会。

3.1 环境准备

首先确认你的系统安装了 iproute2 包(大多数 Linux 发行版默认已安装):

检查 ip 命令是否支持 netns 子命令ip netns list如果没有任何输出,说明当前没有自定义 Namespace,这是正常的

3.2 创建第一个 Namespace

创建名为 "ns1" 的 Network Namespacesudo ip netns add ns1# 查看当前所有的 Network Namespacesudo ip netns listns1# 再创建一个,用于后续实验sudo ip netns add ns2sudo ip netns listns2ns1

📝命名空间列表顺序:注意 ip netns list 显示的顺序可能与你创建的顺序不同,这是正常现象,列表按字典序排序。

3.3 查看 Namespace 中的网络设备

默认情况下,每个新创建的 Namespace 只包含一个回环设备(lo),而且默认是 DOWN 状态:

# 查看 ns1 中的网络设备sudo ip netns exec ns1 ip link listlo: <LOOPBACK> mtu 65536 qdisc noqueue state DOWN mode DEFAULT    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

你会看到:

  • lo:回环设备
  • state DOWN:默认是关闭状态
  • mtu 65536:最大传输单元 64KB

3.4 启动回环设备并配置 IP

启动 ns1 中的回环设备sudo ip netns exec ns1 ip link set lo up# 查看状态,确认 UPsudo ip netns exec ns1 ip link listlo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UP mode DEFAULT    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00注意:现在有 <LOOPBACK,UP,LOWER_UP> 标识了# 配置 IP 地址sudo ip netns exec ns1 ip addr add 192.168.100.10/24 dev lo# 查看 IP 地址配置sudo ip netns exec ns1 ip addrlo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UP     inet 127.0.0.1/8 scope host lo       valid_lft forever preferred_lft forever    inet 192.168.100.10/24 scope global lo       valid_lft forever preferred_lft forever

🎯关键点:我们给回环设备 lo 添加了第二个 IP 地址 192.168.100.10/24。在真实场景中,通常不会这么做(应该给专门创建的 veth 设备配 IP),但这个例子很好地展示了 Namespace 的隔离性——在 ns1 里,192.168.100.10 是"合法"的 IP地址。

3.5 在 Namespace 中执行任意命令

ip netns exec 不仅可以执行网络命令,还可以执行任意 shell 命令:

查看 ns1 中的主机名sudo ip netns exec ns1 hostnamens1# 查看 ns1 中的进程空间sudo ip netns exec ns1 ps aux注意:ps 命令可能需要额外配置才能看到完整进程列表sudo ip netns exec ns1 ping -c 2 127.0.0.1PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.045 ms64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.058 ms

四、进阶操作:打通网络孤岛

现在我们遇到了一个问题:创建的 Namespace 就像一个"信息孤岛",里面的进程只能自己和自己玩。要让不同 Namespace 之间通信,我们需要虚拟网线(veth pair)

4.1 什么是 veth pair?

veth(Virtual Ethernet)pair 是一对虚拟的网络设备,就像一根网线的两端。从一端发送的数据包,会从另一端立即收到。形象地说,它就是连接两个 Namespace 的"虚拟网线"。

┌─────────────┐         veth pair         ┌─────────────┐│  Namespace A │ ←──────────────────────→ │  Namespace B ││   veth0      │ ←───── "虚拟网线" ─────→ │   veth1      │└─────────────┘                           └─────────────┘

图示说明:veth pair 就像一根虚拟的网线,连接两个 Namespace

4.2 创建 veth pair 并连接两个 Namespace

# 创建 veth pair,分别命名为 veth-ns1 和 veth-ns2$ sudo ip link add veth-ns1 type veth peer name veth-ns2# 查看创建的网络设备(此时还没分配到 Namespace)$ ip link show | grep vethveth-ns2@veth-ns1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWNveth-ns1@veth-ns2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN

🔍命名规则:veth pair 的两个端点互为"对端"(peer)。如果你把 veth-ns1 移到 Namespace A,那么从 Namespace A 内部看到的设备名还是 veth-ns1,但外部(宿主机)看到的设备名会变成 veth-ns2。

4.3 将 veth pair 分别加入不同 Namespace

# 将 veth-ns1 加入 ns1,veth-ns2 加入 ns2sudo ip link set veth-ns1 netns ns1sudo ip link set veth-ns2 netns ns2# 验证分配结果(现在宿主机上看不到这两个设备了)$ ip link show | grep veth# (无输出,因为已经移到 Namespace 中了)# 在 ns1 中查看sudo ip netns exec ns1 ip linklo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UP veth-ns1@if5: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN    link/ether aa:bb:cc:dd:ee:ff brd ff:ff:ff:ff:ff:ff link-netnsid 0# 在 ns2 中查看sudo ip netns exec ns2 ip linklo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UP veth-ns2@if6: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN    link/ether aa:bb:cc:dd:ee:00 brd ff:ff:ff:ff:ff:ff link-netnsid 0

4.4 配置 IP 地址并启动设备

配置 ns1 中的 veth-ns1sudo ip netns exec ns1 ip addr add 192.168.100.1/24 dev veth-ns1sudo ip netns exec ns1 ip link set veth-ns1 up# 配置 ns2 中的 veth-ns2sudo ip netns exec ns2 ip addr add 192.168.100.2/24 dev veth-ns2sudo ip netns exec ns2 ip link set veth-ns2 up

4.5 测试连通性

# 从 ns1 ping ns2$ sudo ip netns exec ns1 ping -c 2 192.168.100.2PING 192.168.100.2 (192.168.100.256(84bytes of data.64 bytes from 192.168.100.2: icmp_seq=1 ttl=64 time=0.123 ms64 bytes from 192.168.100.2: icmp_seq=2 ttl=64 time=0.088 ms# 从 ns2 ping ns1$ sudo ip netns exec ns2 ping -c 2 192.168.100.1PING 192.168.100.1 (192.168.100.156(84bytes of data.64 bytes from 192.168.100.1: icmp_seq=1 ttl=64 time=0.098 ms64 bytes from 192.168.100.1: ip netns exec ns1 ping 192.168.100.2

🎉恭喜!你已经成功实现了两个 Namespace 之间的网络通信! 这就是容器网络的基础模型。


五、网桥模式:构建更复杂的网络拓扑

上面的点对点连接只适合两个 Namespace 通信。在实际场景中(如 Docker 容器网络),我们需要让多个容器互通。这时候就需要网桥(Bridge)

        ┌──────────────────────────────────────────────────────────┐                              宿主机                                          ┌─────────────────────────────────────────────────┐                             br0 网桥 (172.17.0.1/24)                           └─────────────────────────────────────────────────┘                                                                                    ┌─────┴─────┐        ┌─────┴─────┐                                                                                         ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐                    ns1       ns2       ns3       ns4                      veth-ns1  veth-ns2  veth-ns3  veth-ns4                   .2/24    │ │.3/24     .4/24    │ │.5/24                      └─────────┘ └─────────┘ └─────────┘ └─────────┘               └──────────────────────────────────────────────────────────┘

图示说明:通过网桥连接多个 Namespace,形成类似 Docker 容器网络的结构

5.1 创建网桥并连接 Namespace

创建名为 br0 的网桥sudo brctl addbr br0# 或使用 ip 命令sudo ip link add br0 type bridge# 启动网桥sudo ip link set br0 up# 为网桥配置 IP(作为网关)sudo ip addr add 172.17.0.1/24 dev br0

5.2 创建多个 veth pair 并接入网桥

# 创建 4 对 vethfor i in {1..4}; do    sudo ip link add veth-host${i} type veth peer name veth-ns${i}done# 将 veth-host 留在宿主机,veth-ns 移到对应的 Namespacefor i in {1..4}; do    sudo ip link set veth-host${i} master br0    sudo ip link set veth-host${i} up    sudo ip link set veth-ns${i} netns ns${i}done

5.3 配置各 Namespace 的网络

# 为每个 Namespace 配置 IPfor i in {1..4}; do    sudo ip netns exec ns${i} ip addr add 172.17.0.${i}/24 dev veth-ns${i}    sudo ip netns exec ns${i} ip link set veth-ns${i} up    # 开启回环设备    sudo ip netns exec ns${i} ip link set lo updone

现在,所有 Namespace 都可以通过网桥互相通信了!


六、Network Namespace 与 Docker 的关系

说了这么多,我们来看看实际应用。Docker 就是利用 Network Namespace 来实现容器网络隔离的

当你启动一个 Docker 容器时:

docker run -d --name web nginx

Docker 会在后台:

  1. 创建一个新的 Network Namespace
  2. 创建一对 veth pair,一端放在容器内(通常命名为 eth0),一端接在 docker0 网桥上
  3. 从网桥的地址池中分配一个 IP 给容器
  4. 配置容器的路由,让容器可以访问外部网络

你可以用 docker network inspect bridge 查看 Docker 的网络配置,或者用 ip netns list 看到 Docker 创建的 Namespace(需要一些额外操作才能访问)。


七、常见问题与注意事项

7.1 如何查看宿主机上的物理 Namespace?

Root Namespace(宿主机默认的 Namespace)没有名字,可以用以下方式验证:

# 查看宿主机网络设备$ ip linklo: <LOOPBACK,UP,LOWER_UP>eth0: <BROADCAST,MULTICAST,UP,LOWER_UP>docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP>

7.2 物理网卡能直接移入 Namespace 吗?

不能。物理网卡(如 eth0)直接属于宿主机内核,不能直接"移动"到用户创建的 Namespace。如果需要让 Namespace 访问物理网络,需要通过路由 +NAT 建立映射关系的方式实现。

7.3 如何删除不再使用的 Namespace?

删除指定 Namespace(会自动清理其中的设备)sudo ip netns del ns1# 清空所有自定义 Namespacesudo ip netns list | xargs -r sudo ip netns del

⚠️注意:删除 Namespace 前,确保没有进程在使用它,否则可能导致系统不稳定。

7.4 Namespace 中的进程能看到宿主机上的进程吗?

不能。PID Namespace(进程命名空间)是另一种隔离机制。默认情况下,每个 Network Namespace 没有独立的 PID Namespace。但 Docker 等容器运行时通常会结合使用多种 Namespace(Network、PID、Mount、UTS 等)来实现完整的容器隔离。


八、总结

Network Namespace 是 Linux 内核提供的强大网络隔离机制,它让不同的进程组可以拥有独立的网络环境,互不干扰。从 Docker 容器到 Kubernetes Pod,从网络测试到安全隔离,Network Namespace 的应用无处不在。

核心要点回顾:

  • 创建ip netns add <name>
  • 执行ip netns exec <name> <command>
  • 连接:使用 veth pair 打通不同 Namespace
  • 扩展:使用网桥连接多个 Namespace

理解 Network Namespace,不仅能帮你更好地理解容器网络原理,还能让你在网络调试、安全隔离等场景中游刃有余。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-08 16:35:19 HTTP/2.0 GET : https://f.mffb.com.cn/a/463248.html
  2. 运行时间 : 0.145528s [ 吞吐率:6.87req/s ] 内存消耗:4,565.13kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=b127633de8f8f0e2a382fd89dbdf65ae
  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.000539s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000760s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000311s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000290s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000617s ]
  6. SELECT * FROM `set` [ RunTime:0.001217s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000607s ]
  8. SELECT * FROM `article` WHERE `id` = 463248 LIMIT 1 [ RunTime:0.004926s ]
  9. UPDATE `article` SET `lasttime` = 1770539719 WHERE `id` = 463248 [ RunTime:0.013654s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.002448s ]
  11. SELECT * FROM `article` WHERE `id` < 463248 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001392s ]
  12. SELECT * FROM `article` WHERE `id` > 463248 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.010816s ]
  13. SELECT * FROM `article` WHERE `id` < 463248 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.004560s ]
  14. SELECT * FROM `article` WHERE `id` < 463248 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.023732s ]
  15. SELECT * FROM `article` WHERE `id` < 463248 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.011154s ]
0.147861s