我的 ISP 最近开始提供 IPv6。我家里有一台带 PiVPN 的 Raspi,希望在外出时能够访问我的 LAN。我一直在使用鸭子DNS多年来,它一直运行良好,对于 IPv4 来说,它运行良好。但是,由于它们在 AWS 上,似乎无法解析 IPv6,因此您必须自己将其提供给他们的更新 API。OK
如果一切正常并且KO
存在问题,此 API 通常会返回。
这是我用来更新的代码:
token='mytoken'
domain='mydomain'
ipv6=$(ip addr show dev "eth0" | sed -e's/^.*inet6 \([^ ]*\)\/.*$/\1/;t;d' | grep -v '^fd00' | grep -v '^fe80' | head -1)
echo url="https://www.duckdns.org/update?domains=$domain&token=$token&ip=&ip6v=$ipv6&clear=true&verbose=true" | curl -k -o ~/duckdns/duckdns.log -K -
我比较了我的“本地” ipv6 和我通过 curl 另一台服务器得到的 ipv6,如下所述这里,但似乎没有什么区别,所以我很确定我正确获取了我的 IPv6。
OK
当我尝试在网站上检查时,它返回一个但随后说我提供了一个无效的 IP。
关于如何将 IPv6 添加到 duckdns 域有什么想法吗?
答案1
因此,出于某种原因,DuckDNS 自己在 install-tab 下推荐的发布 IP 的方式不起作用。如果您将执行的操作curl
从解析 echo 通过 stdout 并设置 url 变量更改为仅构造字符串并对其进行 curl 操作,它就会起作用:
curl -s "https://www.duckdns.org/update?domains=$domain&token=$token&ip=&ipv6=$ipv6addr" -o ~/duckdns/duckdns.log
此版本将让 DuckDNS 找出您的 IPv4 并根据您的设备配置设置您的 IPv6(如问题所示)。请确保定期运行该脚本,因为如果 NDP 发现冲突的地址或您未设置静态 IPv6,您的全局 IPv6 可能会发生变化。
答案2
使用 crontab 定期运行此脚本
鸭子
#!/bin/bash
domain=mydomain
token=aaaabbbb-cccc-4444-8888-ddeeff001122
ipv6addr=$(curl -s https://api6.ipify.org)
ipv4addr=$(curl -s https://api.ipify.org)
echo "https://www.duckdns.org/update?domains=$domain&token=$token&ip=$ipv4addr&ipv6=$ipv6addr"
curl -s "https://www.duckdns.org/update?domains=$domain&token=$token&ip=$ipv4addr&ipv6=$ipv6addr" -o ~/duckdns/duckdns.log