使用 docker 快速搭建 dnsmasq 服务

使用 docker-compose 与 dnsmasq 搭建 DNS 服务器提供内网自定义域名解析功能

Dnsmasq 提供 DNS 缓存和 DHCP 服务功能。作为域名解析服务器(DNS),dnsmasq 可以通过缓存 DNS 请求来提高对访问过的网址的连接速度。作为 DHCP 服务器,dnsmasq 可以用于为局域网电脑分配内网 ip 地址和提供路由。DNS 和 DHCP 两个功能可以同时或分别单独实现。dnsmasq 轻量且易配置,适用于个人用户或少于50台主机的网络。

环境

部署

使用 jpillora/dnsmasq 镜像来部署 DNS,该镜像中包含了一个叫做 webproc 的工具,可以提供给我们通过 WEB 配置 dnsmasq 的功能。

  1. 编写启动容器的 docker-compose 脚本

    docker-compose.yml
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    version: "3.3"

    services:
    dns-server:
    image: jpillora/dnsmasq
    container_name: dns-server
    restart: always
    environment:
    TZ: Asia/Shanghai
    HTTP_USER: admin
    HTTP_PASS: admin
    PORT: "5380"
    network_mode: "host"
    volumes:
    - /opt/dnsmasq.conf:/etc/dnsmasq.conf:rw
    # 日志大小限制
    logging:
    driver: json-file
    options:
    max-size: "64m"
  2. 准备 dnsmasq 配置文件,存放位置为 compose 脚本中挂载位置

    dnsmasq.conf
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #dnsmasq config, for a complete example, see:
    # http://oss.segetech.com/intra/srv/dnsmasq.conf
    #log all dns queries
    log-queries
    #dont use hosts nameservers
    no-resolv
    #use cloudflare as default nameservers, prefer 1^4
    server=223.5.5.5
    server=8.8.8.8
    strict-order
    #serve all .company queries using a specific nameserver
    server=/company/10.0.0.1
    #explicitly define host-ip mappings
    address=/myhost.company/10.0.0.2
  3. 启动容器

    shell
    1
    docker-compose up -d
  4. 开放防火墙端口

    shell
    1
    2
    firewall-cmd --zone=public --permanent --add-port=53/udp
    firewall-cmd --reload

使用

Windows

控制面板 => 网络和 Internet => 网络连接 下找到正在使用的网卡,右键选择属性然后选择Internet 协议版本4(TCP/IPv4),接着点击属性设置DNS

Linux

使用 root 用户或具有 sudo 权限的用户编辑 /etc/resolv.conf 文件,在最上面添加 nameserver 192.168.1.253(其中 192.168.1.253 替换为部署的 DNS 服务器IP),保存即可。

OSX

系统偏好设置 => 网络 => 选择当前使用的网卡 => 点击 高级 => 在 DNS 选项卡下添加 DNS 服务器

Docker

  • OSX/Win

    1. 选择状态栏中 Docker 图片选择 Preferences,然后选择 Docker Engine 编辑文本框中 JSON 内容,添加 "dns": ["223.5.5.5"]

    2. 完成后点击 Apply & Restart 等待重启生效

  • Linux

    1. 编辑 /etc/docker/daemon.json 文件,如没有则添加,内容如下:
    daemon.json
    1
    2
    3
    {
    "dns": ["192.168.1.253", "223.5.5.5"]
    }
    1. 保存退出后重启 Docker 服务即可全局生效

参考文章:

评论

:D 一言句子获取中...

加载中,最新评论有1分钟缓存...