当前位置:首页>Linux>Linux 如何路由网络数据包

Linux 如何路由网络数据包

  • 2026-02-11 12:32:08
Linux 如何路由网络数据包

How Linux Routes Network Packets

既然你已对 Linux 网络路由有了基本了解,现在是时候深入探讨一些利用这些知识可以实现的有趣功能了。

丢弃数据包

以下是一些丢弃数据包的示例及其效果。

静默丢弃数据包。

ip route add blackhole [destination addr/mask]

以 ICMP “主机不可达” 响应拒绝数据包。

ip route add unreachable [destination addr/mask] 

以 ICMP “管理性禁止” 响应拒绝数据包。

ip route add prohibit [destination addr/mask]

以 ICMP “网络不可达” 响应拒绝数据包。

ip route add throw [destination addr/mask]

操纵源地址

src 参数会强制沿特定路由发出的出站流量,其源 IP 地址显示为指定的地址。一个典型应用场景是:将出站流量按需引导至共享的网络接口。

其格式为:

~# ip route add n.n.n.n/n.n.n.n dev[device] src n.n.n.n

例如:

ip route add 10.10.14.107 dev tun0 table vpn src 192.168.1.100

大致可理解为: “向名为 vpn 的路由表中添加一条新路由:将发往目标地址 10.10.14.107 的流量,其源地址设为 192.168.1.100,并通过 tun0 接口发送出去。

按时间顺序拆解,也可以这样理解该命令:

add
添加一条新路由
10.10.14.107
目标地址为 10.10.14.107
dev tun0
出站数据包通过 tun0 设备发送
table vpn
将此新路由放入名为 vpn 的表中
src 192.168.1.100
将经过此路由的数据包的源地址修改为 192.168.1.100

注意src 的使用仅对源自本服务器的数据包有效,通常不建议使用。

源地址 NAT(或非 NAT)

尽管 iproute2(即 ip route 命令)有时能模拟类似 NAT 的功能,但它并不具备真正的 NAT 能力。RPDB 仅能在数据包为新建且源自本机(localhost)时修改其源 IP 地址。根据定义,iproute 是一个无状态(stateless)的过程。它只处理原始数据包,其作用仅仅是“路由”它们(而 iptables 和 ip rule 则能理解网络连接状态)。因此,从技术上讲,iproute 的 NAT 是无状态的。虽然它看起来像是一种 NAT,但实际上并非如此。

前文提到的 src 参数可以修改数据包的源地址。但它仅对源自当前主机的数据包有效[1]。这使其区别于由 iptables 处理的源 NAT(SNAT)。

iptables 中的源 NAT(包括非常相似的 MASQUERADE 功能)仅作用于连接的第一个数据包(尽管 SNAT 更加健壮一些)。这种策略有助于确保属于已有连接的数据包不会丢失——在 iproute 能任意修改源 NAT 的时代,这种情况是可能发生的。

iproute2 处理流程受到内核限制:除非数据包是新建且源自 localhost,否则无法对其执行任何 NAT 操作。在数据包离开 localhost 后、但在进入 OUTPUT iptables 链之前,RPDB 有能力修改出站数据包的源地址。但这在技术上并非 NAT,而是一种无状态的数据包修改(mangling)。和 NAT 一样,它也仅适用于新建连接。无论如何,通常不建议这样做。只有极少数场景下,使用 RPDB 修改新建数据包的源 IP 才有意义。几乎总是更推荐在 iptables 的 POSTROUTING 链中执行源 NAT(SNAT)操作。你可以参考 iptables 数据包路由流程图,或查看此版本,其中展示了 iproute 在何时能影响数据包流。

图 6(右侧)展示了 iptables 出站数据包流程,并高亮了 iproute2 源 NAT 的“后门”注入点。

图6(右侧)展示了iptables出站数据包处理流程,其中已高亮标注了iproute2源网络地址转换后门

何时使用 src NAT 是合理的

请记住,iproute 对连接状态一无所知。只有在以下两种情况下,我才建议你使用 ip route 来修改数据包的源地址。

第一种情况是:单个网络设备连接了多个 LAN。在此场景下,使用 ip route 修改源地址比使用 iptables 更合理,因为 ip route 知道数据包将走哪条出站路由,且数据包确实源自本服务器。这能解决一个潜在问题:下一跳设备尝试将回复发回服务器时,若数据包的源地址不在正确范围内,该数据包就会被丢弃,导致源服务器收不到回复。

第二种合理场景是:服务器拥有多个网络设备。当指定了某个特定网络设备来发送出站数据包时,同时设置该数据包的源 IP 地址是顺理成章的。

请注意,ip route无法用于修改数据包的目标地址(即目标 NAT 或 DNAT)。

iproute NAT 的简史

在 2004 年底 Linux 2.6.9 内核更新之前,iproute 可以对任意出站数据包执行 NAT。出于多种原因,此功能被移除,主要是为了整合现有的网络工具,防止它们相互冲突。对于 iproute NAT 而言,这是一个颇具争议的决定,因为它曾是一项强大的能力(尽管其在现实世界中的实际用途值得怀疑)。

当时这一路由变更并未引起太多关注,我怀疑绝大多数人甚至都未曾察觉。事实上,如果你查阅 2.6.9 的发布说明,几乎找不到关于 iproute2 变更的提及。该更新被描述为一个“通用网络统计”的补丁。诚然,完整的注释确实提到了连接跟踪。

对 iproute2 的这项变更,在某种程度上是连接跟踪变更的间接结果,但也是有意为之的影响。即便是完整的发布说明,也未能充分体现此次变更的重要性:“一个新的统一统计工具正在开发中,用于路由缓存、连接跟踪和邻居缓存,并将包含在 iproute2 中。”[2]

从功能上讲,这次变更使 iproute 的 NAT 能力与 iptables 保持一致,并旨在鼓励用户使用 iptables 来进行数据包 NAT 变换(使用有状态的 SNAT 和 DNAT;本文档的 iptables 章节对此有更详细的讨论)。

不出所料,iproute2 大部分 NAT 功能的丧失,直接将 iptables 推到了 NAT 的聚光灯下,因为这意味着再使用 ip route 来执行 NAT 任务已无太大意义。

有状态 vs. 无状态:它们意味着什么?

“无状态”是什么意思?你在网络术语中可能会经常听到这个词。它的含义很简单:数据包不会被跟踪,也不会与特定的连接及其状态相关联。一个使用“无状态”数据包检查的工具,不关心数据包所属的连接,它只根据数据包自身的属性进行评估。反之亦然。

例如,一个“有状态”的工具,能够感知当前数据包是否属于一个已建立的连接,并了解该数据包及其对应连接的一些信息。简而言之,它知晓连接和数据包的“状态”,无论它们具体是什么。

当你必须使用无状态 NAT 时

Linux 中许多被弃用的功能从未真正消亡。iproute2 的无状态数据包修改能力正是如此。虽然通过 ip route 命令的钩子已被移除,但其执行无状态 NAT 的能力依然存在。你只需要知道在哪里找到它以及如何使用它。tc 是流量控制器(Traffic Controller)的命令行调用工具,它是 iproute2 的一部分。对 tc 的深入解释超出了本文档的范围,但我将简要描述一下,以便感兴趣的读者能进一步了解。

除非你绝对确定自己在做什么,否则强烈不建议使用无状态 NAT。

tc

tc 在 Linux 2.2 内核中引入,并在 2.6.9 内核移除大部分无状态 NAT 功能后不久,于 2.6.24 内核中获得了额外的能力。

tc 工具常用于 QoS(服务质量),其基本功能是管理网络流量,以减少丢包和/或延迟。它的文档非常稀少。如果你想用它来实现无状态 NAT,就必须自行深入研究。

关于流量控制基本原理的总体指南,可参考 Linux 文档项目发布的《流量控制 HowTo》。你也可以浏览《Linux 高级路由与流量控制 HOWTO》文档。最后,如果你想要一个针对 Debian 系 Linux 发行版的 tc 快速入门指南,我推荐你查阅 ArchLinux Wiki 上的《高级流量控制》主题,其中提供了很好的概述。

单网络连接,多 LAN

举个例子。假设你的服务器通过一个网络设备可以访问两个 LAN。

  • LAN1 的地址范围是 192.168.10.0–192.168.10.255,网关为 192.168.10.10
  • LAN2 的地址范围是 10.10.10.0–10.10.10.255,没有网关

你的服务器想向地址为 10.10.10.14 的另一台设备发送数据。让我们运行 route 命令,看看路由表是什么样子:

Kernel IP routing table
Destination
Gateway
Genmask
Flags
Metric
Ref
Use
Iface
0.0.0.0
192.168.10.10
0.0.0.0
UG
0
0
0
eth0
192.168.10.0
0.0.0.0
255.255.255.0
U
0
0
0
eth0
10.10.10.0
0.0.0.0
255.255.255.0
U
0
0
0
eth0

从 route 命令的输出中,我们看到有一个网关 192.168.10.10 和两条本地路由(192.168.10.0/24 和 10.10.10.0/24)。那么,问题出在哪里?

问题在于:如何保证从本服务器发往每个 LAN 的出站数据包,其响应能成功返回?我们知道,发往 10.10.10.14 的数据包会选择最长匹配的路由前缀。但我们不知道其源地址会表明它来自 192.168.10.0/24 网络还是 10.10.10.0/24 网络。我们显然希望是后者,因为我们知道 10.10.10.0/24 网络上没有网关,这意味着任何超出该网络范围的地址都会失败,因为该网络上的其他服务器不会响应这个数据包。

问题在于,从这个显示中,我们无法判断这种保证是否存在。设置此路由表的人是否包含了 src 参数?我们无从得知。这正是 route 命令的不足之处。我们需要更多细节。不妨试试运行 ip route list,你会得到如下输出:

default via 192.168.10.10 dev eth0192.168.10.0/24 dev eth0 proto kernel scope link src 192.168.10.1110.10.10.0/24 dev eth0 proto kernel scope link src 10.10.10.11

哇!现在我们可以清楚地看到,两个 LAN 都有 src 参数,这非常好。这意味着,无论数据包发往哪个 LAN(目标地址),它都能返回到本机,因为它离开服务器时使用的地址与它所去的 LAN 属于同一网段。

多网络连接,多 LAN

更常见的场景是:服务器上有多个网络设备,每个都连接到一个独立的网络。在这种情况下,src 参数的作用类似:保证从服务器发起的新连接,其出站数据包使用指定的 IP 地址作为源地址。通过使用 src 为特定出站路由强制指定一个源 IP 地址,你可以确保返回的数据包能找到回本服务器的路径。

让我们简要看看,如果你要设置一个名为 test 的表来实现此功能,ip route 命令可能是什么样子。假设你已经创建了 test 表并可用于测试。

ip route add default via 192.168.10.10 dev eth0 table test src 192.168.10.11ip route add 192.168.10.0/24 dev eth0 table test src 192.168.10.11ip route add 10.10.10.0/24 dev eth0 table test src 10.10.10.11

你可以看到,每条路由在数据包经过时都指定了源 IP 地址。这确保了无论数据包的目的地是哪里,它都能返回到本主机。

注释

[1] Andreasson, Oskar. Iptables Tutorial 1.2.1. 第 6 章:表与链的遍历。https://www.frozentux.net/iptables-tutorial/chunkyhtml/x1237.html。[2] v2.6.8 到 v2.6.9 的变更摘要。2004 年 10 月 19 日。变更日志。https://mirrors.edge.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.9。

Src

https://datahacker.blog/industry/technology-menu/networking/routes-and-rules/how-linux-routes-network-packets

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-11 13:12:26 HTTP/2.0 GET : https://f.mffb.com.cn/a/474935.html
  2. 运行时间 : 0.186959s [ 吞吐率:5.35req/s ] 内存消耗:5,012.14kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=c34a390025acf5fcd6969885b52c1930
  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.000559s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000730s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000321s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000282s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000512s ]
  6. SELECT * FROM `set` [ RunTime:0.000193s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000536s ]
  8. SELECT * FROM `article` WHERE `id` = 474935 LIMIT 1 [ RunTime:0.000461s ]
  9. UPDATE `article` SET `lasttime` = 1770786746 WHERE `id` = 474935 [ RunTime:0.075704s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.005175s ]
  11. SELECT * FROM `article` WHERE `id` < 474935 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.002555s ]
  12. SELECT * FROM `article` WHERE `id` > 474935 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.004336s ]
  13. SELECT * FROM `article` WHERE `id` < 474935 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.013268s ]
  14. SELECT * FROM `article` WHERE `id` < 474935 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.007091s ]
  15. SELECT * FROM `article` WHERE `id` < 474935 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.009103s ]
0.188743s