Studio环境DNSmasq

Studio测试环境IP分配 我最初使用静态IP地址来规划模拟集群的IP地址,但是随着模拟的复杂程度增加,虚拟服务器数量和IP的增加,使得维护主机 hosts 配置几近不可能,迫切需要通过自建DNS来实现动态管理。

我构建的个人小型局域网是基于 Raspberry Pi Cluster 以及 NVIDIA JetsonStudio Atlas 混合网络,所有主机都有一个内部网络和外部网络:

  • 内部网络连接千兆小型交换机,采用 192.168.6.x 网段,实现内部管理功能

  • 外部网络连接局域网,通过无线连接,动态获得IP地址 192.168.1.x 网段,对外提供服务访问

实际上在 Real Atlas 数据中心,技术上规划也是需要将生产网络和管理网络分开,主要优点是:

  • 管控网络非常关键,在出现生产网络异常故障时,管控网络是唯一能够直接访问服务器,通过IPMI等管理方式排查异常等通道,包括带外日志检查,服务器重装OS,采集基础监控日志,终端登陆带外等

  • 生产网络和管控网络隔离,可以避免互相干扰,同时提供了互为补充及容灾

在首次安装 NVIDIA Jetson 或者 Raspberry Pi Atlas 设备,以及通过网络方式安装Linux操作系统,都需要实现 DHCP 获得IP地址,并立即将服务器连接到Internet进行在线更新(生产环境为了安全和效率,需要自建软件仓库,例如 CentOS本地HTTP软件仓库 ) ,否则首次启动都有可能无法完成(例如Jetson的SD卡首次启动必须联网)。所以,我在 内部网络192.168.6.x 网段构建DHCP和DNS服务,提供应用服务器首次启动使用:

  • 动态分配IP地址仅限于一段地址 192.168.6.201 ~ 192.168.6.254

  • 在一台长期连接物联网的zcloud服务器上使用iptables的 masquerade 提供服务访问Internet网关,所以dhcp分配的gateway指向该地址

  • 提供DNS代理,方便内部服务器解析IP地址

上述实现虽然也可以采用全能的ISC bind 和 ISC dhcp服务来实现,但是对于小于1000台服务器小型网络,未免杀鸡用牛刀了。所以我选择 DNSmasq 来实现:

  • 在外部网络(也就是我的模拟局域网)部署完整的DNS架构,通过 BIND 实现复杂的面向大型Internet的DNS解析,实现DNSSEC以及DDNS等技术,多域名

  • 在内部网络(也就是模拟管控网络)部署dnsmasq,指向外部解析DNS是我部署的bind服务器,这种级连方式,可以模拟出小型网络和大型网络的DNS层级关系