(原) 动态域名服务 开发/学习过程

原创文章,请后转载,并注明出处。

一直在想实现一个可应用的动态域名服务。可以象现在网上某些服务商提供的那样,让只具有动态IP的客户,能把家里的电脑建立为服务器,向互联网开放服务。(这里只需要实现A记录查询即可)

以下是学习和实现过程,随着学习进程更新。

DNS入门

原文章见这里

DNS可以看作是一个电话本,翻译域名与IP地址。

dig i.scwy.net

dig @127.0.0.1 i.scwy.net 用本地服务器查询

dig @127.0.0.1 -p 8853 scwy.net 用本地服务器,但不是使用默认53端口,改为8853

Linux系统里面,DNS服务器的IP地址保存在/etc/resolv.conf文件。

主机名.次级域名.顶级域名.根域名(host.sld.tld.root)。我们常见的www.scwy.net,其中根域名固定为root,默认省略。net为顶级域名,scwy为次级域名,www为主机名或三级域名。

dig +trace scwy.net 显示DNS的整个分级查询过程

A: 地址记录(Address),返回域名指向的IP地址

NS:域名服务记录(Name Server),返回保存下一级域名信息的服务器地址。该记录只能为域名,不能为IP。

MX:邮件记录(Mail eXchange),返回接收电子邮件的服务地址。

CNAME:规范名称记录(Canonical Name),返回另一个域名,即当前查询的域名是另一个域名的跳转。

PTR:逆向查询记录(Pointer Record),只用于从IP地址查询域名。

host命令可以看作dig命令的简化版本,返回当前请求域名的各种记录。

安装whois工具,可以查看域名注册情况。(这可能用来实现域名信息跟踪)

sudo lsof -i :53 看看是谁占着dns端口

sudo service systemd-resolved stop 停掉它

sudo systemctl disable systemd-resolved 最好还是不要禁止。


Nginx 中文官方文档

考虑使用Nginx结合做一个动态域名服务,现在遇到的问题是:

不能使用多个 map ,因为存在三类不同的跳转设置: 1.http协议 2.https协议 3.本地静态跳转

如果能将这些都放置一个配置文件就最好,不选择话,三个也行啊。学习中。

Nginx 可以使用信号机制让其重载配置,而不断掉现有服务: kill -HUP 2213[进程号],与命令行nginx -s reload相同

github.com/loop321/dynamicproxy 此网友的代码也是一样的原理

相关文章