如何在全平台启用 IPv6 网络?(路由器、Windows、Linux、Docker)

本文首发于只抄博客,欢迎点击原文链接了解更多内容。

前言

如今 IPv6 网络越来越普及,也是时候开启 IPv6 网络了,特别是对于 NAS 玩家,开启 IPv6 后,NAS 可以获取到公网 IPv6 用于外网访问,通过 ZeroTier 或者 Tailscale 组建虚拟局域网时,也能提高打洞的成功率;而对于 VPS 玩家,IPv6 的路由与 IPv4 不同,使用 IPv6 连接也许能获得更低的延迟体验以及降低丢包率。

既然要开启 IPv6,最重要的前提自然是设备需要支持 IPv6,目前来说除了远古的百兆路由器,基本上所有的家用路由器都能够支持,并且现在运营商对 IPv6 的支持也比较好,如果家里是光猫拨号的,一般来说默认就已经开启了 IPv6。而对于手机、电脑就更不用说了,自然是早早的就支持 IPv6 了。

在开始之前,首先要访问 https://ipw.cn 看看自己现在有没有 IPv6,如果已经能获取到 IPv6 了,那么说明下面的教程就不需要再设置了。

本文将以梅林、Padavan、OpenWRT 为例,分别演示光猫桥接下如何开启 IPv6,其余路由器可以参考梅林或者 Padavan 进行设置,但由于不同路由器的界面以及操作步骤区别较大,再加上部分家用路由器对 IPv6 支持程度有限,可能部分设置无法找到。
开启 IPv6 后,设备将获取到公网 IPv6,意味着设备直接暴露在公网中,建议开启 IPv6 防火墙,放行自己需要的端口,具体可以参考梅林、Padavan 和 OpenWRT 设置 IPv6 防火墙并开放指定端口

光猫拨号

虽然说开启 IPv6 建议光猫桥接,通过路由器拨号上网,但如果你家的光猫的超级密码不好获取,不方便改桥接,其实光猫拨号也不是不能用。对于光猫拨号的用户,前言里面已经提到了,大部分运营商在设置光猫拨号的同时,就已经为你开启了 IPv6,如果你的路由器为 AP 模式,理论上直接就能获取到 IPv6 了;如果路由器为动态 IP 模式,那么还需要单独设置 IPv6。

  • Bridge:部分路由器可以单独将 IPv6 设置为 Bridge 或者 Passthrough(如图中的桥模式)
  • Native:如果路由器获取到的是 IPv6 前缀,那么也可以通过开启 DHCP-DP 前缀委派,为局域网的设备分配 IPv6 地址(如图中的自动获取 IP 地址)
  • NAT6(不建议):如果路由器既不能设置为 Bridge,路由器获取到的又是 IPv6 地址而非前缀,那么只能通过 NAT6 来分配私有 IPv6 地址

光猫桥接

对于光猫桥接的用户,IPv6 分为 Stateless 无状态(SLAAC)和 Stateful 有状态,家用场景建议选择 Stateless,一方面是 Android 设备至今仍不支持 Stateful,无法获取到 IPv6 地址;另一方面如果当地运营商会定期重新拨号,导致 IPv6 前缀改变,而路由器租期还没到,会导致 IPv6 断网,详细可以看宽带 IPv6 过段时间自动掉线要如何解决?

梅林

  • 联机类型:Native
  • DHCP-PD:启用
  • 自动配置设置:Stateless

Padavan

  • IPv6 连接类型:Native DHCPv6
  • 获取 IPv6 外网地址:Stateless: RA
  • 启用 LAN DHCPv6 服务器:Stateless

OpenWRT

OpenWRT 的设置虽然看着多,但现在的固件大部分设置默认就已经开启了,拨号完成就可以使用 IPv6 了

OpenWRT 一般来说 WAN 口 PPPoE 拨号成功后,会自动生成一个虚拟动态接口,获取到 IPv6 以及 IPv6-PD

如果没有出现虚拟动态接口也没有关系,可以将 wan6 (没有的话手动添加,协议为 DHCPv6 客户端)的设备修改为 @wan,效果也是一样的

然后来到 lan 的高级设置,勾选委托 IPv6 前缀 ,并将 IPv6 分配长度禁用修改为 64 或更小

接着再点击 lan 的 DHCP 服务器中的 IPv6 设置,将 RA 服务DHCPv6 服务 都设置为服务器模式

最后再来到 lan 的 DHCP 服务器中的 IPv6 RA 设置,勾选启用 SLAAC ,RA 标记看自己的需求是否需要同时开启 DHCPv6,需要的话勾选受管配置(M)和其他配置(O) ,不需要则只勾选其他配置(O)

Windows

  1. 依次点击 右键网络->属性->更改适配器设置->双击对应的网络->属性
  2. 在新弹出的窗口中勾选 Internet 协议版本 6(TCP/IPv6)
  3. 在命令行输入 ipconfig 查看是否获取到 IPv6 地址

Linux

  1. 编辑 /etc/sysctl.conf 文件
  2. 将以下代码添加至 /etc/sysctl.conf 文件中
ini 复制代码
net.ipv6.conf.all.disable_ipv6=0 # 整个系统所有网卡
# 单个 interface
net.ipv6.conf.[interface].disable_ipv6=0 # 填写具体的[interface]
net.ipv6.conf.default.disable_ipv6=0 # 默认网卡

# 如需关闭 IPv6 则将上述值改为 1
  1. 加载内核参数
sh 复制代码
sysctl -p

Docker

  1. /etc/docker/daemon.json 文件中填下 IPv6 相关配置
json 复制代码
{
  "ipv6": true,
  "ipv6tables": true,
  "experimental": true,
  "fixed-cidr-v6": "2001:db8::/64"
}
  1. 重启 Docker
sh 复制代码
systemctl restart docker

Nginx

  1. 域名添加 AAAA 解析
  2. Nginx 监听 IPv6 的 80 443 端口
nginx 复制代码
server {
  listen [::]:80;
  listen [::]:443 ssl http2;
}
相关推荐
pk_xz12345630 分钟前
Shell 脚本中变量和字符串的入门介绍
linux·运维·服务器
小珑也要变强33 分钟前
Linux之sed命令详解
linux·运维·服务器
海绵波波10739 分钟前
Webserver(4.3)TCP通信实现
服务器·网络·tcp/ip
Lary_Rock3 小时前
RK3576 LINUX RKNN SDK 测试
linux·运维·服务器
热爱跑步的恒川4 小时前
【论文复现】基于图卷积网络的轻量化推荐模型
网络·人工智能·开源·aigc·ai编程
云飞云共享云桌面5 小时前
8位机械工程师如何共享一台图形工作站算力?
linux·服务器·网络
Peter_chq5 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端
一坨阿亮6 小时前
Linux 使用中的问题
linux·运维
hairenjing11236 小时前
使用 Mac 数据恢复从 iPhoto 图库中恢复照片
windows·stm32·嵌入式硬件·macos·word
音徽编程7 小时前
Rust异步运行时框架tokio保姆级教程
开发语言·网络·rust