(转载)Linux通用IPv6 DDNS更新脚本

这个脚本适用于任何版本的Linux,包括任何Linux内核的路由系统,LEDE(OpenWRT)、梅林、EdgeOS、老毛子等,只要有SSH或者Telnet权限就可以!

1.将以下脚本保存为 ddns6_update.sh(自行命名),上传到Linux任意目录

#!/bin/sh

alias echo_date='echo 【$(TZ=UTC-8 date -R +%Y年%m月%d日\ %X)】'

ddns6_uid=$1
ddns6_sk=$2
ddns6_subdomain=$3
ddns6_domain=$4
ddns6_dev=$5
ddns6_dns=$6

now=`echo_date`

die () {
    echo "$now: failed($1)"
}

[ "$ddns6_dev" = "" ] && ddns6_dev="ppp0"
[ "$ddns6_dns" = "" ] && ddns6_dns="223.5.5.5"

ip=`ip -6 addr show dev $ddns6_dev |grep 'scope global'|grep -v deprecated|awk -F '/|inet6 ' 'NR==1{print $2;}' 2>&1` || die "$ip"

current_ip=`nslookup $ddns6_subdomain.$ddns6_domain $ddns6_dns 2>&1`

if [ "$?" -eq "0" ]
then
    current_ip=`echo "$current_ip" |grep Address|awk '{print $3}'|grep :| tail -n1`

    if [ "$ip" = "$current_ip" ]
    then
        echo "$now: skipped($ip)"
        exit 0
    fi 
fi



update_record() {
    local args="action=ddns_update_record&uid=$ddns6_uid&sk=$ddns6_sk&subDomain=$ddns6_subdomain&domain=$ddns6_domain&ip=$ip&type=AAAA"
    curl -s "https://www.router.fun/wp-admin/admin-ajax.php?$args"
}


ddns6_update_res=`update_record`


echo "$now: $ip,$ddns6_update_res"

2.查看网卡(网络接口)名称,选择正确的获取IPv6地址的网口,控制台输入 ip -6 addr

查看输出结果

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: switch0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
    inet6 240e:f0:5ba:9a01::1/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::1/64 scope link 
       valid_lft forever preferred_lft forever
    inet6 fe80::f29f:c2ff:2308:59f3/64 scope link 
       valid_lft forever preferred_lft forever
4: eth0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qlen 1000
    inet6 fe80::f29f:c2ff:2308:59ee/64 scope link 
       valid_lft forever preferred_lft forever
5: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
    inet6 fe80::f29f:c2ff:2308:59ef/64 scope link 
       valid_lft forever preferred_lft forever

接口switch0的IP地址为运营商提供的公网IP:240e:f0:5bd:ffa0::1

3.执行脚本更新DDNS记录

sh /tmp/upload/ddns6_update.sh 200001 5HbaKSg345GbheeUp test router.live switch0
参数顺序:UID  SK  二级域名 一级域名  网口
输出结果:
【2018年11月01日 15:43:07】: success(240e:f0:5bd:ffa0::1)
更新成功!

4.查看解析结果,这里使用Windows的CMD

C:\Users\hansh>nslookup test.router.live
服务器:  UnKnown
Address:  fe80::a00:27ff:2399:b36

名称:    test.router.live
Address:  240e:f0:5bd:ffa0::1  

DDNS解析成功!

5.添加crontab定时任务自动更新

*/5 * * * * sh /tmp/upload/ddns6_update.sh >> /tmp/upload/ddns6.log
转载自鲁特饭(router.fun),原文链接
最终实现:http://openwrt.liusy.tk

最后修改:2019 年 03 月 11 日 10 : 29 AM
如果觉得我的文章对你有用,请随意赞赏

发表评论