Ddnspod插件在路由器双线路下两个出口间跳IP的解决方法
Koolshare 软件中心腾讯 Ddnspod 插件在路由器双线路接入时不能正常工作,网络域名对应的公网 IP 地址在路由器两个外网出口间来回乱跳的解决方法如下:
一、在路由器 /koolshare/scripts 目录下找到名称为 ddnspod_config.sh 的脚本文件。打开后,在代码开始的函数定义处找到如下的 arIpAdress() 函数:
# 获得外网地址
arIpAdress() {
local inter=$(curl -s whatismyip.akamai.com)
#local inter=$(nvram get wan0_realip_ip)
echo $inter
}
二、将 arIpAdress() 函数花括号 {…} 里的内容替换为如下代码:
# 获得外网地址
arIpAdress() {
local ifn=""
[ -n "$( ip route | grep nexthop )" ] && {
ifn=$( nvram get wan0_pppoe_ifname )
[ -z "$ifn" ] && ifn=$( nvram get wan0_ifname )
[ -n "$ifn" ] && ifn="--interface $ifn"
}
echo $( eval "curl -s $ifn whatismyip.akamai.com 2>&1 | grep -Eo '([0-9]{1,3}[\.]){3}[0-9]{1,3}'" )
}
替换完成后,Ddnspod 插件就可在路由器单/双线路接入,以及作为一级或二级路由的情况下正常工作。双线路时,插件会固定通过路由器第一 WAN 口更新站点域名的公网 IPv4 地址,并可从外网正常访问路由器和内部网络。
顺便提供一个查询路由器公网出口地址的小工具作为本文的彩蛋,内容如下:
一键获取路由器公网出口 IPv4 地址脚本 v1.0.0 版 发布日期:2020/8/22
软件及教程下载地址
百度网盘 https://pan.baidu.com/s/1w6AZCqDvK7Jb2qE-PTTADA
国外开源代码托管平台(GitHub) https://github.com/larsonzh/arip
国内开源代码托管平台(Gitee) https://gitee.com/larsonzh/arip
下载后去掉 “.pdf” 后缀(如果有),使用 WinSCP 类工具软件上传至华硕固件路由器中任一可存储文件的目录,脚本文件权限设为 0755,用 SSH 控制终端在文件所在目录内执行如下命令即可一键获取路由器公网出口的 IPv4 地址。
获取路由器公网出口 IP 地址 SSH 终端操作命令
第一 WAN 口 ./lz_arip.sh 1
第二 WAN 口(双线路时) ./lz_arip.sh 2
第一 WAN 口 / 单线路时为当前 WAN 口 ./lz_arip.sh
以上为相对路径命令,需在本脚本所在路由器目录内执行。若 lz_arip.sh 名称前加入脚本文件全路径,则可在任意目录位置执行。
作者 LZ(妙妙呜) larsonzhang@gmail.com