当前位置:首页>Linux>Linux dnsmasq教程

Linux dnsmasq教程

  • 2026-02-20 04:13:18
Linux dnsmasq教程

字数 7619,阅读大约需 39 分钟

大家在玩Linux的时候,有没有遇到过这样的问题:局域网里几台机器,想互相用简单的名字访问(比如用“server”代替“192.168.1.100”),而不是每次都输一串难记的IP?或者想让内网的DNS解析更快,减少等待时间?甚至想给内网设备自动分配IP,不用手动设置?

今天要讲的dnsmasq,就是解决这些问题的“全能小工具”——它是一款轻量级DNS、TFTP、PXE、路由通告与DHCP服务器,轻量、简单,不用复杂配置,就能同时实现DNS缓存、DNS解析、DHCP服务,堪称小型局域网(比如家里、工作室、小型服务器集群)的“网络小管家”,专为小型嵌入式系统设计,力求在支持功能的前提下占用最小内存。

很多新手听到“DNS”“DHCP”就头大,别怕!这篇教程全程用“大白话+实操命令”,从原理到用法,从参数到示例,一步步带大家吃透dnsmasq,不管你用的是Rocky Linux(CentOS接班人)还是Ubuntu,跟着做就能上手。

一、dnsmasq到底是个啥?原理很简单!

dnsmasq的全称是“DNS masquerade”(DNS伪装/转发),核心作用围绕DNS与DHCP两大核心,同时支持TFTP、PXE等扩展功能,咱们用“快递员”的比喻讲明白核心功能,一看就懂:

  1. 1. DNS缓存员:当你第一次访问“www.baidu.com”, dnsmasq会向上游DNS服务器(比如谷歌8.8.8.8、阿里223.5.5.5)查询,拿到IP后,不仅返回给你,还会在自己的“小本本”(内存缓存)里记一笔。下次你再查同一个域名,它不用再麻烦上游服务器,直接从“小本本”里拿,速度快很多(就像快递员把常用地址记在脑子里,不用每次都查地图)。DNS缓存的默认大小为150条,0表示关闭缓存,过大反而会影响性能。
  2. 2. DNS解析员:你可以告诉dnsmasq“xxx.local”这个域名对应哪个IP(比如“server.local”对应192.168.1.100),这样局域网里所有机器,只要用这个域名,就能直接找到目标设备,不用记IP——相当于给内网设备起了“小名”。这一功能通过静态解析参数实现,支持泛域名、多域名绑定,还能加载自定义hosts文件,优先级高于上游DNS解析。
  3. 3. DHCP管理员:自动给局域网里的设备(电脑、手机、打印机)分配IP地址、子网掩码、网关等信息,不用手动给每台设备设置IP,避免IP冲突(就像物业给新入住的业主自动分配门牌号,不用业主自己找)。DHCP功能支持静态地址分配、多网络、租约管理,还能根据设备标签下发不同配置,兼容BOOTP与PXE网络启动。

补充说明:dnsmasq是轻量级的,占用系统资源极少,哪怕是低配的树莓派、老旧服务器,也能轻松运行;而且它的配置文件简洁,命令参数也不复杂,比bind(复杂DNS服务)、dhcpd(单独DHCP服务)好上手10倍,这也是它在小型网络里普及的原因——甚至很多路由器里,默认用的就是dnsmasq。它可作为一个或多个域的权威DNS服务器,使本地域名出现在全局DNS中,还支持DNSSEC校验,提升解析安全性。

这里要注意一个关键:dnsmasq本身不是“根DNS服务器”,它不会自己去解析所有域名,大部分时候是“转发+缓存”,其核心工作流程如下:当接收到用户的一个DNS请求时,首先会查找/etc/hosts这个文件,若该文件没有请求的记录,再查找/etc/resolv.conf中定义的外部DNS(也叫上游DNS服务器),外部DNS通过递归查询查找到请求后响应给客户端,随后dnsmasq将请求结果缓存到内存中,供后续的解析请求复用。只有你手动配置的“内网域名”,它才会直接解析,既高效又简单。

二、前置准备:安装dnsmasq

不管用哪种系统,第一步都是安装dnsmasq。这里重点讲Rocky Linux(因为它是企业级常用,兼容CentOS),同时给出Ubuntu的对应命令,两者操作几乎一致,差别只在“安装命令”和“部分服务管理细节”。

先确认系统版本(可选,避免版本兼容问题):

Rocky Linux查看版本:

cat /etc/rocky-release
# 示例输出:Rocky Linux release 9.2 (Blue Onyx)

Ubuntu查看版本:

cat /etc/lsb-release
# 示例输出:Ubuntu 22.04.3 LTS

2.1 Rocky Linux安装dnsmasq

Rocky Linux默认的yum仓库(现在叫dnf,yum是dnf的软链接)里就有dnsmasq,直接安装即可,不用额外加仓库:

# 切换到root用户(新手建议,避免权限不足)
su - root

# 安装dnsmasq(dnf和yum都能用,dnf是新版本,推荐用dnf)

dnf install dnsmasq -y
# 或者用yum(兼容旧习惯)

yum install dnsmasq -y

# 安装完成后,查看是否安装成功

rpm -qa | grep dnsmasq
# 示例输出:dnsmasq-2.89-1.el9.x86_64(版本号可能不同,只要有输出就说明成功)

2.2 Ubuntu安装dnsmasq

Ubuntu用apt命令安装,同样简单,但有个小坑:Ubuntu默认可能运行着systemd-resolved服务,它会占用53端口(DNS默认端口),导致dnsmasq启动失败(dnsmasq默认监听53端口,可通过-p参数修改),后面会讲解决方法,先安装:

# 切换到root用户
su - root
# 或者用sudo(Ubuntu常用)

sudo
 -i

# 更新apt仓库(可选,但建议做,避免安装旧版本)

apt update

# 安装dnsmasq

apt install dnsmasq -y

# 查看安装成功与否

dpkg -l | grep dnsmasq
# 示例输出:ii  dnsmasq                          2.90-0ubuntu0.22.04.1              all          Small caching DNS proxy and DHCP/TFTP server

2.3 启动并设置开机自启

安装完成后,dnsmasq默认是不启动的,我们需要手动启动它,并且设置开机自启(避免重启系统后失效)dnsmasq默认后台运行,可通过-k参数(--keep-in-foreground)强制前台运行,便于调试。

Rocky Linux启动命令:

# 启动dnsmasq服务
systemctl start dnsmasq

# 查看服务状态(重点,确认是否启动成功)

systemctl status dnsmasq
# 成功的标志:Active: active (running)(绿色的运行状态)

# 如果失败,会显示Active: failed,后面会讲排查方法


# 设置开机自启(重启系统后,dnsmasq会自动启动)

systemctl enable dnsmasq

Ubuntu启动命令(注意:如果启动失败,大概率是53端口被占用,先执行下面的命令停止冲突服务,再启动):

# 先停止systemd-resolved服务(解决53端口冲突,关键!)
systemctl stop systemd-resolved
# 禁止systemd-resolved开机自启(避免下次重启又冲突)

systemctl disable systemd-resolved

# 现在启动dnsmasq

systemctl start dnsmasq

# 查看状态

systemctl status dnsmasq

# 设置开机自启

systemctl enable dnsmasq

小技巧:如果启动失败,除了端口冲突,还可以用“dnsmasq --test”命令检查配置文件语法(该命令仅检查语法,不启动服务),全部正常则退出码为0,否则非0;很多时候是配置写错了导致启动失败。此外,可通过-d参数(--no-daemon)进入调试模式,日志同时输出到stderr与syslog,便于排查问题(仅限调试,生产环境禁止使用)。

三、核心操作:dnsmasq命令行参数详解

dnsmasq的用法主要分两种:一种是“临时命令行启动”(适合测试,重启服务后失效),另一种是“修改配置文件启动”(适合长期使用,永久生效)。命令行长选项在BSD系统上若未链接GNU getopt库,可能不可用,但在配置文件中仍可识别;通常缺少参数表示关闭对应功能。

新手建议先从“命令行参数”入手,直观感受每个参数的作用,测试成功后,再把参数写到配置文件里,这样不容易出错。

先记住一个核心:dnsmasq的命令行参数,大部分都和配置文件里的选项对应,格式是“dnsmasq [参数] [值]”,下面我们按“功能分类”,讲解最常用、最实用的参数,每个参数都配详细说明+实战示例”,确保大家能直接复制使用,同时兼顾专业性与易懂性。

3.1 基础参数(必学,控制dnsmasq的基本运行)

参数
详细说明
通用示例
-h / --help
显示所有命令行选项;扩展用法:--help dhcp显示已知DHCPv4配置选项,--help dhcp6显示DHCPv6选项。大白话:查看所有dnsmasq参数的帮助信息,忘记参数时,直接输这个命令,相当于“说明书”。
dnsmasq -h(输完后会列出所有参数,按q退出);查看DHCPv4选项:dnsmasq --help dhcp
-v / --version
打印版本号。大白话:查看dnsmasq的版本号,排查版本兼容问题时有用(比如某些参数只支持高版本)。
dnsmasq -v示例输出:Dnsmasq version 2.89  Copyright (c) 2000-2022 Simon Kelley
-p <端口>
监听在指定端口而非标准DNS端口53;设为0完全关闭DNS功能,仅保留DHCP/TFTP。大白话:指定dnsmasq的DNS服务端口,默认是53(DNS标准端口),如果53端口被占用(比如Ubuntu的systemd-resolved),可以用这个参数改端口(比如改到5353),但注意:客户端也要对应改DNS端口,否则无法解析。
# 临时将DNS端口改为5353,测试启动dnsmasq -p 5353# 查看端口是否被占用(验证)netstat -tulnp
-i <网卡名>
仅在指定接口监听;使用该参数时,dnsmasq自动加入回环接口;接口名支持末尾*通配。大白话:指定dnsmasq监听的网卡(比如eth0、ens33),只允许该网卡接收DNS/DHCP请求,避免其他网卡干扰(比如服务器有外网网卡和内网网卡,只让内网网卡提供服务)。
# 先查看自己的网卡名(关键,别输错)ip addr# 假设网卡名是ens33,指定监听该网卡dnsmasq -i ens33# 通配示例:监听所有ens开头的网卡dnsmasq -i ens*
-a <IP地址>
仅监听指定IP;可与-i参数共用;若只设该参数不设-i,不会自动监听回环,必须显式写127.0.0.1;可同时指定多个IP,用逗号分隔。大白话:指定dnsmasq监听的IP地址(和-i参数类似,更精准),比如只让192.168.1.100这个IP提供服务,其他IP不响应请求。建议同时包含127.0.0.1(本机)和内网IP。
# 指定监听本机(127.0.0.1)和内网IP(192.168.1.100)dnsmasq -a 127.0.0.1,192.168.1.100# 注意:仅指定内网IP,不监听回环(不推荐)dnsmasq -a 192.168.1.100
-x <pid文件路径>
指定PID文件路径,默认/var/run/dnsmasq.pid;若不带参数(--pid-file),则禁止写入PID文件。大白话:指定dnsmasq的PID文件路径(PID文件记录dnsmasq的进程ID,方便管理服务),默认路径无需修改,除非有特殊需求。
# 指定PID文件路径为/var/run/my-dnsmasq.piddnsmasq -x /var/run/my-dnsmasq.pid# 禁止写入PID文件(仅命令行可用)dnsmasq --pid-file

3.2 DNS缓存相关参数(优化解析速度,必学)

DNS缓存是dnsmasq最常用的功能之一,下面这几个参数,能帮你控制缓存的大小、时间,优化解析体验,补充实战场景说明。

参数
详细说明
实战示例
-c <数量>
设置DNS缓存大小,默认150条;0表示关闭缓存;过大影响性能。大白话:设置DNS缓存的最大条目数(就是“小本本”能记多少个域名-IP对应关系),如果局域网设备多、访问的域名多,可以改大一点(比如1000),缓存越多,解析越快;如果设备少,默认就够用。
# 设置缓存最大条目数为1000条dnsmasq -c 1000# 关闭DNS缓存(仅保留其他功能)dnsmasq -c 0# 验证:启动后,用dig命令查几个域名,再查缓存(后面会讲怎么看缓存)
-t <秒数>
对应--local-ttl,当应答来自/etc/hosts、配置或DHCP租约文件时,可为这些应答设置TTL(秒);默认TTL为0,表示客户端不应缓存;设为0可使DHCP信息不受--local-ttl影响。大白话:设置缓存的默认过期时间(“小本本”里的记录多久过期),默认跟着上游DNS的过期时间走,一般不用改,测试时可强制设置(比如3600秒=1小时)。
# 设置缓存默认过期时间为3600秒(1小时)dnsmasq -t 3600# 单独设置DHCP租约应答的TTL(参数--dhcp-ttl)dnsmasq --dhcp-ttl 1800
-k
--keep-in-foreground,启动后不进入后台,其余正常运行;用于daemontools、launchd等托管场景,区别于调试模式。大白话:让dnsmasq在前台运行(默认是后台运行),配合日志参数,适合测试时查看实时解析日志,方便排查问题(生产环境可用于托管场景)。
# 前台运行dnsmasq,同时开启缓存(1000条)dnsmasq -k -c 1000# 生产托管场景(前台运行,不调试)dnsmasq -k --log-facility=/var/log/dnsmasq.log
--log-queries
记录dnsmasq处理的DNS查询结果;收到SIGUSR1时完整转储缓存;--log-queries=extra可在每行开头增加序列号、请求者IP等额外信息。大白话:开启DNS查询日志,每一次DNS解析请求,都会记录到日志里(默认日志路径/var/log/daemon.log),排查DNS解析问题的“神器”。
# 前台运行,开启缓存,同时记录查询日志(带额外信息)dnsmasq -k -c 1000 --log-queries=extra# 此时,用其他设备查DNS,就能在控制台看到实时日志(含请求者IP)
--no-cache
等价于-c 0,关闭DNS缓存;区别于--no-negcache(关闭否定缓存)。大白话:禁用DNS缓存(不记“小本本”,每次查询都向上游服务器请求),一般用于测试(比如测试上游DNS是否正常),平时不用开启。
# 禁用缓存,每次查询都走上游DNSdnsmasq --no-cache# 禁用否定缓存(不缓存“不存在”的域名结果)dnsmasq --no-negcache

小技巧:dnsmasq的缓存是存在内存里的,不是存在硬盘上,所以重启dnsmasq服务后,缓存会清空;收到SIGUSR1信号时,会写入统计信息到系统日志,调试/全日志模式下会转储完整缓存;缓存无法直接查看,也可通过日志或者解析时间来判断是否生效(第二次解析同一个域名,时间会明显变短)。此外,可通过--max-cache-ttl、--min-cache-ttl设置缓存条目的最大/最小TTL,一般不建议人工延长TTL,除非明确知道后果。

3.3 DNS解析相关参数(内网域名“小名”设置,必学)

这个功能太实用了!比如你内网有一台服务器,IP是192.168.1.100,你可以告诉dnsmasq“server.local”对应这个IP,这样局域网里所有机器,只要输入“server.local”,就能访问这台服务器,不用记IP。

参数
详细说明
实战示例(最常用)
-A <域名>,<IP地址>
--address=/<域名>/<IP地址>,对指定域下任意主机强制返回指定IP(IPv4/IPv6),绝不转发;/#/匹配所有域,无IP返回NXDOMAIN,#返回空地址0.0.0.0/::;可同时指定多个域名。大白话:手动指定“域名-IP”对应关系(静态解析),相当于在dnsmasq里临时加了一条“hosts记录”,优先级最高,支持泛域名解析。
# 示例1:指定server.local对应192.168.1.100dnsmasq -A server.local,192.168.1.100# 示例2:指定多个域名dnsmasq -A server.local,192.168.1.100 -A pc.local,192.168.1.101# 示例3:泛域名解析(所有.local结尾域名解析到192.168.1.100)dnsmasq -A *.local,192.168.1.100# 示例4:屏蔽广告域名(返回空地址)dnsmasq -A ad.example.com,#
-S <上游DNS服务器IP>
--server=[/<域名>/][<IP地址>[#<端口>]],直接指定上游服务器IP;可限定仅用于某些域名,#端口指定非标准端口,无IP仅域名表示该域为本地域,不转发;可指定多个,优先级从左到右。大白话:指定上游DNS服务器(dnsmasq解析不了的域名,找谁帮忙),默认用系统/etc/resolv.conf里的DNS,常用阿里、谷歌、114DNS。
# 指定上游DNS为阿里223.5.5.5和谷歌8.8.8.8(非标准端口示例)dnsmasq -S 223.5.5.5 -S 8.8.8.8#5353# 限定example.com域名走114DNSdnsmasq -S /example.com/114.114.114.114# 结合静态解析,实战用法(推荐)dnsmasq -A server.local,192.168.1.100 -S 223.5.5.5 -c 1000
--no-resolv
不读取/etc/resolv.conf,仅从命令行/配置文件获取上游服务器;对应--resolv-file(指定读取上游DNS的文件)。大白话:禁止dnsmasq读取系统/etc/resolv.conf里的上游DNS,避免系统DNS被修改导致解析异常,建议长期使用时开启。
# 禁止读取系统resolv.conf,手动指定上游DNS为114.114.114.114dnsmasq --no-resolv -S 114.114.114.114# 指定读取自定义resolv文件(替代--no-resolv)dnsmasq --resolv-file=/etc/dnsmasq.resolv
-H <hosts文件路径>
--addn-hosts=<文件>,附加主机文件;除/etc/hosts外再读取指定文件;若同时使用--no-hosts(不读取/etc/hosts),则只读取此文件;可重复使用添加多个文件,给定目录则读取该目录下所有文件。大白话:指定dnsmasq读取的自定义hosts文件,不用修改系统默认hosts,更灵活。
# 1. 先创建自定义hosts文件,写入静态解析记录echo "192.168.1.100 server.local" > /etc/dnsmasq.hosts# 2. 指定dnsmasq读取这个文件(不读取系统hosts)dnsmasq -H /etc/dnsmasq.hosts --no-hosts# 3. 读取目录下所有hosts文件dnsmasq -H /etc/dnsmasq/hosts.d
--bogus-nxdomain=
将包含指定IP/子网的应答转换为“无此域”(NXDOMAIN);用于对抗恶意运营商将不存在域名指向广告页的行为;支持子网掩码限定。大白话:DNS反劫持参数,有些运营商会把不存在的域名解析到广告IP,用这个参数屏蔽该IP,避免被劫持。
# 假设劫持IP是10.0.0.1,屏蔽单个IPdnsmasq --bogus-nxdomain=10.0.0.1# 屏蔽整个子网(10.0.0.0/24)dnsmasq --bogus-nxdomain=10.0.0.0/24# 补充:忽略劫持IP(不报错,继续等待其他应答)dnsmasq --ignore-address=10.0.0.1

3.4 DHCP相关参数(内网自动分配IP,实用功能)

如果你的局域网里有很多设备(比如10台电脑、手机),手动给每台设备设置IP太麻烦,还容易冲突,这时就可以用dnsmasq的DHCP功能,自动分配IP,省心又高效。DHCP功能支持IPv4/IPv6,可设置标签、静态分配、租约管理,兼容PXE/BOOTP网络启动。

注意:开启DHCP功能前,要确保你的dnsmasq服务器的IP是“静态IP”(比如192.168.1.100),不能是动态IP(否则服务器IP变了,DHCP服务会失效)。

参数
详细说明
实战示例
--dhcp-range=<起始IP>,<结束IP>,<子网掩码>,<租期>
--dhcp-range=[tag:<标签>,][set:<标签>,]<起始地址>[,<结束地址>
<模式>][,<掩码>[,<广播>]][,<租约时间>];启用DHCP服务器,支持标签、静态模式、代理模式;租约时间支持秒/分/小时/infinite(永久)/deprecated;IPv6支持自动生成范围。大白话:最核心的DHCP参数,指定IP分配范围、子网掩码、IP租期(设备占用IP的时间,到期可续租),默认租期12小时,建议设为2h-24h。
--dhcp-option=<选项号>,<值>
--dhcp-option=[tag:<标签>,][option:<选项名>
编号],[<值>...];设置DHCP选项(网关、DNS、域名、NTP等);支持按标签给不同设备下发不同配置。大白话:给DHCP客户端分配额外的网络参数,常用选项号:3(网关)、6(DNS服务器)、1(子网掩码)、28(广播地址);DNS建议设为dnsmasq自身IP。
--dhcp-host=<MAC地址>,<固定IP>,<主机名>
静态分配DHCP地址、主机名、MAC绑定;支持MAC通配符、客户端ID、DUID、标签;可省略主机名,仅绑定MAC与IP。大白话:给指定设备分配“固定IP”(静态DHCP),比如路由器、服务器,需要固定IP;需知道设备MAC地址,主机名可选(给设备起名字)。
# 示例1:绑定MAC与固定IP,指定主机名dnsmasq --dhcp-range=192.168.1.101,192.168.1.200,255.255.255.0,2h --dhcp-option=3,192.168.1.1 --dhcp-option=6,192.168.1.100 --dhcp-host=00:11:22:33:44:55,192.168.1.10,router# 示例2:MAC通配符(匹配00:11:22开头的设备)dnsmasq --dhcp-host=00:11:22:::*,192.168.1.11,test-pc
--no-dhcp-interface=<网卡名>
--no-dhcp-interface=<接口名>,在指定接口不提供DHCP/TFTP,但提供DNS;支持接口通配符;优先级高于--interface。大白话:禁止在某个网卡上提供DHCP服务,比如服务器有外网、内网网卡,只让内网网卡提供DHCP,避免给外网设备分配IP。
# 禁止在外网网卡eth1上提供DHCP服务,只在eth0上提供dnsmasq --dhcp-range=192.168.1.101,192.168.1.200,255.255.255.0,2h --no-dhcp-interface=eth1# 禁止所有eth开头的网卡提供DHCPdnsmasq --dhcp-range=192.168.1.101,192.168.1.200,255.255.255.0,2h --no-dhcp-interface=eth*

3.5 其他实用参数(锦上添花,解决特殊需求)

参数
详细说明
示例
--enable-tftp
启用TFTP服务器(只读,用于网络启动);可指定接口,仅在该接口提供TFTP服务;内置安全、只读的TFTP服务器,支持DHCP主机网络启动/PXE启动。大白话:启用TFTP服务(简单文件传输协议),配合dhcp-boot参数,可实现PXE网络启动(批量安装系统),适合机房、多服务器场景。
# 启用TFTP服务,指定TFTP根目录为/tftpdnsmasq --enable-tftp --tftp-root=/tftp# 仅在ens33网卡提供TFTP服务dnsmasq --enable-tftp=ens33 --tftp-root=/tftp
--dhcp-boot=<文件名>,<服务器名>,<服务器IP>
--dhcp-boot=[tag:<标签>,]<文件名>,[<服务器名>[,<服务器地址>]];PXE启动相关参数,指定PXE启动文件的路径、服务器名和IP;支持按标签给不同设备指定不同启动文件;配合TFTP服务使用。大白话:PXE启动核心参数,指定启动文件路径,批量安装系统时常用。
# 指定PXE启动文件为/boot/pxelinux.0,服务器IP为192.168.1.100dnsmasq --enable-tftp --tftp-root=/tftp --dhcp-boot=/boot/pxelinux.0,pxeserver,192.168.1.100# 按标签指定不同启动文件(仅tag:pxe的设备生效)dnsmasq --enable-tftp --tftp-root=/tftp --dhcp-boot=tag:pxe,/boot/pxelinux.0,pxeserver,192.168.1.100
--log-dhcp
详细记录DHCP日志(选项、标签、租约分配/释放信息);可配合--quiet-dhcp静默常规日志,只打印错误信息。大白话:开启DHCP日志,记录每台设备的IP分配情况,排查DHCP问题时有用(比如设备拿不到IP,看日志找原因)。
# 开启DHCP日志,同时开启DNS查询日志,前台运行dnsmasq -k --log-queries --log-dhcp# 静默常规DHCP日志,只打印错误dnsmasq -k --log-queries --log-dhcp --quiet-dhcp

四、实战演练:3个最常用场景

前面讲了很多参数,可能大家会觉得复杂,没关系!下面这3个场景,是日常用得最多的,每个场景都给了“完整命令+步骤说明”,不管是Rocky Linux还是Ubuntu,只要替换成自己的IP,就能直接用。

前提:假设你的dnsmasq服务器,内网IP是192.168.1.100(静态IP),网卡名是ens33(根据自己的网卡名修改)。

场景1:仅开启DNS缓存(优化局域网DNS解析速度)

需求:让局域网里所有设备,通过192.168.1.100解析DNS,开启缓存,加快解析速度,上游DNS用阿里223.5.5.5(稳定、快速);禁止读取系统resolv.conf,避免干扰。

# 1. 停止当前的dnsmasq服务(如果已启动)
systemctl stop dnsmasq

# 2. 用命令行启动(测试,确认正常后,再写入配置文件)

# 参数说明:监听ens33网卡、本机+内网IP,缓存1000条,禁止系统resolv,上游阿里DNS,开启查询日志

dnsmasq -i ens33 -a 127.0.0.1,192.168.1.100 -c 1000 --no-resolv -S 223.5.5.5 --log-queries

# 3. 测试解析(在服务器本机测试,或者局域网其他设备测试)

# 服务器本机测试:指定用192.168.1.100解析baidu.com

dig @192.168.1.100 baidu.com

# 查看解析时间:第一次解析,时间可能在几十ms;第二次解析,时间会变成0ms(缓存生效)

# 示例输出(重点看Query time):

# ;; Query time: 0 msec

# ;; SERVER: 192.168.1.100
#53(192.168.1.100)

# 4. 测试成功后,停止前台运行的dnsmasq(按Ctrl+C),用配置文件启动(后面会讲)

# 补充:查看缓存统计(发送SIGUSR1信号)

killall -SIGUSR1 dnsmasq
# 查看系统日志,获取缓存命中/未命中统计

journalctl -u dnsmasq | grep cache

场景2:DNS缓存+内网静态解析(给内网设备起“小名”)

需求:在场景1的基础上,增加内网静态解析功能——给内网服务器(192.168.1.100)设置“小名”server.local,给办公电脑(192.168.1.101)设置“小名”pc.local,局域网所有设备可通过“小名”直接访问对应设备,无需记忆IP;同时保留DNS缓存优化。

# 方法1:临时测试(重启服务后失效,适合快速验证)
# 1. 停止当前dnsmasq服务

systemctl stop dnsmasq

# 2. 启动dnsmasq,同时配置缓存、上游DNS和静态解析(核心命令)

dnsmasq -i ens33 -a 127.0.0.1,192.168.1.100 -c 1000 --no-resolv -S 223.5.5.5 \
-A server.local,192.168.1.100 -A pc.local,192.168.1.101 --log-queries

# 方法2:永久生效(推荐,长期使用)

# 1. 停止当前dnsmasq服务

systemctl stop dnsmasq

# 2. 编辑dnsmasq配置文件

vim /etc/dnsmasq.conf

# 3. 写入以下配置(替换自己的网卡名、IP和域名)

interface=ens33
listen-address=127.0.0.1,192.168.1.100
cache-size=1000
no-resolv
server=223.5.5.5  # 上游DNS,可替换为114.114.114.114
# 静态解析配置(内网“小名”)

address=/server.local/192.168.1.100
address=/pc.local/192.168.1.101
log-queries  # 开启查询日志,便于排查问题

# 4. 保存退出,重启dnsmasq服务

systemctl restart dnsmasq

# 5. 测试静态解析是否生效(服务器本机+局域网设备均可测试)

# 测试server.local解析

dig server.local @192.168.1.100
# 测试pc.local解析

dig pc.local @192.168.1.100
# 测试外网解析(验证缓存是否正常)

dig www.taobao.com @192.168.1.100

关键说明:静态解析使用-A(配置文件中用address=/域名/IP)参数,优先级高于上游DNS解析,哪怕外网有同名域名,也会优先解析到内网IP;可添加多个-A参数(或address配置),实现多台内网设备“小名”设置;若需泛域名解析(如所有.local结尾域名都解析到192.168.1.100),可添加-A *.local,192.168.1.100(配置文件中写address=/.local/192.168.1.100)。

补充技巧:若内网设备较多,可创建自定义hosts文件(如/etc/dnsmasq.hosts),将所有静态解析记录写入该文件,再在配置文件中添加addn-hosts=/etc/dnsmasq.hosts,无需在主配置文件中频繁添加address配置,更便于管理。

场景3:DNS缓存+DHCP自动分配IP(内网全自动化网络管理)

需求:实现局域网全自动化网络管理——开启DNS缓存优化解析速度,开启DHCP自动分配IP(分配范围192.168.1.101-192.168.1.200,子网掩码255.255.255.0,租期2小时),给内网路由器(MAC地址00:11:22:33:44:55)分配固定IP 192.168.1.10,同时给DHCP客户端自动分配网关(192.168.1.1)和DNS服务器(192.168.1.100,即dnsmasq服务器自身);禁止在外网网卡(假设为eth1)提供DHCP服务,避免干扰外网。

# 前提检查:确保dnsmasq服务器IP为静态IP(192.168.1.100),避免IP变动导致服务失效
# 若未设置静态IP,可临时设置(Rocky Linux/Ubuntu通用)

nmcli connection modify ens33 ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns 192.168.1.100 ipv4.method manual
nmcli connection up ens33

# 1. 停止当前dnsmasq服务

systemctl stop dnsmasq

# 2. 编辑dnsmasq配置文件(永久生效,推荐)

vim /etc/dnsmasq.conf

# 3. 写入以下完整配置(按需替换参数)

# 基础配置:指定网卡和监听IP

interface=ens33  # 仅在内网网卡提供服务
listen-address=127.0.0.1,192.168.1.100  # 监听本机和内网IP
no-dhcp-interface=eth1  # 禁止在外网网卡提供DHCP服务

# DNS缓存配置

cache-size=1000  # 缓存大小1000条
no-resolv  # 禁止读取系统resolv.conf
server=223.5.5.5  # 上游DNS服务器

# DHCP核心配置

dhcp-range=192.168.1.101,192.168.1.200,255.255.255.0,2h  # IP分配范围、掩码、租期(2小时)
# DHCP额外选项:分配网关、DNS、域名后缀

dhcp-option=3,192.168.1.1  # 选项3:网关IP
dhcp-option=6,192.168.1.100  # 选项6:DNS服务器IP(指向自身,实现内网解析)
dhcp-option=option:domain-name,local  # 分配域名后缀,设备可直接用“主机名.local”访问

# 静态DHCP:给指定MAC设备分配固定IP(路由器)

# 格式:dhcp-host=MAC地址,固定IP,主机名(主机名可选)

dhcp-host=00:11:22:33:44:55,192.168.1.10,router

# 日志配置(便于排查问题)

log-queries  # 记录DNS查询日志
log-dhcp     # 记录DHCP分配/释放日志

# 4. 保存退出,重启dnsmasq服务

systemctl restart dnsmasq

# 5. 验证服务是否正常(核心验证步骤)

# 验证1:查看dnsmasq服务状态

systemctl status dnsmasq  # 确保Active: active (running)

# 验证2:查看DHCP租约(查看已分配的IP和设备信息)

cat
 /var/lib/misc/dnsmasq.leases

# 验证3:局域网设备测试(以手机/新电脑为例)

# 1. 让设备连接内网WiFi/网线

# 2. 查看设备IP(应在192.168.1.101-200之间,路由器固定为192.168.1.10)

# 3. 测试DNS解析(可解析外网和内网“小名”)

dig www.baidu.com @192.168.1.100  # 外网解析
dig server.local @192.168.1.100    # 内网解析(若场景2已配置)

# 验证4:测试IP租期(可选)

# 查看租约剩余时间(替换设备IP)

dhcp-lease-list | grep 192.168.1.101

关键注意事项(必看):

  1. 1. 开启DHCP服务前,必须确保dnsmasq服务器IP为静态IP,否则服务器IP变动后,DHCP客户端将无法正常获取网络配置;
  2. 2. DHCP分配范围(192.168.1.101-200)需避开静态IP(如服务器192.168.1.100、路由器192.168.1.10),避免IP冲突;
  3. 3. 若局域网内已有其他DHCP服务器(如路由器自带DHCP),需先停止其他DHCP服务,否则会出现IP分配冲突,导致设备无法正常上网;
  4. 4. 静态DHCP配置中,MAC地址需准确(可通过ip addr show命令在对应设备上查看),MAC地址错误会导致设备无法获取固定IP;
  5. 5. 租期建议设为2-24小时,租期过短会导致设备频繁续租,增加服务器压力;租期过长(如infinite永久)适合固定设备,不适合移动设备(如手机、临时接入的电脑)。

补充技巧:若需批量设置静态DHCP(如多台服务器),可在配置文件中添加多个dhcp-host配置,或创建dhcp-hostsfile文件,将所有MAC-IP对应关系写入该文件,再在主配置文件中添加dhcp-hostsfile=/etc/dnsmasq.dhcp,便于批量管理。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-28 16:10:00 HTTP/2.0 GET : https://f.mffb.com.cn/a/475557.html
  2. 运行时间 : 0.095952s [ 吞吐率:10.42req/s ] 内存消耗:5,167.45kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=b968862857b8f916589e478c42105946
  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.000556s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000757s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000264s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000279s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000477s ]
  6. SELECT * FROM `set` [ RunTime:0.000188s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000623s ]
  8. SELECT * FROM `article` WHERE `id` = 475557 LIMIT 1 [ RunTime:0.000502s ]
  9. UPDATE `article` SET `lasttime` = 1772266200 WHERE `id` = 475557 [ RunTime:0.013612s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000240s ]
  11. SELECT * FROM `article` WHERE `id` < 475557 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000432s ]
  12. SELECT * FROM `article` WHERE `id` > 475557 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.004381s ]
  13. SELECT * FROM `article` WHERE `id` < 475557 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001751s ]
  14. SELECT * FROM `article` WHERE `id` < 475557 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001107s ]
  15. SELECT * FROM `article` WHERE `id` < 475557 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001328s ]
0.098636s