在 CentOS 系统中,虽然可以通过 yum
等包管理器快速安装 dnsmasq
,但为了获取最新版本的功能、进行深度定制或满足特定的编译需求,手动编译安装依然是许多系统管理员和开发者的首选方案,本文将详细介绍如何在 CentOS 环境下从源码编译安装 dnsmasq
,并进行基本配置,确保其能够稳定运行。
环境准备与依赖安装
在开始编译之前,必须确保系统已安装必要的开发工具和库,CentOS 提供了一个方便的“开发工具”包组,它包含了编译软件所需的基础组件,如 gcc
、make
等。
通过以下命令安装开发工具组以及其他必要的依赖:
sudo yum groupinstall -y "Development Tools" sudo yum install -y wget
执行完毕后,您的系统就具备了编译 dnsmasq
源码的基本环境。
下载、解压与编译安装
我们将从 dnsmasq
的官方网站下载最新的源码包,并执行标准的编译安装三部曲:配置、编译和安装。
下载源码
访问dnsmasq
官网或直接使用wget
命令下载,建议下载最新稳定版,以下命令以下载dnsmasq-2.90
版本为例:wget http://thekelleys.org.uk/dnsmasq/dnsmasq-2.90.tar.gz
解压源码
使用tar
命令解压下载的压缩包:tar -zxvf dnsmasq-2.90.tar.gz cd dnsmasq-2.90
配置编译选项
进入解压后的目录,执行./configure
脚本,此脚本会检查系统环境并生成 Makefile,我们可以通过添加参数来定制安装路径和功能,一些常用的配置选项如下表所示:
配置选项 | 说明 |
---|---|
--prefix=/usr/local/dnsmasq | 指定安装目录,便于管理和卸载 |
--sysconfdir=/etc/dnsmasq | 指定配置文件存放目录 |
--localstatedir=/var/lib/dnsmasq | 指定运行时数据(如租约文件)存放目录 |
执行以下命令进行配置:
make PREFIX=/usr/local/dnsmasq
编译与安装
配置完成后,依次执行make
和make install
命令。make
命令会根据 Makefile 编译源代码,而make install
则会将编译好的二进制文件和相关文档安装到指定目录。make sudo make install
安装完成后,
dnsmasq
的可执行文件通常位于/usr/local/sbin
(如果未指定--prefix
)或您指定的PREFIX
目录下的sbin
子目录中。
配置 dnsmasq 与创建系统服务
仅仅安装程序是不够的,我们还需要创建配置文件,并将其设置为系统服务,以便于管理和开机自启。
创建配置文件
dnsmasq
的主配置文件默认为/etc/dnsmasq.conf
,源码包中提供了一个示例配置文件dnsmasq.conf.example
,我们可以将其复制并修改。sudo cp dnsmasq.conf.example /etc/dnsmasq.conf sudo vi /etc/dnsmasq.conf
在配置文件中,您可以进行最基本的设置,
# 监听地址 listen-address=127.0.0.1, 192.168.1.100 # 上游 DNS 服务器 server=8.8.8.8 server=114.114.114.114 # 缓存大小 cache-size=1000
创建 systemd 服务文件
为了让systemd
能够管理dnsmasq
,需要创建一个服务单元文件。sudo vi /etc/systemd/system/dnsmasq.service
在文件中填入以下内容:
[Unit] Description=dnsmasq - A lightweight DHCP and caching DNS server. After=network.target [Service] Type=fork PIDFile=/var/run/dnsmasq.pid ExecStart=/usr/local/sbin/dnsmasq -x /var/run/dnsmasq.pid ExecReload=/bin/kill -HUP $MAINPID Restart=on-failure [Install] WantedBy=multi-user.target
启用并启动服务
保存服务文件后,重新加载systemd
配置,设置dnsmasq
开机自启,并立即启动它。sudo systemctl daemon-reload sudo systemctl enable dnsmasq sudo systemctl start dnsmasq
您可以使用
systemctl status dnsmasq
查看其运行状态,或使用dig
命令测试其 DNS 解析功能是否正常。
相关问答FAQs
编译安装 dnsmasq 相比使用 yum 直接安装,有哪些主要优势和劣势?
解答:
优势:
- 版本最新: 官方源仓库的版本更新通常滞后于上游发布,编译安装可以第一时间获取最新功能和安全修复。
- 高度定制: 可以在编译时通过
./configure
参数精确控制安装路径、启用的功能模块,满足特殊需求。 - 独立性: 安装在自定义目录,不与系统包管理器冲突,便于管理多个版本或进行实验性部署。
劣势:
- 过程复杂: 需要手动解决依赖、编译、配置,耗时且容易出错。
- 维护困难: 升级和卸载需要手动操作,无法像
yum
那样一键更新和管理。 - 缺乏自动依赖管理:
dnsmasq
依赖的库版本变更,需要手动处理。
如何查看 dnsmasq 的详细运行日志,特别是 DNS 查询日志?
解答:
查看 dnsmasq
日志主要有两种方式。
通过 journalctl: 如果使用
systemd
管理dnsmasq
,其标准输出和错误输出会被journald
捕获,可以使用以下命令查看实时日志:sudo journalctl -u dnsmasq -f
-u
指定服务单元,-f
表示实时跟踪。开启查询日志: 要查看详细的 DNS 查询记录,需要在
/etc/dnsmasq.conf
配置文件中添加以下选项:log-queries log-facility=/var/log/dnsmasq.log
第一行开启查询日志功能,第二行将日志输出到指定文件(需确保目录存在且有写权限),修改配置后,重启
dnsmasq
服务即可,之后便可以通过tail -f /var/log/dnsmasq.log
查看详细的查询日志。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复