IPV6折腾篇
IPV6折腾篇
Jinghuashang前言
什么是IPV6
IPv6,全称为Internet Protocol Version 6,是互联网工程任务组(IETF)为了解决IPv4地址耗尽问题而设计的一种新型网络协议。作为互联网的基石,IP协议负责为网络上的每一台设备分配一个独一无二的地址,以便数据能够在复杂的网络结构中准确无误地送达目的地。随着互联网的飞速发展,原有的IPv4协议所提供的地址空间已经无法满足日益增长的网络设备数量,因此IPv6的推出成为了一种必然趋势。
IPv6的核心特性在于其扩展的地址长度,从IPv4的32位增加到了128位,这使得新的协议能够提供几乎无限的地址资源。这一巨大的地址空间不仅能够满足现有的个人电脑、智能手机和其他设备的连接需求,还能够为未来的物联网(IoT)设备、智能家居、智能城市等新兴技术提供充足的地址资源。
除了地址资源的丰富性,IPv6还在安全性、流媒体传输和移动性等方面提供了更加先进的支持。在安全性方面,IPv6内置了对IPsec的支持,这是一种用于保护网络通信的安全协议,它能够为数据传输提供加密和认证,从而大大增强了网络的安全性。在流媒体传输方面,IPv6通过改进的QoS机制,能够保证音视频数据在网络中的优先传输,从而提供更加流畅的流媒体体验。在移动性方面,IPv6的移动IPv6(MIPv6)协议使得移动设备在切换网络时能够无缝连接,这对于移动用户来说是一个巨大的改进。
IPv6的普及和部署对于互联网的未来发展至关重要。它不仅解决了地址耗尽的问题,还为互联网的持续创新和扩展提供了新的可能性。随着越来越多的网络服务提供商、企业和设备制造商开始支持IPv6,我们可以预见一个更加广阔、安全、高效的互联网未来。
为什么要用IPV6
IPv6,作为互联网协议(IP)的第六版,被设计为IPv4的继任者,以应对当今网络世界所面临的诸多挑战。IPv6的核心优势在于其几乎无限的地址空间,这为互联网的持续增长提供了坚实的基础。以下是IPv6相较于IPv4的几个显著优势的详细阐述:
- 地址资源的丰富性:IPv6采用128位的地址长度,这使得它可以提供数量惊人的网络地址,远远超过了IPv4的32位地址所能提供的数量。具体来说,IPv6能够提供大约3.4×10^38个独特的网络地址,这个数字如此庞大,以至于可以为地球上的每一粒沙子分配一个IP地址,从而彻底解决了IPv4地址耗尽的问题。
- 增强的安全性:IPv6在设计之初就内置了安全性考虑,支持IPsec(Internet Protocol Security)协议,这是一套用于在互联网协议网络上进行安全通信的标准框架。IPsec可以为IPv6提供端到端的加密和数据完整性保障,这在IPv4中通常是作为可选的附加功能实现的。此外,IPv6的地址自动配置功能也能减少对DNS的依赖,从而降低了某些类型的网络攻击风险。
- 网络拓扑的优化:IPv6通过邻居发现协议(NDP)简化了网络设备之间的通信过程。NDP取代了IPv4中的地址解析协议(ARP),使得设备能够更高效地发现和维持网络中的邻居关系,从而优化了网络拓扑结构和数据传输路径。
- 流媒体传输的优化:IPv6对流媒体传输的支持进行了改进,特别是在支持QoS(Quality of Service)方面。QoS允许网络管理员为特定的流量类型分配带宽和优先级,确保关键应用(如视频会议或实时流媒体)的网络传输质量,这在日益增长的互联网应用中尤为重要。
- 移动性的支持:IPv6原生支持移动IPv6(MIPv6)协议,这使得移动设备在切换网络时能够无缝地保持连接,无需重新配置网络设置。这对于智能手机、平板电脑和其他移动设备用户来说是一个巨大的便利,因为它们可以在不同的网络之间移动而不会丢失连接。
综上所述,IPv6不仅提升了网络的性能、安全性和可扩展性,还为互联网的未来发展奠定了坚实的基础。随着物联网(IoT)设备的激增和互联网用户数量的不断增长,IPv6的重要性将日益凸显,它为创新和连接提供了无限的可能性。
食用
食用准备
尽管工业和信息化部(工信部)在推动IPv6的部署和应用,但IPv6的普及程度在全国范围内并不均衡。因此,如果您想确定自己是否已经接入了IPv6网络
访问IPV6测试
如果出现你的公网IPV6地址,那么就可以进行下一步
如果你是以上情况,那么恭喜你,你没有IPV6,若想获取就问问你宽带相对应的运营商
开始食用
因为光猫有防火墙,如果你想外网访问,需要配置防火墙,将强度设置到低
Windows 获取IPV6地址
打开终端或CMD
1 | $ ipconfig |
其中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端口被屏蔽了,所以别用这两