一直在想实现一个可应用的动态域名服务。可以象现在网上某些服务商提供的那样,让只具有动态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结合做一个动态域名服务,现在遇到的问题是:
不能使用多个 map ,因为存在三类不同的跳转设置: 1.http协议 2.https协议 3.本地静态跳转
如果能将这些都放置一个配置文件就最好,不选择话,三个也行啊。学习中。
Nginx 可以使用信号机制让其重载配置,而不断掉现有服务: kill -HUP 2213[进程号],与命令行nginx -s reload相同
github.com/loop321/dynamicproxy 此网友的代码也是一样的原理