dnspod-shell icon indicating copy to clipboard operation
dnspod-shell copied to clipboard

Implement support for retrieving host ip from a specific interface

Open Vigilans opened this issue 1 year ago • 0 comments

这个PR为arDdnsCheck添加了第4个参数:接口名。通过arDdnsCheck $domain $subdomain 6 $devarDdnsCheck $domain $subdomain 4 $dev,我们可以限定在指定的接口$dev上查询一个IPv6地址或IPv4地址。

该参数将解决以下需求:

  • IPv4:双WAN双公网配置时,选择其中一个网卡更新IP(或调用两次更新到不同域名上,再借助CNAME做线路分流),如https://github.com/rehiy/dnspod-shell/issues/46 。
  • IPv6:除了双WAN之外,在一个网卡上会有多个IPv6地址(稳定的+临时的)。DDNS一般来说是使用于服务端,IPv6地址应以稳定而非频繁变动为好,但ip route get与外网查询则常常更偏向于使用临时地址(因为是作为客户端去访问出口服务)。因此$dev参数对应的查询规则,可以设计为优先偏向于静态的稳定地址,当无法查询到时才回退到临时地址。
  • 为内部网络更新域名(如指定一个TUN/TAP接口)

该PR引入的第4个参数实际上是在为下一个PR引入的第5个参数(MAC地址)作铺垫:通过给定一个指定的网卡接口与一个指定的MAC地址,获取该网卡链路上该MAC地址对应设备的IPv6地址并更新到DDNS。

届时,dnspod-shell将支持的参数组合如下:

  • $domain $subdomain [4|6]: 查询用作默认出口的地址(偏向于使用临时地址), 调用arWanIp4arWanIP6
  • $domain $subdomain [4|6] $dev: 查询某个接口$dev上的公网地址(偏向非临时的稳定地址)调用arDevIp4arDevIP6
  • $domain $subdomain 6 $dev $mac: 查询接口$dev上的局域网内某个设备$mac的IPV6地址。调用arLinkIp6

Vigilans avatar Sep 05 '22 07:09 Vigilans