openwrt同时使用openclash和ddns,偶尔openclash选择全局模式,ddns设置为URL则会获取到国外的ip,导致域名和ip不对应的问题。可以选择脚本排除国外ip。脚本内容如下:
#!/bin/sh
#a是当前域名(a.test.tk)对应ip
a=$(nslookup a.test.tk 223.5.5.5 |grep -E -o '([0-9]+\.){3}[0-9]+'| grep -Ev '(^127\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$)' | grep -Ev '(223.5.5.5)')
#b是当前外网ip
b=$(wget --no-check-certificate --quiet --output-document=- "http://members.3322.org/dyndns/getip" | grep -E -o '([0-9]+\.){3}[0-9]+' | head -n1 | cut -d' ' -f1)
#查看当前外网ip是否在国内
curl -s http://ip.useragentinfo.com/json | grep 'CN' >ip.log
#如果在国内则返回当前外网ip,如果在外国则返回域名对应ip
if [ $? -eq 0 ];then
ip=$b
else
ip=$a
fi
echo $ip
复制如上内容并保存为ip.sh,放到路由器特定目录,并将地址填到ddns中即可