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

前言

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

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

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

ipw.cn

本文将以梅林、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

Padavan

OpenWRT

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

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

OpenWRT PPPoE

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

wan6 设备

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

lan 高级设置

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

lan IPv6 设置

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

lan IPv6 RA 设置

Windows

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

Windows

Linux

  1. 编辑 /etc/sysctl.conf 文件
  2. 将以下代码添加至 /etc/sysctl.conf 文件中
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. 加载内核参数
sysctl -p

Docker

  1. /etc/docker/daemon.json 文件中填下 IPv6 相关配置
{
  "ipv6": true,
  "ipv6tables": true,
  "experimental": true,
  "fixed-cidr-v6": "2001:db8::/64"
}

  1. 重启 Docker
systemctl restart docker

Nginx

  1. 域名添加 AAAA 解析
  2. Nginx 监听 IPv6 的 80 443 端口
server {
  listen [::]:80;
  listen [::]:443 ssl http2;
}
Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐