记一个ipv6+ddns
记一个ipv6+ddns
所谓ddns, 就是动态dns, 适用于服务器ip地址不固定, 过一段时间就会改变的场景
推荐使用dynv6, 我用着挺好的, 地址: Free dynamic DNS for IPv6 (dynv6.com)
虽然是英文, 但大致能看明白吧
dynv6步骤
首先新建域名, 在dynv6中查看token
推荐使用他提供的脚本gist.github.com, 其他方式可自行参考他提供的APIdynv6 APIs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49!/bin/sh -e
hostname=$1
device=$2
file=$HOME/.dynv6.addr6
[ -e $file ] && old=`cat $file`
if [ -z "$hostname" -o -z "$token" ]; then
echo "Usage: token=<your-authentication-token> [netmask=64] $0 your-name.dynv6.net [device]"
exit 1
fi
if [ -z "$netmask" ]; then
netmask=128
fi
if [ -n "$device" ]; then
device="dev $device"
fi
address=$(ip -6 addr list scope global $device | grep -v " fd" | sed -n 's/.*inet6 \([0-9a-f:]\+\).*/\1/p' | head -n 1)
if [ -e /usr/bin/curl ]; then
bin="curl -fsS"
elif [ -e /usr/bin/wget ]; then
bin="wget -O-"
else
echo "neither curl nor wget found"
exit 1
fi
if [ -z "$address" ]; then
echo "no IPv6 address found"
exit 1
fi
address with netmask
current=$address/$netmask
if [ "$old" = "$current" ]; then
echo "IPv6 address unchanged"
exit
fi
send addresses to dynv6
bin "http://dynv6.com/api/update?hostname=$hostname&ipv6=$current&token=$token"
bin "http://ipv4.dynv6.com/api/update?hostname=$hostname&ipv4=auto&token=$token"
save current address
echo $current > $file考虑到脚本的网站不是那么好打开, 在这里放上脚本. 默认ipv4 ipv6都会被上传记录, 如果只想要ipv6, 将
$bin "http://ipv4.dynv6.com/api/update?hostname=$hostname&ipv4=auto&token=$token"
删掉即可. 我是删掉了, 防止某些情况下解析到ipv4, 导致无法访问脚本抓取网络接口显示的ipv6地址, 在$HOME/.dynv6.addr6创建文件记录上次更新的ip地址, 如果再次执行更新操作, 会先判断获取的ip地址和文件中的是否一致, 如果一致便不会上传更新
命令
token=你的token ./dynv6.sh 你的域名
定时任务
可以设置定时任务, 如0 0 * * *
代表每天0点
分 | 时 | 日 | 月 | 周 |
---|---|---|---|---|
0~59 | 0~23 | 1~31 | 1~12 | 0~7 |
周的数字为 0 或 7 时,都代表“星期天”的意思
特殊字符 | 代表意义 |
---|---|
*(星号) | 代表任何时刻都接受的意思。举例来说,0 12 * * * command 日、月、周都是*,就代表着不论何月、何日的礼拜几的12:00都执行后续命令的意思。 |
,(逗号) | 代表分隔时段的意思。举例来说,如果要执行的工作是3:00与6:00时,就会是:0 3,6 * * * command时间还是有五列,不过第二列是 3,6 ,代表3与6都适用 |
-(减号) | 代表一段时间范围内,举例来说,8点到12点之间的每小时的20分都进行一项工作:20 8-12 * * * command仔细看到第二列变成8-12.代表 8,9,10,11,12 都适用的意思 |
/n(斜线) | 那个n代表数字,即是每隔n单位间隔的意思,例如每五分钟进行一次,则:*/5 * * * * command用*与/5来搭配,也可以写成0-59/5,意思相同 |
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.