本文介绍在ubuntn22.04上安装dnsmasq用做自定义域名服务器,可以在公网上使用。
目标
准备两台不是同一个局域网内的服务器,其中A服务器是ubuntu22.04。在A上安装dnsmasq dns服务器,配置自定义域名,然后在B服务器上配置A做为dns服务器,可以解析自定义的域名;
机器准备
121.37.14.228 dns服务器------A服务器;
124.71.213.146 dns客户端------B服务器;
安装和配置dns服务器
注:安装dnsmasq最好使用root用户。
- 在A服务器上安装dnsmasq
apt-get update
apt-get install dnsmasq
- 停止和关闭开机自启原来的dns
systemctl stop systemd-resolved
systemctl disable systemd-resolved
- 配置dnsmasq.conf
vi /etc/dnsmasq.conf
添加配置到dnsmasq.conf,可直接在后面添加,也可以使用搜索功能找到默认位置,打开注释(这些配置都是默认注释的)
# 监听所有网络接口
interface=eth0
# 绑定到指定接口
bind-interfaces
# 自定义hosts文件
addn-hosts=/etc/dnsmasq.hosts
# 设置要转发的上游 DNS 服务器
server=114.114.114.114
server=8.8.8.8
# 启用缓存以提高性能
cache-size=50
# 启用日志记录以便调试
log-queries
log-dhcp
- 创建/etc/dnsmasq.hosts文件
# 可复制etc/hosts
cp /etc/hosts /etc/dnsmasq.hosts
# 配置自定义域名,eg: 120.78.215.251 npm.hlb.com
vi /etc/dnsmasq.hosts
配置NetworkManager
# 在NetworkManager.conf中另起一行添加 dns=dnsmasq
vi /etc/NetworkManager/NetworkManager.conf
开放端口
ufw allow 53/tcp
ufw allow 53/udp
重启服务
systemctl restart dnsmasq
## 查看状态
systemctl status dnsmasq
##重启networkmanager
systemctl restart NetworkManager
本地验证
在A服务器上使用nslookup或者dig命令验证;
nslookup nmp.hlb.com
dig npm.hlb.com
远程服务器上验证
在B服务器上验证;
- 修改/etc/resolv.conf文件
# 修改resolv.conf的nameserver=A服务器的ip
# nameserver 121.37.14.228
vi /etc/resolv.conf
- 使用nslookup或者dig命令验证