通过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开发环境,这种办法既方便又省钱,可谓是一举多得。

目录
相关文章
|
安全 Java Linux
Websoft9:为开发者打造的高效 Linux 服务器面板
Websoft9 是一款以开源应用部署与管理为核心的服务器面板,采用“环境即服务”模式。它通过运行环境标准化、自动化配置、安全融合和资源管理四个方面实现平台与环境的深度协同。支持多语言框架预集成、云原生组件整合,提供 200+ 应用模板一键部署,并具备全流程安全防护和统一资源监控能力,助力开发者高效管理和扩展应用环境。
417 0
|
10月前
|
弹性计算 安全 Linux
阿里云服务器ECS安装宝塔Linux面板、安装网站(新手图文教程)
本教程详解如何在阿里云服务器上安装宝塔Linux面板,涵盖ECS服务器手动安装步骤,包括系统准备、远程连接、安装命令执行、端口开放及LNMP环境部署,手把手引导用户快速搭建网站环境。
|
12月前
|
Linux 网络安全 数据安全/隐私保护
使用Linux系统的mount命令挂载远程服务器的文件夹。
如此一来,你就完成了一次从你的Linux发车站到远程服务器文件夹的有趣旅行。在这个技术之旅中,你既探索了新地方,也学到了如何桥接不同系统之间的距离。
1987 21
|
11月前
|
Java Linux 网络安全
Linux云端服务器上部署Spring Boot应用的教程。
此流程涉及Linux命令行操作、系统服务管理及网络安全知识,需要管理员权限以进行配置和服务管理。务必在一个测试环境中验证所有步骤,确保一切配置正确无误后,再将应用部署到生产环境中。也可以使用如Ansible、Chef等配置管理工具来自动化部署过程,提升效率和可靠性。
1038 13
|
Ubuntu Linux 网络安全
在Linux云服务器上限制特定IP进行SSH远程连接的设置
温馨提示,修改iptables规则时要格外小心,否则可能导致无法远程访问你的服务器。最好在掌握足够技术知识和理解清楚操作含义之后再进行。另外,在已经配置了防火墙的情况下,例如ufw(Ubuntu Firewall)或firewalld,需要按照相应的防火墙的规则来设置。
678 24
|
11月前
|
监控 Linux 网络安全
FinalShell SSH工具下载,服务器管理,远程桌面加速软件,支持Windows,macOS,Linux
FinalShell是一款国人开发的多平台SSH客户端工具,支持Windows、Mac OS X和Linux系统。它提供一体化服务器管理功能,支持shell和sftp同屏显示,命令自动提示,操作便捷。软件还具备加速功能,提升访问服务器速度,适合普通用户和专业人士使用。
3575 0
|
存储 安全 Ubuntu
从Linux到Windows:阿里云服务器系统镜像适配场景与选择参考
阿里云为用户提供了丰富多样的服务器操作系统选择,以满足不同场景下的应用需求。目前,云服务器的操作系统镜像主要分为公共镜像、自定义镜像、共享镜像、镜像市场和社区镜像五大类。以下是对这些镜像类型的详细介绍及选择云服务器系统时需要考虑的因素,以供参考。
|
Linux iOS开发 Docker
MyEMS开源系统安装之Linux/macOS上的DOcker
本指南详细介绍了如何在Linux/macOS上使用Docker部署MyEMS系统。主要内容包括:前置条件(如安装Docker、npm和MySQL),以及分步骤部署各个组件(如myems-api、myems-admin、myems-modbus-tcp等)。每个步骤涵盖源代码复制、环境配置、镜像构建、容器运行及日志管理等操作,并提供了多平台构建的支持。最后,指南还说明了默认端口和登录凭据,帮助用户快速启动并访问MyEMS的管理界面和Web界面。
427 1
|
安全 Linux
阿里云linux服务器使用脚本通过安全组屏蔽异常海外访问ip
公网网站可能会遭受黑客攻击导致访问异常,使用此脚本可以屏蔽掉异常IP 恢复访问。也可自行设置定时任务定期检测屏蔽。
880 28
|
关系型数据库 MySQL Linux
在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾
以上就是在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾的步骤。这个过程就像是一场接力赛,数据从MySQL数据库中接力棒一样传递到备份文件,再从备份文件传递到其他服务器,最后再传递回MySQL数据库。这样,即使在灾难发生时,我们也可以快速恢复数据,保证业务的正常运行。
588 28

相关产品

  • 云解析DNS