- 写在前面
- 查找镜像
- 下载镜像
- 简单启动
- 查看日志
- 查看默认配置,并使用nslookup命令测试
- 使用HighLevelLocal方式启动
- 查看日志
- 查看默认配置,使用nslookup命令测试
- 挂载本地目录配置方式启动
- 生成配置
- 停掉之前的容器并启动
- 使用nslookup进行测试
- 修改配置,配置刷新成功,使用nslookup测试
- docker-compose方式启动
- 初始化配置
- 编写docker-compose脚本
- 启动
- nslookup解析
- 使用浏览器访问测试
- 配置windows使用设置的dns地址进行解析
- 浏览器输入www.lhstack.com
- 输入www.lhstack.org
- 输入www.baidu.com
- 写在后面
这里我使用docker一个小巧轻量的dns服务器,它的大小仅仅6M左右,镜像为lhstack/small-dns,它的功能比较单一,目前仅支持Ptr和Ipv4的域名映射和解析转发,不过也能满足我们内网的大部分需求,同时2.0.0版本支持正则域名解析,以及修改配置自动加载最新配置等功能,使它变得更加灵活
查找镜像查找镜像
docker search small-dns下载镜像
docker pull small-dns简单启动
docker run --name small-dns -p 53:53/udp -d lhstack/small-dns查看日志
通过日志可以看到,这里有几个环境变量,DNS_REPO_TYPE支持Local和HighLevelLocal两种,我们后面将使用HighLevelLocal,Local是1.0.0版本的兼容层,后面不予演示
加载了/app/config/config.json配置,这里查看加载的配置内容
停掉之前启动的容器
docker rm -f small-dns
使用HighLevelLocal方式
docker run --name small-dns -p 53:53/udp -e DNS_REPO_TYPE=HighLevelLocal -d lhstack/small-dns查看日志
可以看到,这里有以下环境变量
HIGH_LEVEL_LOCAL_DNS_RESOLVE_CONFIG_CHECK_INTERVAL_SECONDS: 配置检查时间间隔,当配置内容发生修改,可以及时加载最新的配置
HIGH_LEVEL_LOCAL_DNS_RESOLVE_CONFIG: 配置文件的地址
DNS_REPO_TYPE: 支持的dns解析配置存储的仓库类型
DNS_REMOTE_RESOLVE_ADDRESS: 需要转发到远程的dns地址
DNS_LISTEN_ADDRESS: dns启动时监听的udp地址,使用golang的地址解析方式
mkdir config cat >config/config.json<停掉之前的容器并启动 docker rm -f small-dns docker run --name small-dns -p 53:53/udp -e HIGH_LEVEL_LOCAL_DNS_RESOLVE_CONFIG=/config/config.json -e DNS_REPO_TYPE=HighLevelLocal -v ${PWD}/config:/config -d lhstack/small-dns使用nslookup进行测试 修改配置,配置刷新成功,使用nslookup测试docker-compose方式启动 初始化配置
mkdir conf.d config cat > conf.d/default.conf <conf.d/gitee.conf < config/config.json< 编写docker-compose脚本 cat > docker-compose.yml <启动 docker-compose up -dnslookup解析 使用浏览器访问测试 配置windows使用设置的dns地址进行解析 浏览器输入www.lhstack.com 输入www.lhstack.org 输入www.baidu.com 写在后面small-dns可以使用正则方式解析自定义的域名到指定地址,同时也支持解析公网域名,根据配置调整即可



