ubuntu22.04 部署 dnsmasq

禁用systemd-resolved

# sudo systemctl disable systemd-resolved
# sudo systemctl stop systemd-resolved

安装依赖

# apt -y install make gcc

下载dnsmasq

# wget https://thekelleys.org.uk/dnsmasq/dnsmasq-2.89.tar.gz

安装dnsmasq

创建dnsmasq用户

# groupadd -r dnsmasq && useradd -M -N -g dnsmasq -d /usr/local/dnsmasq  -r  -s /bin/false -c "DNSmasq Server"  dnsmasq

解压dnsmasq

# tar xf dnsmasq-2.89.tar.gz
# cd dnsmasq-2.89

修改安装路径

# grep PREFIX Makefile 
PREFIX        = /usr/local/dnsmasq-2.89     # 按需修改
BINDIR        = $(PREFIX)/sbin
MANDIR        = $(PREFIX)/share/man
LOCALEDIR     = $(PREFIX)/share/locale

安装dnsmasq

# make install
make[1]: Entering directory '/root/dnsmasq-2.89/src'
.....
cc  -o dnsmasq cache.o rfc1035.o util.o option.o forward.o network.o dnsmasq.o dhcp.o lease.o rfc2131.o netlink.o dbus.o bpf.o helper.o tftp.o log.o conntrack.o dhcp6.o rfc3315.o dhcp-common.o outpacket.o radv.o slaac.o auth.o ipset.o pattern.o domain.o dnssec.o blockdata.o tables.o loop.o inotify.o poll.o rrfilter.o edns0.o arp.o crypto.o dump.o ubus.o metrics.o hash-questions.o domain-match.o nftset.o   
make[1]: Leaving directory '/root/dnsmasq-2.89/src'
install -d /usr/local/dnsmasq-2.89/sbin
install -d /usr/local/dnsmasq-2.89/share/man/man8
install -m 644 man/dnsmasq.8 /usr/local/dnsmasq-2.89/share/man/man8 
install -m 755 src/dnsmasq /usr/local/dnsmasq-2.89/sbin

创建软连接

# ln -svf /usr/local/dnsmasq-2.89/ /usr/local/dnsmasq
'/usr/local/dnsmasq' -> '/usr/local/dnsmasq-2.89/'

复制配置文件

# cp dnsmasq-2.89/dnsmasq.conf.example /usr/local/dnsmasq/dnsmasq.conf

dnsmasq.service

[Unit]
Description=dnsmasq - A lightweight DHCP and caching DNS server
Requires=network.target
Wants=nss-lookup.target
Before=nss-lookup.target
After=network.target

[Service]
Type=forking
PIDFile=/var/run/dnsmasq.pid
ExecStart=/usr/local/dnsmasq/sbin/dnsmasq --conf-file=/usr/local/dnsmasq/dnsmasq.conf
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target

dnsmasq.conf

# egrep -v "^$|^#" /usr/local/dnsmasq/dnsmasq.conf 
bogus-priv
resolv-file=/usr/local/dnsmasq/resolv.conf
strict-order
user=dnsmasq
group=dnsmasq
addn-hosts=/usr/local/dnsmasq/hosts

准备文件

# cp /etc/resolv.conf /usr/local/dnsmasq/
# touch /usr/local/dnsmasq/hosts
# chown -R dnsmasq.dnsmasq /usr/local/dnsmasq

运行dnsmasq

# systemctl enable dnsmasq
# systemctl start dnsmasq
Apr 14 19:26:50 172-16-18-54 systemd[1]: Starting dnsmasq - A lightweight DHCP and caching DNS server...
Apr 14 19:26:50 172-16-18-54 dnsmasq[46942]: started, version 2.89 cachesize 150
Apr 14 19:26:50 172-16-18-54 dnsmasq[46942]: compile time options: IPv6 GNU-getopt no-DBus no-UBus no-i18n no-IDN DHCP DHCPv6 no-Lua TFTP no-conntrack ips>
Apr 14 19:26:50 172-16-18-54 systemd[1]: Started dnsmasq - A lightweight DHCP and caching DNS server.
Apr 14 19:26:50 172-16-18-54 dnsmasq[46942]: reading /usr/local/dnsmasq/resolv.conf
Apr 14 19:26:50 172-16-18-54 dnsmasq[46942]: using nameserver 10.42.255.1#53
Apr 14 19:26:50 172-16-18-54 dnsmasq[46942]: using nameserver 10.42.255.2#53
Apr 14 19:26:50 172-16-18-54 dnsmasq[46942]: using nameserver 114.114.114.114#53
Apr 14 19:26:50 172-16-18-54 dnsmasq[46942]: read /etc/hosts - 9 names
Apr 14 19:26:50 172-16-18-54 dnsmasq[46942]: read /usr/local/dnsmasq/hosts - 0 names

参考文档

https://thekelleys.org.uk/dnsmasq/doc.html

posted @ 2023-04-14 20:35  小吉猫  阅读(645)  评论(0编辑  收藏  举报