Openshift 自建DDNS动态域名
某种情况下如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.privatePrivate-key-format: v1.3Algorithm: 157 (HMAC_MD5)Key: MjR1T1Bdwi9NaxiT+5yIYA==Bits: AAA=Created: 20181207022257Publish: 20181207022257Activate: 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 A 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动态域名的更多相关文章
- RPi 2B DDNS 动态域名
/**************************************************************************** * RPi 2B DDNS 动态域名 * 说 ...
- DNSPod DDNS 动态域名设置
所谓动态域名,就是当你的服务器 IP 地址发生变化的时候,自动地修改你在「域名解析服务商」那里的域名记录值 怎么操作?看官方文档 DNSPod用户API文档 首先需要创建 Token 完整的 API ...
- routeros DDNS 动态域名更新IP
:local ednsuser "账号":local ednspass "密码":local ednshost "域名":local edn ...
- 思科E3200 路由器 DD-WRT 设置花生壳和3322.org动态域名(DDNS)
花生壳设置(已測试) ddns.oray.com:80 username aaaa password bbbb 主机名 abc.gicp.net URL /ph/update?ho ...
- dnspod 动态域名的使用。openwrt使用dnspod动态域名解析。
这里主要说的是linux shell下的使用. 先看接口说明: 接口地址: https://dnsapi.cn/Record.Ddns HTTP请求方式: POST 请求参数: 公共参数 domain ...
- Linux纯Shell实现DNSPod动态域名
http://www.anrip.com/post/872 开发背景: 公司有台嵌入式拨号上网设备,内置busybox和完整wget命令(支持https协议),但没有curl.python.ruby. ...
- dnspod动态域名使用感受
继花生壳不能用之后,3322也开始不太好用了,首先就是360把所有3322的域名全部判定为危险域名,甚至拦截程序对于3322url的api请求. 所以想把3322换成我们自己的独立域名,但是3322他 ...
- 基于etcd插件的CoreDNS动态域名添加
前提条件:已经有一个可用的etcd环境. 一.CoreDNS简介 CoreDNS是一个DNS服务器,和Caddy Server具有相同的模型:它链接插件.CoreDNS是云本土计算基金会启动阶段项目. ...
- rhel7+apache+c cgi+动态域名实现web访问
1. 申请动态域名/安装no-ip客户端 https://blog.csdn.net/lee244868149/article/details/44095835 2. yum安装httpd 两种方法安 ...
随机推荐
- C# Properties文件夹 Bin 目录 Bin 目录
Properties文件夹 定义你程序集的属性 项目属性文件夹 一般只有一个 AssemblyInfo.cs 类文件,用于保存程序集的信息,如名称,版本等,这些信息一般与项目属性面板中的数据对应,不需 ...
- 比特宇宙-TCP/IP的诞生
前情回顾: 我是一个explorer的线程 我是一个杀毒软件线程 我是一个IE浏览器线程 比特宇宙创世不久,宇宙中开始出现文明. 文明不断碰撞.融合.进化,逐渐分化为几大派系: 施行Unix体制的帝国 ...
- 《手把手教你》系列练习篇之8-python+ selenium自动化测试 -压台篇(详细教程)
1. 简介 本文是练习篇的最后一篇文章,虽然练习篇的文章到此就要和大家说拜拜了,但是我们的学习之路才刚刚开始.不要停下你的脚步,大步朝前走吧!比你优秀的人还在走着,我们有什么理由停下自己的脚步了,生命 ...
- 封装扩展Kendo UI Grid
封装后的代码如下: function DataGrid(options) { this.options = { height: "100%", sortable: true, re ...
- layer ui 多选下拉取值(全)
https://maplemei.gitee.io/xm-select/#/basic/create layer ui
- shell 读取文件第几列
读取文件的第2列和第4列: cat filename.txt | awk '{ print $2 $4 }' 求文件file1.txt的第二列 和 file2.txt(单列文件)的交集: cat fi ...
- 洛谷 P1920 成功密码 题解
这是蒟蒻的第一篇题解,(之前的都没过,估计这篇也过不了 回到正题 这题,本蒟蒻第一眼看到以后,就决定咦,这不是模拟吗? 看到世界范围,嗯,打扰了. 扯回正题 首先,暴力肯定是A不了的(至少我A不了 但 ...
- luogu P3984 高兴的津津
题目描述 津津上高中了.她在自己的妈妈的魔鬼训练下,成为了一个神犇,每次参加一次OI比赛必拿Au虐全场.每次她拿到一个Au后就很高兴.假设津津不会因为其它事高兴,并且她的高兴会持续T天(包包含获奖当天 ...
- 设计模式GOF23(创建型模式)
• 创建型模式: 单例模式.工厂模式.抽象工厂模式.建造者模式.原型模式. • 结构型模式: –适配器模式.桥接模式.装饰模式.组合模式.外观模式.享元模式.代理模式. • 行为型模式: 模 ...
- nbuoj2784 倒水
题目:http://www.nbuoj.com/v8.83/Problems/Problem.php?pid=2784 一天,TJ买了N个容量无限大的瓶子,开始时每个瓶子里有1升水.接着TJ决定只保留 ...