使用 PHP + DNSPod API 实现的 DDNS 动态域名解析,可以解析 A 和 AAAA 记录。
没有则添加记录,有则更新记录
目录结构
.
├── README.md
├── bin # 存放获取公网 IPv6 二进制文件
│ ├── get_public_ipv6-darwin-10.6-386
│ ├── get_public_ipv6-darwin-10.6-amd64
│ ├── get_public_ipv6-linux-386
│ ├── get_public_ipv6-linux-amd64
│ ├── get_public_ipv6-linux-arm-5
│ ├── get_public_ipv6-linux-arm-6
│ ├── get_public_ipv6-linux-arm-7
│ ├── get_public_ipv6-linux-arm64
│ ├── get_public_ipv6-linux-mips
│ ├── get_public_ipv6-linux-mips64
│ ├── get_public_ipv6-linux-mips64le
│ ├── get_public_ipv6-linux-mipsle
│ ├── get_public_ipv6-windows-4.0-386.exe
│ ├── get_public_ipv6-windows-4.0-amd64.exe
│ └── get_public_ipv6.go
└── run.php # 程序逻辑代码
🍕 使用方法
🎁 获取代码你可以使用 git 命令克隆本项目 git clone https://github.com/PrintNow/php-dnspod-ddns
或者直接下载最新版
✒ 配置 run.php 文件,请根据提示配置第 9、10、14、20、24、32、35 行代码
📁 bin 目录说明,此目录下存放的是 获取公网 IPv6 二进制文件,作用是为了获取公网IPv6,是使用 Golang 编写的,然后使用 xgo 交叉编译成各个操作系统,不同 CPU
架构的二进制文件。如果你不想使用本方法获取公网 IPv6,你可以自行重新编写(需要有 PHP 编程能力) run.php 的 get_public_ipv6() 函数小提示:你可以只保留符合你当前操作系统的 二进制文件,但是请不要更改其名字
另外,一般情况下,如果在各大云服务厂商购买的服务器,如果选择的是 Linux 或 Windows,它们的架构基本都是 x64 的,但也不排除一些 Linux 是 arm 架构的,请自我鉴别
🚀 运行
直接运行
cd php-dnspod-ddns
php run.php
get_public_ipv6.go 代码
package main
import (
"fmt"
"net"
)
func main() {
//[2400:3200::1] 是阿里DNS IPv6 地址
conn, err := net.Dial("udp", "[2400:3200::1]:53")
if err != nil {
fmt.Println("Error", err)
}
localed := conn.LocalAddr()
addr, _ := net.ResolveUDPAddr("udp", localed.String())
ip := addr.IP
fmt.Println(ip)
}