某种情况下如openstack或者openshift/kubernetes软件部署过程由于需要标准的 域名系统(DNS UPDATE)RFC 2136中的动态更新功能, 但是现有的阿里云/华为云均不提供该规范,大多理由为安全问题.

此时需要自建DDNS解决此问题.

前提条件

需要配置自有DNS服务器,参考配置DNS服务器脚本. 操作系统基于centos 7.5

在阿里云万网的DNS服务器新建2条记录:

ns.ddns.xxxxx.com -- A记录 --IPV4指向需要安装的DNS服务器IP

ddns.xxxxx.com – NS记录 – http://ns.ddns.xxxxx.com

此时ddns子域名下的所有解析全部转移到这台DNS服务器进行解析服务.

配置已有的named服务

创建一个安全key

首先,我们需要生成一个Key,用于更新记录的授权。这里使用了HMAC-MD5算法来生成Key。运行:

dnssec-keygen -a HMAC-MD5 -b 128 -n HOST ddnsxxxxx

执行完成后会在当前目录生成2个文件,

文件名大概如下:

Kddnsxxxxx.+157+43433.key Kddnsxxxxx.+157+43433.private
打开其中的private,复制key出来.
more Kddnsxxxxx.+157+43433.private
Private-key-format: v1.3
Algorithm: 157 (HMAC_MD5)
Key: MjR1T1Bdwi9NaxiT+5yIYA==
Bits: AAA=
Created: 20181207022257
Publish: 20181207022257
Activate: 20181207022257

修改已有named配置

在/etc/named.conf中,zone “ddns.xxxxxx.com”之前加上:secret内容就是刚才复制出来的key值.

key "ddnskey" {
    algorithm hmac-md5;
    secret "MjR1T1Bdwi9NaxiT+5yIYA==";
};

然后继续修改文件末尾zone的定义:

zone "ddns.xxxxx.com" IN {
        type master;
        file "ddns.xxxxx.com.zone";
        allow-update { key ddnskey; };
};

同时,selinux也有可能限制named写入文件,需要关闭:

setsebool named_write_master_zones true
设置完成后。重启named:
systemctl restart named

尝试dnsupdate功能

使用nsupdate命令对DNS进行更新:

# nsupdate
> server 127.0.0.1 53
> zone ddns.xxxxx.com
> key ddnskey MjR1T1Bdwi9NaxiT+5yIYA==
> update add abcdefg.ddns.xxxxx.com 200 2.2.2.2
> send

测试update结果

# dig abcdefg.ddns.xxxxx.com @localhost
 
; <<>> DiG 9.9.4-RedHat-9.9.4-72.el7 <<>> vpn.ddns.xxxxx.com @localhost
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28156
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
 
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;abcdefg.ddns.xxxxx.com.        IN  A
 
;; ANSWER SECTION:
abcdefg.ddns.xxxxx.com. 200 IN  A   13.37.27.291
 
;; AUTHORITY SECTION:
ddns.xxxxx.com. 120 IN  NS  ns.ddns.xxxxx.com.
 
;; ADDITIONAL SECTION:
ns.ddns.xxxxx.com.  120 IN  A   39.106.92.7
 
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Dec 07 10:41:49 CST 2018
;; MSG SIZE  rcvd: 97

最后收尾

别忘记开通防火墙,包括主机的 53 udp/tcp,还有云主机的upd/tcp 53都开通.

同时做一次异地机器测试,检查DNS是否在其他dns服务器有复制.通过nslookup 检查TTL值,检查ns名称是否正确.

补充在routerOS的脚本参考

/tool dns-update dns-server=39.108.90.77 key-name="ddnskey" key="MjR1T1Bdwi9NaxiT+5yIYA==" name=abcdefg address="3.4.5.6" zone="ddns.xxxxx.com" ttl=200

更详细routerOS脚本在这里ddnsscript.txt,

#    :log info "DDNS: Begin":local ddnsuser "ddns-key":local ddnspass "q1B3kUxxWioLEVh74h8g==":local ddnshost "vpn":local ddnszone "ddns.iqyuan.com":local ddnsinterface "pppoe-2F":local ddnns "vpn.ddns.iqyuan.com":global ddnslastip#    :global ddnslastip [:resolve $ddnns]:global ddnsip [  /ip address get [/ip address find interface=$ddnsinterface] address ]#    log info $ddnslastip#    log info (  [:pick $ddnsip    [:find $ddnsip "/"]]):if ([:typeof [:global ddnslastip]] = nil ) do={ :global ddnslastip 0.0.0.0/ } else={ :set ddnslastip $ddnslastip }:if ([:typeof [:global ddnsip]] =    nil ) do={:log info ("   DDNS: No ip address present on  $ddnsinterface  , please check ")}   else={:if ($ddnsip != $ddnslastip) do={#    :log info "DDNS: DDNS!"/tool dns-update dns-server=39.108.90.77 key-name=$ddnsuser  key=$ddnspass  name=$ddnshost address=[:pick $ddnsip  [:find $ddnsip "/"] ] ttl=   zone=$ddnszone:log info (  "shuaxin DDNS" .  $ddnsip):global ddnslastip $ddnsip}   else={#    :log info "DDNS: IP"}}#:log info "DDNS: End"

Openshift 自建DDNS动态域名的更多相关文章

  1. RPi 2B DDNS 动态域名

    /**************************************************************************** * RPi 2B DDNS 动态域名 * 说 ...

  2. DNSPod DDNS 动态域名设置

    所谓动态域名,就是当你的服务器 IP 地址发生变化的时候,自动地修改你在「域名解析服务商」那里的域名记录值 怎么操作?看官方文档 DNSPod用户API文档 首先需要创建 Token 完整的 API ...

  3. routeros DDNS 动态域名更新IP

    :local ednsuser "账号":local ednspass "密码":local ednshost "域名":local edn ...

  4. 思科E3200 路由器 DD-WRT 设置花生壳和3322.org动态域名(DDNS)

    花生壳设置(已測试) ddns.oray.com:80 username   aaaa password bbbb 主机名   abc.gicp.net URL       /ph/update?ho ...

  5. dnspod 动态域名的使用。openwrt使用dnspod动态域名解析。

    这里主要说的是linux shell下的使用. 先看接口说明: 接口地址: https://dnsapi.cn/Record.Ddns HTTP请求方式: POST 请求参数: 公共参数 domain ...

  6. Linux纯Shell实现DNSPod动态域名

    http://www.anrip.com/post/872 开发背景: 公司有台嵌入式拨号上网设备,内置busybox和完整wget命令(支持https协议),但没有curl.python.ruby. ...

  7. dnspod动态域名使用感受

    继花生壳不能用之后,3322也开始不太好用了,首先就是360把所有3322的域名全部判定为危险域名,甚至拦截程序对于3322url的api请求. 所以想把3322换成我们自己的独立域名,但是3322他 ...

  8. 基于etcd插件的CoreDNS动态域名添加

    前提条件:已经有一个可用的etcd环境. 一.CoreDNS简介 CoreDNS是一个DNS服务器,和Caddy Server具有相同的模型:它链接插件.CoreDNS是云本土计算基金会启动阶段项目. ...

  9. rhel7+apache+c cgi+动态域名实现web访问

    1. 申请动态域名/安装no-ip客户端 https://blog.csdn.net/lee244868149/article/details/44095835 2. yum安装httpd 两种方法安 ...

随机推荐

  1. CCNA 之 十二 Frame Relay 帧中继

    Fram Relay 帧中继 帧中继简介 VC.LMI.DLCI的概念 帧中继映射 Inverse-ARP的操作 帧中继配置 帧中继简介 分组交换广域网接入方式的一个代表,分组交换是以分组的形式在广域 ...

  2. KNN学习笔记

    简单地说,KNN算法就是通过测量不同特征值之间的距离来对特征进行分类的一种算法. 优点:精度高.对异常值不敏感.无数据输入假定. 缺点:计算复杂度高.空间复杂度高. 适用数据范围:数值型和标称型. 工 ...

  3. Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概览

    ​ ​本文是Spring Cloud专栏的第一篇文章,了解本篇文章内容有助于更好的理解后面文章 ​ 一.网站架构演变过程 1-1.传统架构 传统的SSH架构,分为三层架构 web控制层.业务逻辑层.数 ...

  4. mysql客户端 navicat 本地导入sql文件出错

    以前遇到过这个问题,找了半天度娘没解决,然后就放弃了. 因为是自己 demo 的项目 所以就自己手动建表了. 现在实习了,去到公司下载下代码来,拿上sql 导入发现还是报错, 根本没法整,然后自己都不 ...

  5. gulp+webpack+angular1的一点小经验(第二部分webpack包起来的angular1)

    又一周过去了,项目也已经做得有点模样了.收集来一些小经验,分享给大家,有疏漏之处,还望指正,海涵. 上周整合了gulp与webpack,那么工具准备差不多了,我们就开始编码吧.编码的框架就是angul ...

  6. postgresql,postgis,geoserver 发布地图服务,并用.net mvc openlayers3进行显示

    1.所需工具 postgres版本 9.6.1 对应的postgis geoserver 2.8.2 openlayers3 2.将postgres postgis ,geosever安装好,再用如下 ...

  7. react文本溢出hover气泡显示全部文本——JS判断文本溢出

    需求: 在文本溢出的时候,显示气泡 JS相关知识 // target js元素 const containerLength = target.width; //当前容器的宽度 const textLe ...

  8. Koa - 初体验(写个接口)

    前言 不会node.js的前端不是一个好前端! 这几年node.js确实是越来越火了,好多公司对node.js都开始有要求.虽说前端不一定要会后端,但想要成为一个优秀的前端,node.js是必经之路. ...

  9. io流函数略解(java_input流)[二]

    背景 在写这篇随笔之前,已经写了io流函数略解(java_File)(一),主要是总结了File的一些操作,以及一些源码介绍. 在Io实际应用中,实际上运用在如果会操作File,实际上很难写出一点能实 ...

  10. C++ 并发编程指南(收藏笔记)

    git地址: https://github.com/forhappy/Cplusplus-Concurrency-In-Practice https://github.com/forhappy/Cpl ...