如何实现OpenWRT自动更新域名解析(DDNS)?

OpenWRT

1 前言

一个问题,一篇文章,一出故事。
笔者最近部署了OpenWRT路由环境,由于笔者的域名使用花生壳动实现动态域名解析,即DDNS。
笔者想通过http协议脚本刷新路由出口的IP,于是整理本章节。

2 最佳实践

2.1 openWRT环境

如何PEV部署OpenWRT路由软件?

2.2 部署DDNS刷新脚本

2.2.1 安装软件包

opkg update
opkg install curl bind-host

2.2.2 创建脚本

mkdir -p ~/scripts
vim ~/scripts/pusoray.sh

创建如下脚本,

#!/bin/bash
domain="example.cmdschool.org"
user="username"
pwd="usernamepwd"
ipLog="/var/log/ip.log"

nowIP=$(curl -s icanhazip.com || curl -s ifconfig.me)

if ! echo "$nowIP" | grep -Eq '^([0-9]{1,3}\.){3}[0-9]{1,3}$'; then
    exit 1
fi

if ! command -v nslookup >/dev/null; then
    echo 'Please install bind-host first!' >&2
    exit 1
fi

if nslookup "$domain" | grep -q "$nowIP"; then
    echo "DNS don't need to updated" >&2
    exit
fi

for i in {1..3}; do
    response=$(curl -s "http://$user:$pwd@ddns.oray.com/ph/update?hostname=$domain")
    echo "$response" | grep -q "good" && break
    sleep 5
done

echo "$(date +"%Y-%m-%d %H:%M:%S") $nowIP" >> "$ipLog"

注意需要更改的参数:
– 参数“domain”,是你向花生壳申请的域名
– 参数“user”,登录花生壳的账号
– 参数“pwd”,登录花生壳的密码

2.2.3 测试脚本

ash ~/scripts/pusoray.sh

2.2.4 设计脚本触发

crontab -e

加入如下内容(以下每5分钟执行一次):

*/5 * * * * ash ~/scripts/pusoray.sh
没有评论

发表回复

OpenWRT
如何防止OpenWRT resolv.conf被修改?

1 前言 一个问题,一篇文章,一出故事。 笔者今天部署了openWRT,但是发现“/etc/reso …

OpenWRT
如何部署OpenWRT OpenVPN软件包?

1 前言 一个问题,一篇文章,一出故事。 笔者今天部署了openWRT,于是想部署openVPN的软 …

OpenWRT
如何让OpenWRT Web界面支持中文?

1 前言 一个问题,一篇文章,一出故事。 笔者今天部署了openWRT,于是想让他的web界面支持中 …