在局域网里安装配置 DNSMasq 实现域名访问局域网电脑

在局域网里安装配置 DNSMasq 实现域名访问局域网电脑

家庭局域网里每台机器都会分配一个 IP ,每台机器之间要想互相访问,就要用到机器的 IP 。机器多了可能不容易记住每台机器的 IP ,如果要是在内网再架设一些网站,就更容易弄混了。

这里介绍一个开源免费的轻量级 DNS 服务器 DNSMasq ,安装调试好 DNSMasq 服务之后,就可以很容易地用域名来访问内网的机器了。

  • 如果想用 DNS 服务,机器的 IP 地址最好是不变的,首先在路由器里把需要访问的机器的 IP 设为保留地址,这样这些 IP 地址就总是绑定在这些机器的 MAC 地址上,不论是重启或是长时间关机后再开机,这些机器的 IP 地址都是不变的。各种品牌的路由器设定保留地址的方法都大同小异,如何设定请参看所用路由器的说明书
  • 在一些系统中,可能需要禁用系统自带的 systemd-resolved 服务,这样可以避免端口 53 的冲突
# 禁用并停止 systemd-resolved 服务
sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved
  • 如果 resolv.conf 配置文件被链接指向到其他位置,还需要去掉文件的链接
sudo unlink /etc/resolv.conf
  • 编辑 resolv.conf 配置文件
sudo nano /etc/resolv.conf
  • 加入 nameserver 到配置文件中
nameserver 127.0.0.1
nameserver 8.8.8.8
  • 安装 DNSMasq
sudo apt install dnsmasq
  • 编辑 DNSMasq 配置文件 dnsmasq.conf
sudo nano /etc/dnsmasq.conf
  • 最简单的情况只需要添加下面三行设置
# 监听的网卡,一般是 eth0 ,但某些虚拟机上也可能不同
interface=eth0
# 监听的 IP ,一般就是本机的主机 IP 和 内网 IP
listen-address=127.0.0.1, 192.168.1.100
# 域名,这里是内网的域名,是不需要注册的,一般用 .home .local 或其他不是公共域名的都可以
domain=mydomain.home
  • 配置域名解析文件
sudo nano /etc/hosts
  • 在文件中添加域名解析
# 随意把想用域名访问的 IP 进行解析
192.168.1.88 movie.mydomain.home
192.168.1.99 memo.mydomain.home
192.168.1.111 work.mydomain.home
  • 重启 DNSMasq 服务
sudo systemctl restart dnsmasq
  • 上面配置好了,就已经可以在安装了 DNSMasq 的主机上用域名访问上面解析好的三台机器了。要想在局域网其他主机上用域名访问,每台机器上都要把上面装有 DNSMasq 服务的机器 IP,填到网络上的 DNS Server 里。下面是以 Windows 机器为例,找到 Wi-Fi 网卡的属性,选择 IPv4,打开属性,然后把 DNS 服务器的 IP 填入 Preferred DNS server 里就可以了。
  • 上面只是以 Windows 机器为例,在 Linux 和手机上都是可以的,具体方法可以上网查一下。总的来说是一样的,只要把 DNS 服务器的 IP 填入局域网任何一台机器的 DNS server 里,就可以用那台机器用解析好的域名访问机器了
  • DNS 服务对一般个人用户可能没什么用处,但是如果家里电脑很多,而且互相共享文件,或是自己在内网架设一些网站的用户,还是非常好用的
  • 另外如果和 Nginx 等反代服务器一起用,还可以起到在内网反代网站,隐藏端口号的作用