
programie/phpdyndns或[***](URL变量授权方式)。
您还可以通过GET变量指定IPv4和IPv6地址(myip=your.ipv4.address.here和myipv6=your:ipv6:address:here)。
示例:
[***][***][***]或使用现成的Docker镜像(参见下文“使用Docker安装”部分)。
获取最新版本有两种方法:
*(推荐)下载最新发布版并解压到您想要提供服务的Web目录(例如/var/www/dyndns)
/var/www/dyndns)直接克隆仓库需要使用Composer下载依赖:composer install
下载完成后,继续以下步骤:
config.sample.json复制为config.jsonconfig.json以满足您的需求(详见下文“配置”部分)allow-update { localhost; })PHPDynDNS也提供Docker镜像。可从Docker Hub拉取。
将您的config.json挂载到/app/config.json
启动容器的示例命令:
bashdocker run -d --name phpdyndns -p 80:80 -v /path/to/config.json:/app/config.json:ro programie/phpdyndns
确保config.json不能通过HTTP访问!在Apache中,这已通过.htaccess文件实现。
配置通过存储在config.json文件中的JSON完成,示例如下:
json{ "server": "localhost", "ttl": 60, "users": { "myuser": { "password_hash": "$5$1IekWfmq$yVTjQcWsX/qK.TIws0NWAj0mmlyDFsSMw6nSFYHcyH8", "hosts": { "myhost.example.com": { "zone": "example.com" }, "anotherhost.example.com": { "zone": "anotherhost.example.com" } }, "post_process": "nohup sudo /opt/some-script.sh %hostname% %ipv4address%" } } }
server:要连接的DNS服务器(默认:localhost)ttl:PHPDynDNS管理的所有DNS条目的TTL(生存时间)(默认:60)users:所有用户的列表(每个条目的键为用户名)
password_hash:用户的哈希密码(例如使用mkpasswd -m sha-256生成)hosts:用户可更新的所有主机列表(每个条目的键为要更新的主机名)
zone:包含此主机名的区域post_process:成功更新DNS条目后应执行的命令(可包含占位符,见下文说明)post_process选项中可使用以下占位符,执行时会被替换:
%username%:用户名%hostname%:主机名%ipv4address%:新的IPv4地址(如可用)%ipv6address%:新的IPv6地址(如可用)自定义[***]<username>&password=<pass>&hostname=<domain>&myip=<ipaddr>your.configured.host.of.your.domain您配置的用户名您配置的密码如果您的路由器不支持向(自定义)DynDNS服务发送更新,可使用此方法。每次请求都会更新DNS区域!
* * * * * curl [***]
这将每分钟更新您的域名your.domain.tld。
将your-username、your-password和your.domain.tld替换为您配置的用户名、密码和域名。
PHP DynDNS可在成功更新DynDNS主机名后触发用户定义的命令。
例如,命令/opt/reload-iptables.sh可使用DynDNS主机名的新IP地址自动重新加载iptables。
后处理命令可在config.json中为每个用户单独配置。
PHP DynDNS可在成功更新主机名后执行命令。此类命令可从文件重新加载iptables规则,强制iptables重新查找动态主机名。
后处理脚本示例如下:
sh#! /bin/sh /sbin/iptables-restore < /path/to/your/iptables.rules
iptables.rules示例如下:
*filter # 设置默认策略 :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] # 允许已建立的连接 -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT # 允许本地连接 -A INPUT -i lo -j ACCEPT -A OUTPUT -o lo -j ACCEPT -A FORWARD -i lo -o lo -j ACCEPT # 允许HTTP -A INPUT -p tcp --dport 80 -j ACCEPT # DynDNS -A INPUT -p tcp --dport 22 -s yourhost.example.com -j ACCEPT COMMIT
注意:您必须使用root权限调用脚本(如sudo)!只需允许运行Web服务器的用户(如www-data)以root身份执行脚本(如在/etc/sudoers文件中添加www-data ALL=(ALL) NOPASSWD:/opt/scripts/update_dyndns_iptables.sh)。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务