共计 4264 个字符,预计需要花费 11 分钟才能阅读完成。
因部分部署在家中的服务需要,研究了下家庭设备下如何开启IPV6。
网络架构:
- 光猫:只负责光电转换,开启桥接模式
- 路由器:拨号上网,提供 DHCP 服务给家中其他客户端分配IP
光猫开启 IPV6
参考链接:ipw.cn 个人宽带开启IPV6
openwrt 开启 IPV6
参考链接:CSDN OpenWrt IPv6配置
视 openwrt 的不同版本,配置项会略微有所变化。
贴一下我的版本:
主机型号 | Xiaomi Mi Router AX3000T (CpuMark : 8934.887011 Scores) |
---|---|
架构 | ARMv8 Processor x 2 |
固件版本 | bleachwrt stable 20231225 @ R23.11.11 / LuCI Master (git-23.346.45702-3e8eb4a) |
这里是路由器拨号获取 IPV6,并作为 DHCP 服务端。
WAN 接口配置
配置 PPOPE 拨号上网:
WAN6 接口配置
配置为 DHCPv6 客户端:
LAN 接口配置
- 路由通告服务:服务器模式
- DHCPv6 服务:服务器模式
- NDP 代理:已禁用
- DHCPv6 模式:无状态的 + 有状态的
验证
配置完毕后,接口可观察到分配的 IPV6 :
这里需要说明,国内三大运营商的IPv6地址分配情况分别是:
电信为 240e 开头的(240e::/20);移动为 2409 开头的(2409:8000::/20);联通为 2408 开头的(2408:8000::/20)。
而 fe80 开头的地址是一种本地连接地址,即 “link-local” 地址。这些地址仅在计算机所连接的本地网络内可用,并不能在互联网上使用。
WAN6 中的 IPV6-PD,PD在IPv6中代表”Prefix Delegation”,即前缀委派。IPv6中的前缀委派是一种机制,用于将IPv6地址前缀分配给路由器,以便路由器可以为其连接的子网中设备分配唯一的IPv6地址。
客户端 开启IPV6
家宽中,主要的设备是 pve 和台式机。它们都是作为 DHCP 客户端,从路由器获取IPV6 IP地址。
PVE 宿主机
PVE宿主机系统是 debian。
命令行登录 PVE 宿主机:
# 添加内核参数
# vim /etc/sysctl.conf
# 开启IPV6
net.ipv6.conf.all.forwarding=1
net.ipv6.conf.all.accept_ra=2
net.ipv6.conf.default.accept_ra=2
net.ipv6.conf.vmbr0.accept_ra=2
net.ipv6.conf.all.autoconf=1
net.ipv6.conf.default.autoconf=1
net.ipv6.conf.vmbr0.autoconf=1
# 加载
sysctl -p
CentOS 7
示例配置文件参考:
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
UUID=9b5d30fc-859a-4c0b-8838-f6bc34802be6
DEVICE=eth0
ONBOOT=yes
GATEWAY=192.168.2.1
IPADDR=192.168.2.10
NETMASK=255.255.255.0
DNS1=192.168.2.1
DNS2=114.114.114.114
# 验证
# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.2.10 netmask 255.255.255.0 broadcast 192.168.2.255
inet6 240e:36f:1563:be00:5616:6f2b:b8b2:9145 prefixlen 64 scopeid 0x0<global>
inet6 240e:36f:15bc:1d00:f736:91b4:cf5a:7b35 prefixlen 64 scopeid 0x0<global>
inet6 240e:36f:1565:1100:f5d6:515c:cdd4:811 prefixlen 64 scopeid 0x0<global>
inet6 240e:36f:1520:9985:b99e:4c0:d17f:41c6 prefixlen 64 scopeid 0x0<global>
inet6 fd9f:e0a0:877a:0:30b8:bdac:1aa8:5d5a prefixlen 64 scopeid 0x0<global>
inet6 240e:36f:159c:6700:2e01:148d:2d4d:6039 prefixlen 64 scopeid 0x0<global>
inet6 fe80::fe40:5cb:7af7:8aae prefixlen 64 scopeid 0x20<link>
inet6 fd50:8c20:cd98:0:ab17:d254:3edb:838e prefixlen 64 scopeid 0x0<global>
inet6 fd12:f30e:e482:0:4c4b:902d:d967:cc27 prefixlen 64 scopeid 0x0<global>
inet6 fd1a:4fdc:b03e:0:dc03:17b1:b7a8:3eac prefixlen 64 scopeid 0x0<global>
ether 42:29:38:e2:91:ad txqueuelen 1000 (Ethernet)
RX packets 221253030 bytes 173310347276 (161.4 GiB)
RX errors 0 dropped 895 overruns 0 frame 0
TX packets 150345303 bytes 114251873773 (106.4 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Ubuntu 20.04
示例配置文件参考:
# cat /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
ethernets:
ens18:
dhcp6: true
addresses: [192.168.2.11/24]
routes:
- to: default
via: 192.168.2.1
nameservers:
addresses: [192.168.2.1, 114.114.114.114]
version: 2
如果启用了 ufw
,要将 ufw
配置文件的 IPV6 开关打开
# cat /etc/default/ufw |grep IPV6
#IPV6=NO
IPV6=yes
验证
# ifconfig ens18
ens18: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.2.11 netmask 255.255.255.0 broadcast 192.168.2.255
inet6 240e:36f:1520:9985:5c7d:7aff:fead:3d04 prefixlen 64 scopeid 0x0<global>
inet6 240e:36f:1520:9985::a9f prefixlen 128 scopeid 0x0<global>
inet6 240e:36f:15bc:1d00::a9f prefixlen 128 scopeid 0x0<global>
inet6 fe80::5c7d:7aff:fead:3d04 prefixlen 64 scopeid 0x20<link>
inet6 fd50:8c20:cd98:0:5c7d:7aff:fead:3d04 prefixlen 64 scopeid 0x0<global>
inet6 fd50:8c20:cd98::a9f prefixlen 128 scopeid 0x0<global>
inet6 240e:36f:15bc:1d00:5c7d:7aff:fead:3d04 prefixlen 64 scopeid 0x0<global>
ether 5e:7d:7a:ad:3d:04 txqueuelen 1000 (Ethernet)
RX packets 429813982 bytes 557127831305 (557.1 GB)
RX errors 0 dropped 1556 overruns 0 frame 0
TX packets 492808448 bytes 570802217123 (570.8 GB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Windows10台式机
控制面板 –> 网络和 Inertnet –> 网络连接 –> 以太网 –> 属性
验证
Linux 或 Window 终端执行:
# ping -6 ipw.cn
PING ipw.cn(240e:e9:900e:22:3e::17 (240e:e9:900e:22:3e::17)) 56 data bytes
64 bytes from 240e:e9:900e:22:3e::17 (240e:e9:900e:22:3e::17): icmp_seq=1 ttl=55 time=14.6 ms
64 bytes from 240e:e9:900e:22:3e::17 (240e:e9:900e:22:3e::17): icmp_seq=2 ttl=55 time=15.6 ms
64 bytes from 240e:e9:900e:22:3e::17 (240e:e9:900e:22:3e::17): icmp_seq=3 ttl=55 time=14.1 ms
64 bytes from 240e:e9:900e:22:3e::17 (240e:e9:900e:22:3e::17): icmp_seq=4 ttl=55 time=14.2 ms
...
能够解析域名并 ping 通,表示成功开启客户端的 IPV6。