通过Docker、Alpine Linux和Unbound实现DNS服务器托管

简介: 通过Docker、Alpine Linux和Unbound实现DNS服务器托管


  试想一下,假如我们要搭建一个移动app,同时又没有充足的预算去购买软硬件资源的话,该怎么办呢?比方说,如果我们要在现有的基础设施上运行这个app,偏偏我们手头上只有一些老旧的低性能机器的话,有什么办法可以实现移动app的部署和运行?

  对于一些公司来说,他们的应用本身用户量不算多,固定用户大概也就几百人。这种情况下花大量的经费去购买资源肯定是不合算的,何况公司的团队也很小,难以维护大量的设施。公司没有足够的经费,但是又的确需要搭建专门的开发运维环境,这种例子在现实中比比皆是。

  条件稍微好点的创业型公司可以购买AWS的实例,也有的会买一些IP地址分配给服务器,但是也有一些小团队无法提供这些条件。据我所知,有的团队直接用的家用电脑来做服务器,IP地址也只有1个,只能靠搭建子网,用代理服务器来实现流量的重定向。在这种情况下就需要自定义DNS规则,将服务器主机名与内网IP一一匹配。

 

通过Docker, AlpineUnbound快速创建微型DNS服务器

  Docker问世之后,这种尴尬的局面即将结束,现在我们可以通过DockerAlpineUnbound快速实现DNS服务器托管了。首先,我们需要调用下面的Dockerfile脚本:

FROM alpine:3.3
MAINTAINER Philip Miglinci "p.miglinci@gmail.com"
RUN apk add --update unbound ; \  
    rm -rf /var/cache/apk/* ;
COPY unbound.conf /etc/unbound/unbound.conf  
COPY root.hints /var/unbound/etc/root.hints  
COPY root.key /var/unbound/etc/root.key
RUN unbound-checkconf
CMD ["unbound"]

  大家可以戳这里下载上面的root.hints文件。

root.key表示的是上面我们下载的顶层DNS服务器:

. IN DS 19036 8 2 49AAC11D7B6F6446702E54A1607371607A1A41855200FD2CE1CDDE32F24E8FB5

  在 unbnound.conf 文件里,大家可以创建自定义的DNS Entry,比如下面这段配置脚本就设置了A-record的记录值:

server:  
  interface: 0.0.0.0
  verbosity: 1
  do-daemonize: no
  access-control: 0.0.0.0/0 allow
  do-ip4: yes
  do-ip6: no
  do-udp: yes
  do-tcp: no
  hide-identity: yes
  hide-version: yes
  harden-glue: yes
  harden-dnssec-stripped: yes
  use-caps-for-id: yes
  cache-min-ttl: 3600
  cache-max-ttl: 86400
  prefetch: yes
  num-threads: 4
  msg-cache-slabs: 8
  rrset-cache-slabs: 8
  infra-cache-slabs: 8
  key-cache-slabs: 8
  rrset-cache-size: 256m
  msg-cache-size: 128m
  so-rcvbuf: 1m
  private-address: 192.168.1.0/16
  unwanted-reply-threshold: 10000
  do-not-query-localhost: no
  val-clean-additional: yes
 
  local-zone: "pmig.at." static
  local-data: "pmig.at.  IN A 192.168.1.201"
 
forward-zone:  
  name: "."
  forward-addr: 195.34.133.10
  forward-addr: 213.33.99.70
  forward-addr: 8.8.8.8
  forward-addr: 8.8.4.4

  我们还可以在文件里定义local-zone并设置A record的值,如果当前主机地址不在local zone里面,系统就会向其他DNS服务器发送请求,本例中我用的是当前ISP服务商的DNS,如果ISP无法提供DNS服务,系统就会启用Google DNS

  另外说一句,大家如果要采用这种方式来实现DNS托管,还需要开放docker宿主机的UDP 53号端口,并在内网路由器中进行设置。

  上述配置完成后,我们的内网环境就建好了,大家可以不受限制地在局域网中搭建docker开发环境,这种办法既方便又省钱,可谓是一举多得。

目录
相关文章
|
5月前
|
存储 测试技术 数据安全/隐私保护
【Docker项目实战】使用Docker部署dufs文件服务器
【Docker项目实战】使用Docker部署dufs文件服务器
774 17
【Docker项目实战】使用Docker部署dufs文件服务器
|
4月前
|
Ubuntu 网络安全 PHP
如何使用vscode的Docker插件管理ubuntu 拉取服务器的镜像以及创建容器
本测试镜像旨在记录使用vscode的Docker插件拉取病创建Dockerfile,以及拉取镜像。
|
6月前
|
Ubuntu 安全 数据安全/隐私保护
在Docker容器中部署GitLab服务器的步骤(面向Ubuntu 16.04)
现在,你已经成功地在Docker上部署了GitLab。这就是我们在星际中的壮举,轻松如同土豆一样简单!星际旅行结束,靠岸,打开舱门,迎接全新的代码时代。Prepare to code, astronaut!
479 12
|
9月前
|
NoSQL Redis Docker
Docker——阿里云服务器利用docker搭建redis集群
本文详细记录了使用Docker搭建Redis集群的过程,包括检查Docker和Docker Compose的安装、创建Redis配置文件、编写`docker-compose.yml`文件、启动Redis节点、创建Redis集群的具体步骤,以及最终的验证方法。文章还提供了在多服务器环境下搭建Redis集群的注意事项,帮助读者全面了解 Redis 集群的部署流程。
1093 68
|
存储 Linux Docker
docker在欧拉服务器上编译安装应该注意什么?如何操作?
【10月更文挑战第31天】docker在欧拉服务器上编译安装应该注意什么?如何操作?
492 2
|
8月前
|
关系型数据库 MySQL Linux
在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾
以上就是在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾的步骤。这个过程就像是一场接力赛,数据从MySQL数据库中接力棒一样传递到备份文件,再从备份文件传递到其他服务器,最后再传递回MySQL数据库。这样,即使在灾难发生时,我们也可以快速恢复数据,保证业务的正常运行。
394 28
|
11月前
|
弹性计算 Ubuntu Linux
阿里云服务器一键安装Docker社区版教程,基于系统运维管理OOS
阿里云服务器一键安装Docker社区版教程,基于系统运维管理OOS自动化部署。支持Ubuntu 22.04/20.04、CentOS 7.7-7.9及Alibaba Cloud Linux 3.2104 LTS。前提条件:ECS实例需运行中且有公网。步骤:选择Docker扩展并安装,验证成功通过命令`docker -v`查看版本号。
915 79
|
9月前
|
Docker Python 容器
Docker——阿里云服务器使用Docker部署python项目全程小记
本文记录了我在阿里云服务器上使用Docker部署python项目(flask为例)的全过程,在这里记录和分享一下,希望可以给大家提供一些参考。
1110 1
|
9月前
|
弹性计算 运维 Ubuntu
在阿里云ECS云服务器上安装、配置及高效使用Docker与Docker Compose
本文介绍了在阿里云ECS上使用Ubuntu系统安装和配置Docker及Docker Compose的详细步骤。通过这些工具,可以快速部署、弹性扩展和高效管理容器化应用,满足开发和运维需求。内容涵盖Docker的安装、镜像源配置、创建Web程序镜像以及使用Docker Compose部署WordPress等实际操作,并分享了使用体验,展示了阿里云实例的高性能和稳定性。
1696 4
|
9月前
|
Linux 虚拟化 Docker
Linux服务器部署docker windows
在当今软件开发中,Docker成为流行的虚拟化技术,支持在Linux服务器上运行Windows容器。流程包括:1) 安装Docker;2) 配置支持Windows容器;3) 获取Windows镜像;4) 运行Windows容器;5) 验证容器状态。通过这些步骤,你可以在Linux环境中顺利部署和管理Windows应用,提高开发和运维效率。
1343 1

相关产品

  • 云解析DNS