场景

  • 没有网关权限
  • 一台archlinux系统的测试机
  • 组员10人左右

需求

  • 需要经常访问的内部站点若干
  • 无需每次有内部域名上线,每个人都绑hosts

方案选择

小组人员不是太多,dnsmasq足够支撑作为DNS服务器

DNSMasq搭建流程

安装DNS服务


pacman -S dnsmasq

修改监听地址


vi/etc/dnsmasq.conf
#找到 listen-address,去掉注释;改为
listen-address=127.0.0.1,10.207.x.x

修改本机DNS服务器为本地DNS服务器


vi /etc/resolv.conf
nameserver 127.0.0.1

设置上游DNS服务器

vi /etc/dnsmasq.conf
#找到 resolv-file 修改如下
resolv-file=/etc/resolv.dnsmasq.conf
#创建上游DNS服务器文件
cd /etc && touch resolv.dnsmasq.conf
vi resolv.dnsmasq.conf
#文件内容如下
# Google's nameservers, for example
nameserver 114.114.114.114
nameserver 8.8.8.8

创建局域网域名解析

vi /etc/dnsmasq.conf
#找到 conf-dir 去掉注释
conf-dir=/etc/dnsmasq.d/,*.conf
#创建内网域名解析文件
mkdir -p /etc/dnsmasq.d
vi /etc/dnsmasq.d/nameserver.conf

#设置域名解析内容(server 让域名从指定的ip去查找dns服务)
server=/leju.dev/127.0.0.1
server=/.yjiang.dev/10.207.x.x

#指定ip 类似hosts硬解)
address=/leju.dev/127.0.0.1

还可以配合 google hosts 文件实现自动翻墙

加入开机启动,并重启服务使其生效

systemctl enable dnsmasq.service
systemctl restart dnsmasq.service

Tips

/etc/dnsmasq.conf中的 listen-address=127.0.0.1,10.207.x.x 必须加127.0.0.1;不然本地无法监听dns服务导致别人可以正常访问而DNS服务器本机不行.

/etc/dnsmasq.conf中的 server=114.114.114.114 为设置上游dns

参考