TimothyYe / godns

A dynamic DNS client tool that supports AliDNS, Cloudflare, Google Domains, DNSPod, HE.net & DuckDNS & DreamHost, etc, written in Go.
https://timothyye.github.io/godns/
Apache License 2.0
1.5k stars 221 forks source link

能否作为代理模式 #132

Open itviewer opened 2 years ago

itviewer commented 2 years ago

场景: 一般路由器都支持常见的ddns 协议,如 DynDNS、花生壳。但域名在阿里云、dnspod等,路由器不支持这些域名服务商。 能否让 godns 运行为代理模式,不需要自己定时查询公网IP是否变化,而是在路由器上配置ddns(如通过 dyndns、no-ip 等协议),这样当公网IP发生变化时,主动请求 godns,godns再推送给阿里云等域名服务商,即通过路由器主动推送代替自己定时查询,从而实现让路由器自带的 ddns 功能能够使用阿里云等域名服务商,这样能够实现即时响应IP变化。

比如我的路由器 ddns 功能截图: 深度截图_选择区域_20220123213134

TimothyYe commented 2 years ago

但是这样的话,得把GoDNS嵌入到这个服务提供商的下拉列表里面?不太清楚路由器跟服务提供商的交互,应该每家提供商都有提供自己的API,路由器内置了每家服务商API的调用。

itviewer commented 2 years ago

@TimothyYe 不需要把 GoDNS 嵌入服务提供商列表啊,比如你已经实现了 No-IP,所以应该清楚相关请求协议,路由器也是要遵守这个协议的,当路由器公网IP变化时,也是要按相关协议推送给 No-IP 服务端。 如上图,路由器的服务提供商列表里支持 No-IP,但现在我们的域名在阿里云这些路由器不直接支持的服务商那里,所以需要 godns 模仿 No-IP 服务端,在路由器那里按 No-IP 的规范配置好,路由器检测到IP变化后,推送给 godns,这样 godns 作为一个中间人,接收来自路由器的推送,然后再转换一下,发给阿里云,从而实现利用路由器主动推送而不是自己定时轮询

原理很简单,就是实现个 http 服务,接收路由器发的 No-IP 的 Http Get 请求,然后按配置好的阿里云参数再转发给阿里云

TimothyYe commented 1 year ago

@itviewer 你知道这个路由器发的HTTP Get请求是个什么格式吗

zend commented 1 year ago

@itviewer 这里的挑战是路由器一般写死了服务器的地址,就算你劫持了DNS,还得考虑让路由器信任自签证书吗?

itviewer commented 1 year ago

@itviewer 这里的挑战是路由器一般写死了服务器的地址,就算你劫持了DNS,还得考虑让路由器信任自签证书吗?

抱歉,可能路由器或者服务提供商不同,我目前用华为的路由器,如上面截图,地址,端口什么的都需要自己填写