什么是动态域名解析

什么是动态域名解析,第1张

动态域名解析就是指把一个固定的域名解析到一个具有动态IP的主机上。在家里或公司里上网的机器,使用动态域名服务后,所有Internet 用户就可以通过一个固定的域名访问这台计算机。

动态域名可以将任意变换的IP地址绑定给一个固定的二级域名。不管这个线路的IP地址怎样变化,因特网用户还是可以使用这个固定的域名,来访问或登录用这个动态域名建立的服务器。

通过动态域名,将该路由器(或其它设备)的外网ip与该二级域名做一个绑定关系,在通过浏览器访问该域名时,DNS会将域名的IP地址解析为它所绑定的IP地址;当该设备的外网IP地址发生变化后,会及时告知该动态域名新的IP地址,动态域名就会将绑定的IP地址更新为最新的IP地址,即该域名的ip地址一直处于动态变化中。

本文介绍通过tomato路由器设置IPV6动态域名解析服务登陆命令脚本一次解析局域网路由器下所有设备的IPV6地址

设置Tomato路由器IPv6 配置为“前缀授权DHCPv6”,路由器WAN口可以从光猫上获取IPV6地址

申请每步科技动态域名,在路由器管理菜单--系统管理--定时重启/连接--自定义。选择自定义复制写入下面脚本命令,选择每分钟执行一次即可轻松实现IPV6动态域名解析。

sync

old=$(cat /tmp/mnt/sda1/socat/ips6.asp)

echo "$old"

wget -q -O /tmp/mnt/sda1/socat/ips7.asp  http://v6.meibu.com/ipv6.asp

sync

sleep 10

new=$(cat /tmp/mnt/sda1/socat/ips7.asp)

echo "$new"

if [ "$old" != "$new" ]

then

rm -rf /tmp/mnt/sda1/socat/ips6.asp

mv /tmp/mnt/sda1/socat/ips7.asp /tmp/mnt/sda1/socat/ips6.asp

wget "http://v6.meibu.com/v6.asp?name=aaa.meibu.net&pwd=aaa"

rm login.asp*

else

echo "==same!"

fi

其中的abc.noip.cn&pwd=abc 这个修改为你在每步申请的域名和密码。

这里有多个自定义定时器,可以同时写入IPV4的动态域名解析命令,具体可以参考每步的接口。

以上步骤完成,就可以正常使用域名在外网访问了。

另外,每步提供了设置登陆一个域名的同时解析局域网内所有设备的功能。

去每步首页用申请的域名密码登陆,成功后可以看到“增加多IPV6域名记录”的选择项目,在这里给局域网所有设备增加一个域名,则前面的脚本就会对所有域名生效,只要这个路由器上IP地址发生变化,则其他设备的域名会同步更新。

其他型号的路由器可以参照这些脚本。

原文链接:

https://priesttomb.github.io/%E6%8A%80%E6%9C%AF/2020/05/17/nginx-cached-dns-server-resolvered-answer/

接 上篇文章 中提到的 Nginx 解析域名地址的问题,用一句话描述就是“proxy_pass 中如果配置的是域名地址,Nginx 只有在 start / restart / reload 时,才会连接一次域名服务器解析域名,缓存解析的结果,后续则 不会根据解析结果的 TTL 进行自动更新 ”,如果遇到了域名地址配置有多个 IP ,且还在动态变化,那就会出现 Nginx 把请求转发到一个过期的 IP 地址的情况,连接超时的报错日志类似这样:

这个说法在 官方的一篇 2016 年的博客 中有提到:

除此之外,除了一些分析源码的网络文章,暂时还没有找到其他的官方文档中说到这个细节

在 upstream 中可以对上游的服务器进行更详细的设置,解决 DNS 缓存的问题可以在 upstream 中指定需要的负载均衡算法,比如 least_conn ,并指定 max_fails ,以实现调用失败 N 次之后判定该服务异常,暂停转发该服务

注:

这个配置的示例是官方博客中的,看到这个配置时觉得有点奇怪,自己进行了模拟测试,测试的方案是在 hosts 文件中配置一个模拟的域名与三个 IP 地址,其中两个 IP 是正确的,另一个是内网不存在的 IP,测试的结果就是 Nginx 始终会将请求转发到那个错误的 IP 去,日志中一直能看到超时的报错,配置的 max_fails 仿佛没有任何作用(有补充配置了 fail_timeout ,也尝试配置了 proxy_next_upstream 、 proxy_next_upstream_timeout 和 proxy_next_upstream_tries )

不清楚用 hosts 配置的方式是不是必然会出现这样的情况,因为目前没条件测试真正想要的场景,所以不敢说博客中的这种配置是错的【如果以后碰巧有条件能测试验证,再回头来更新

最初学习 Nginx 的时候测试过 max_fails 这个配置,当时在 upstream 里配置的都是一些 IP 地址的上游服务。再次按 IP 地址进行测试,在 upstream 中配置两个正确的 IP 地址 和一个错误的 IP 地址,发现这样的配置就是能生效的,失败一定次数之后(实际失败的次数比设置的 max_fails 多,不清楚什么原因),Nginx 在 fail_timeout 时间内就不再转发请求到那个错误的 IP

resolver 的配置详情可看 官方文档 ,示例的配置是指定 DNS 服务器 10.0.0.2,指定 DNS 解析的有效时间为 10 秒,按博客 《Nginx动态解析upstream域名》 中博主的测试,不是说 Nginx 每过 10 秒会自己重新调一次 DNS 解析,而是有请求转发时才检验一次有效期是否过期

不配置 valid 选项时,V1.1.9 之后的 Nginx 默认会使用 DNS 解析结果中的 TTL

在 proxy_pass 中使用变量,带来的作用就是在 TTL 过期时能再次调用 DNS 解析,从而解决一直使用缓存结果的问题

这大概是目前官方原版唯一解决 DNS 缓存的解决方案了,带来的弊端也如 《Nginx动态解析upstream域名》 的博主所说,不能使用 upstream 模块特有的相关配置

Nginx Plus 版有更好的配置解决这些问题,另外使用 Lua 插件或许也能更完美的解决这个问题,暂时就没什么研究了


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/733506.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-08-12
下一篇2023-08-12

发表评论

登录后才能评论

评论列表(0条)

    保存