IPV6折腾篇

IPV6折腾篇
Jinghuashang前言
什么是IPV6
IPv6 是 Internet 协议(IP)的下一代标准,也称为 IPv6 协议。它是由互联网工程任务组(IETF)设计的用于替代现行的 IPv4 协议的下一代 IP 协议。IPv6 的地址长度为 128 位,相比 IPv4 的 32 位地址长度,IPv6 可以提供更多的地址资源,可以满足未来互联网连接的需求。除此之外,IPv6 还增强了安全性、流媒体传输、移动性等方面的支持。IPv6 的普及对于互联网的发展和创新有着重要的意义。
为什么要用IPV6
IPv6 是 IPv4 的下一代标准,有着以下几个方面的优势:
- 地址资源丰富:IPv6 使用 128 位地址长度,相比 IPv4 的 32 位地址长度,IPv6 可以提供更多的地址资源,可以满足未来互联网连接的需求。
- 增强安全性:IPv6 支持更多的安全机制,例如地址隐藏、地址自动配置、隧道技术等,可以提高网络的安全性。
- 优化网络拓扑:IPv6 支持邻居发现协议,可以轻松地建立和维护邻居关系,可以更方便地实现分布式网络拓扑结构。
- 流媒体传输:IPv6 对流媒体传输进行了优化,支持 QoS(服务质量) 机制,可以保证流媒体传输的质量。
- 移动性:IPv6 支持移动 IPv6 协议 (MIPv6),可以实现移动设备的无缝漫游,而 IPv4 的移动性则需要使用漫游协议来实现。
总结起来,IPv6 的使用可以提高网络的性能、安全性和可扩展性,满足未来互联网连接的需求,对于互联网的发展和创新有着重要的意义。
食用
食用准备
虽然现在工信部在推IPV6,但是很多地方还没接入IPV6,所以首先我们要确定自己是否有IPV6
访问IPV6测试
如果出现你的公网IPV6地址,那么就可以进行下一步
如果你是以上情况,那么恭喜你,你没有IPV6,若想获取就问问你宽带相对应的运营商
开始食用
因为光猫有防火墙,如果你想外网访问,需要配置防火墙,将强度设置到低
Windows 获取IPV6地址
打开终端或CMD1
2
3
4
5
6
7
8
9
10
11
12
13
14
15$ ipconfig
Windows IP 配置
以太网适配器 以太网:
连接特定的 DNS 后缀 . . . . . . . :
IPv6 地址 . . . . . . . . . . . . : 240e:398:1e50:
临时 IPv6 地址. . . . . . . . . . : 240e:398:1e50:
本地链接 IPv6 地址. . . . . . . . : fe80::a72:fec8:a5d9:4b10%6
IPv4 地址 . . . . . . . . . . . . : 192.168.1.4
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : fe80::1%6
192.168.1.1
其中IPV6地址就是你的IPV6地址,将其复制到浏览器中,访问即可
IPV6访问与IPV4有些许不同,IPV6访问需要将IPV6填入[]内才能访问
Linux 获取IPV6地址
打开终端1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 8a:94:d4:2e:1c:4e brd ff:ff:ff:ff:ff:ff
altname enp0s18
inet 192.168.1.20/24 metric 100 brd 192.168.1.255 scope global dynamic ens18
valid_lft 595136sec preferred_lft 595136sec
inet6 240e:398:1e50:/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 2591896sec preferred_lft 604696sec
inet6 fe80::8894:d4ff:fe2e:1c4e/64 scope link
valid_lft forever preferred_lft forever
其中inet6地址就是你的IPV6地址,将其复制到浏览器中,访问即可
添加域名
因为IPV6地址难记,并且家庭宽带的IPV6地址是动态的,所以需要添加域名,这样就可以通过域名访问
因为是动态域名,我这里推荐ddns-go
,他可以根据你的IPV6地址自动更新域名,并且支持多域名,多IPV6地址,多IPV4地址
系统中使用
- 从 Releases 下载并解压 ddns-go
-
1
brew install ddns-go
双击运行, 如没有找到配置, 程序将自动打开 http://127.0.0.1:9876
- 安装服务
- Mac/Linux:
sudo ./ddns-go -s install
- Win(以管理员打开cmd):
.\ddns-go.exe -s install
- Mac/Linux:
- 服务卸载
- Mac/Linux:
sudo ./ddns-go -s uninstall
- Win(以管理员打开cmd):
.\ddns-go.exe -s uninstall
- Mac/Linux:
- 支持安装或启动时带参数
-l
监听地址-f
同步间隔时间(秒)-cacheTimes
间隔N次与服务商比对-c
自定义配置文件路径-noweb
不启动web服务-skipVerify
跳过证书验证-dns
自定义 DNS 服务器。如:./ddns-go -s install -l :9877 -f 600 -c /Users/name/ddns-go.yaml
安装服务后会自启动,所以直接去浏览器访问localhost:9876
即可
Docker中使用
挂载主机目录, 使用docker host模式。可把
/opt/ddns-go
替换为你主机任意目录, 配置文件为隐藏文件1
docker run -d --name ddns-go --restart=always --net=host -v /opt/ddns-go:/root jeessy/ddns-go
在浏览器中打开
http://主机IP:9876
,修改你的配置,成功[可选] 使用
ghcr.io
镜像1
docker run -d --name ddns-go --restart=always --net=host -v /opt/ddns-go:/root ghcr.io/jeessy2/ddns-go
[可选] 支持启动带参数
-l
监听地址-f
间隔时间(秒)1
docker run -d --name ddns-go --restart=always --net=host -v /opt/ddns-go:/root jeessy/ddns-go -l :9877 -f 600
[可选] 不使用docker host模式
1
docker run -d --name ddns-go --restart=always -p 9876:9876 -v /opt/ddns-go:/root jeessy/ddns-go
使用IPv6
- 前提:你的电脑或终端能正常获取IPv6,并能正常访问IPv6
- Windows/Mac:推荐 系统中使用,Windows/Mac桌面版的docker不支持
--net=host
- 群晖:
- 套件中心下载docker并打开
- 注册表中搜索
ddns-go
并下载 - 映像 -> 选择
jeessy/ddns-go
-> 启动 -> 高级设置 -> 网络中勾选使用与 Docker Host 相同的网络
,高级设置中勾选启动自动重新启动
- 在浏览器中打开
http://群晖IP:9876
,修改你的配置,成功
- Linux的x86或arm架构,推荐使用Docker的
--net=host
模式。参考 Docker中使用 - 虚拟机中使用有可能正常获取IPv6,但不能正常访问IPv6
Webhook
- 支持webhook, 域名更新成功或不成功时, 会回调填写的URL
支持的变量
| 变量名 | 说明 |
| —— | —— |
| #{ipv4Addr} | 新的IPv4地址 |
| #{ipv4Result} | IPv4地址更新结果:未改变
失败
成功
|
| #{ipv4Domains} | IPv4的域名,多个以,
分割 |
| #{ipv6Addr} | 新的IPv6地址 |
| #{ipv6Result} | IPv6地址更新结果:未改变
失败
成功
|
| #{ipv6Domains} | IPv6的域名,多个以,
分割 |如 RequestBody 为空则为 GET 请求,否则为 POST 请求
Server酱
1
https://sctapi.ftqq.com/[SendKey].send?title=你的公网IP变了&desp=主人IPv4变了#{ipv4Addr},域名更新结果:#{ipv4Result}
Bark
1
https://api.day.app/[YOUR_KEY]/主人IPv4变了#{ipv4Addr},域名更新结果:#{ipv4Result}
钉钉
- 钉钉电脑端 -> 群设置 -> 智能群助手 -> 添加机器人 -> 自定义 - 只勾选 `自定义关键词`, 输入的关键字必须包含在RequestBody的content中, 如:`你的公网IP变了` - URL中输入钉钉给你的 `Webhook地址` - RequestBody中输入1
2
3
4
5
6
7{
"msgtype": "markdown",
"markdown": {
"title": "你的公网IP变了",
"text": "#### 你的公网IP变了 \n - IPv4地址:#{ipv4Addr} \n - 域名更新结果:#{ipv4Result} \n"
}
}飞书
- 飞书电脑端 -> 群设置 -> 添加机器人 -> 自定义机器人 - 安全设置只勾选 `自定义关键词`, 输入的关键字必须包含在RequestBody的content中, 如:`你的公网IP变了` - URL中输入飞书给你的 `Webhook地址` - RequestBody中输入1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24{
"msg_type": "post",
"content": {
"post": {
"zh_cn": {
"title": "你的公网IP变了",
"content": [
[
{
"tag": "text",
"text": "IPv4地址:#{ipv4Addr}"
}
],
[
{
"tag": "text",
"text": "域名更新结果:#{ipv4Result}"
}
]
]
}
}
}
}Telegram
[ddns-telegram-bot](https://github.com/WingLim/ddns-telegram-bot)plusplus 推送加
- [获取token](https://www.pushplus.plus/push1.html) - URL中输入 `https://www.pushplus.plus/send` - RequestBody中输入1
2
3
4
5{
"token": "your token",
"title": "你的公网IP变了",
"content": "你的公网IP变了 \n - IPv4地址:#{ipv4Addr} \n - 域名更新结果:#{ipv4Result} \n"
}Discord
- Discord任意客户端 -> 伺服器 -> 频道设置 -> 整合 -> 查看Webhook -> 新Webhook -> 复制Webhook网址 - URL中输入Discord复制的 `Webhook网址` - RequestBody中输入1
2
3
4
5
6
7
8
9
10
11
12
13
14
15{
"content": "域名 #{ipv4Domains} 动态解析 #{ipv4Result}.",
"embeds": [
{
"description": "#{ipv4Domains} 的动态解析 #{ipv4Result}, IP: #{ipv4Addr}",
"color": 15258703,
"author": {
"name": "DDNS"
},
"footer": {
"text": "DDNS #{ipv4Result}"
}
}
]
}
Callback
- 通过自定义回调可支持更多的第三方DNS服务商
- 配置的域名有几行, 就会回调几次
支持的变量
| 变量名 | 说明 |
| —— | —— |
| #{ip} | 新的IPv4/IPv6地址 |
| #{domain} | 当前域名 |
| #{recordType} | 记录类型A
或AAAA
|
| #{ttl} | ttl |- 如 RequestBody 为空则为 GET 请求,否则为 POST 请求
- Callback配置参考
因为不可抗力因素,家庭宽带80和443端口被屏蔽了,所以别用这两