0x01 前言

IPv6在国际上已经大面积使用,而我国在过去几年也大力推动该IP版本的部署。国内的移动基站率先使用上IPv6,但因为部署是无感的,所以很多人并不知道。另外,在某些地区的运营商也尝试提供IPv6的IP给用户,但网络状况一般。

广东电信的公网IPv4的IP比较容易申请,而这个公网IPv4和IPv6是互斥的,也就是说拥有公网IPv4的用户不会分配IPv6。但这个问题在这周发生变化,广东电信已经全面铺开IPv6的部署工作,我目前正用着双栈网络。

本文的某些部分仅适用于桥接光猫的用户,请根据自身的实际情况了解自身需要的信息。

0x02 准备

0x02.1 电信与光猫

在继续操作前请准备好电信宽带申请人的身份证号和姓名;如果账号绑定了手机或固定电话号码,请准备好相关号码,最后,请准备一台能拨打电话与上网的手机,以便拨打10000号和通过QQ与电信在线客服联系。

在做准备工作和接下来调试的时候可能会经历多次非正常断开的情况,因为广东电信授权的session数可能只有1至2个,一旦系统未能及时检测出账号状态,则有可能无法拨号或者需要等待较长时间才能成功拨号。因此需要准备以上信息,以便不时之需。

当进行非正常断开的操作后,建议通过QQ联系电信在线客服人员,或者拨打10000号转人工。接通后阐明原因并直接提出要求即可,如:

你好,我在调试IPv6,刚才重启路由器后可能账户没有正常退出,麻烦帮我强制断开。

如果期间要求验证你的身份,请按需提交。客服反馈完成后即可告知无其他问题并要求结束对话,最后记得给客服5星好评。

接下来需要检查光猫的配置,需要的时候还得对其进行修改。首先通过搜索引擎查询光猫的超级用户的账号密码,如我的EPON光猫:

超级用户的账号和密码为:

账号:telecomadmin
密码:nE7jA%5m

如果以上信息不适用于你的光猫,请自行查询,可以要求电信客服远程修改配置,要求提供双栈网络。

通过网络端口与光猫连接,在浏览器中打开192.168.1.1并输入账号密码,如果成功进入光猫,可以参照下图找到技术栈的配置项:

白玉魂の西行寺幽幽子-供图

注意!电话接口与IPTV接口均无法打开管理界面。

选择名称,一般会有3个选项,分别是固话、IPTV和宽带。固话的IP模式是不可选的,如果无法分辨连接模式,可以将IPTV和宽带的IP模式均改为IPv4/IPv6

白玉魂の西行寺幽幽子-供图

白玉魂の西行寺幽幽子-供图

 

还有某些光猫配置如下图:

digi-供图digi-供图

完成后重启光猫,还原线缆并开始pfsense部分的配置工作。

0x02.2 pfsense ipv6

默认情况下,pfsense是禁用IPv6流量的,需要到以下页面放行所有IPv6的流量:

0x02.3 安全

IPv6的可用数量非常庞大,而且用于IPv4的NAT技术已不建议使用,所以目前分配的IPv6地址都是公网IP,都可以从外部访问,这将带来非常严重的安全问题,因为网络中的所有设备都能获取到一个IPv6。

某些路由器没有附带防火墙功能或者高级防火墙功能,默认放行IPv6的主动传入流量,这将导致拥有IPv6 IP的设备暴露在公网。如果这些设备使用默认口令或者存在可利用的漏洞,将导致这些设备被黑客入侵和控制,甚至沦为肉鸡或泄露数据。

而在pfsense中,默认放行IPv6主动传入的流量,因此需要在各个网关的防火墙中添加一条丢弃IPv6流量的规则,或者丢弃主动入站的流量。

首先来到防火墙配置界面,在顶部添加一条规则:

需要注意的是,ICMP协议在IPv6技术栈中是由用途的,而且必不可少,建议放行:

而用于DNS服务的UDP 53端口也建议放行,用于后续的测试,最后调整三者的层级:

0x03 pfsense

0x03.1 WAN

先来到pfsense WAN端口的配置页面,请按下图进行修改:

  • IPv6 Configuration Type:选择DHCP6,通过DHCP的方式获取IPv6地址;
  • Use IPv4 connectivity as parent interface:勾选,通过IPv4链路向上级获取IPv6的前缀和信息;
  • Request only an IPv6 prefix:可选,仅获取IPv6的前缀;
  • DHCPv6 Prefix Delegation size:可选,56,请求上级分配前缀的大小,但运营商可忽略该值;
  • Send an IPv6 prefix hint to indicate the desired prefix size for delegation:可选,发送DHCPv6 Prefix Delegation size的值给上级服务器;
  • Do not allow PD/Address release:可选,PPPoE重连的时候不发送释放前缀或IPv6 IP地址,但电信的前缀是动态的。

完成后请点击页面底部的save,但请勿点击上方的apply changes。

0x03.2 LAN

完成WAN的修改后,来到LAN的配置页面进行修改,如果有多个LAN端口,请逐一修改。如果WAN端口的IPv6获取方式不是DHCP6,你将无法进行后续的操作。首先来到LAN端口的设置界面:

  • IPv6 Configuration Type:选择Track Interface,通过指定的端口获取IPv6;
  • IPv6 Interface:WAN,选择WAN端口即可;
  • IPv6 Prefix ID:前缀ID。

因为我们需要通过PPPoE拨号,并且只有一个WAN端口,那么在有多个LAN网关的情况下则有可能无法获取到IPv6。在这种情况中,可以通过Track Interface的选项,让LAN端口通过指定的端口发送DHCP6数据包,从而获取IPv6地址。

Track Interface需要指定两个参数,分别是Track Interface和IPv6 Prefix ID,而这个ID在拥有多个LAN端口的适合非常有用。广东电信支持获取多个前缀,而这个前缀ID就是为了区分不通前缀的ID,如下图:

请注意上图中除WAN端口以外的IPv6中的第四段:

  • LAN:4501
  • OPT1:4502
  • GAME:4503
  • IPV6:4500

经过测试发现电信是支持获取多个IPv6前缀的,而这个前缀就是IPv6 Prefix ID中指定的值,且该值不可重复,这个值的范围是根据WAN端口配置中的DHCPv6 Prefix Delegation size进行划分的。默认情况下,电信分配的子网掩码是64,但需要修改为小于64的子网掩码才能在多个端口中配置不同ID,如果设置值和电信分配的子网掩码一致,则可用值只有0;如果指定的值为56,那么可以设置的值为0到ff。

目前尚不知道电信允许获取多少个前缀,在我的环境中只获取了4个。

悉数修改LAN端口后即可应用修改,重新拨号并稍等片刻再查看端口状态。因为IPv6分配速度较慢,估计要30秒左右才能获取到IP地址,随后可以到以下页面检查:

可以从图中发现IPv6地址的后几段和端口的MAC地址一致,还可以从图中发现下发的前缀为64。

0x03.3 WAN监控

应用修改、成功拨号并获取到IPv6后会发现端口监控一致处于离线的状态,这是因为获取到的网关IP为一个内网IP:

而pfsense的监控功能是通过ping命令ping网关来检测网络状况,但内网的IPv6 IP的流量是无法穿透网关流向公网的。为此,我们需要手动指定一个公网IP作为ping的对象,先来到以下页面并双击IPv6的WAN端口:

在下图所示的位置填写自定义的IP地址后保存即可,请勿修改其他选项:

上图所用的IP为我国下一代互联网国家工程中心提供的公共IPv6 DNS服务器地址:

  • 240C::6666
  • 240C::6644

0x04 DHCP

完成上面的操作后,pfsense下的所有客户机应该能获取到IPv6地址,因为LAN端口的配置为Track Interface,所有DHCP6的请求都会通过WAN口发送出去。但是通过这种方式获取到的IPv6地址非常长而且是动态的,不便于管理,时候就需要借助DHCP6服务。

所以这里涉及到两种配置方式:

  • 自行管理IP分配
  • 电信管理IP分配

0x04.1 自行管理IP分配

来到DHCPv6 Server & RA的配置页面,点击相应的LAN端口标签,参考下图进行配置即可:

  • DHCPv6 Server:启用该端口的DHCP6服务;
  • Range:IP池大小;
  • Prefix Delegation Size:前缀大小;
  • DNS Servers:DNS服务器;
  • Domain name:用于DNS自动注册;
  • Default lease time:动态IP默认的释放时间;
  • Max lease time:动态IP最大的释放时间;
  • Time Format Change:时间格式。

Time Format Change主要将DHCP lease中的时区从默认的UTC改为+8,方便查看;前缀大小跟随电信下发的大小即可;如果流动的设备比较多,建议降低IP地址的释放时间;DNS服务器在当前环境建议设为fe80::1:1,这将指向该端口,此时需要在以下页面指定DNS服务器:

在这里要重点说明IP池范围,上图中我的配置为:

起始值:::ffc0
终止值:::ffff

结合电信下发的子网掩码和前缀:64,可以得出客户机获得的IP地址格式为:

起始值:xxxx:xxxx:xxxx:xxxx::ffc0
终止值:xxxx:xxxx:xxxx:xxxx::ffff

如下图所示:

在IPv6中,每一段的第一个非0字符前的0都可以省略,比如上面的IP地址的完整写法为:

起始值:xxxx:xxxx:xxxx:xxxx:0000:0000:0000:ffc0
终止值:xxxx:xxxx:xxxx:xxxx:0000:0000:0000:ffff

在家庭环境中的设备数量比较少,因此可以大幅缩减IP段,将其中的三段省略且固定在合适的IP段中。比如上述的IP池中的可用地址为63个,也就是十六进制的ff-c0=3f,转换为十进制即为63。

完整这部分的设置后请保存,然后来到RA设置页面,选择Managed后保存即可:

0x04.2 电信管理IP分配

如果想减少配置工作,希望由电信分配IPv6的地址,只需要启用该端口的DHCP服务器并在RA设置界面中选择assigned即可:

0x05 结语

最后,请拿出你的设备,连接到网络进行测试,在测试之前需要将之前建立的防火墙规则禁用。测试结果如下:

以下是各个测评项目的结果:

紧接着还有固定IP的配置工作和防火墙的配置工作,只有等这两项工作完成后,才能全面开放本地的IPv6流量。这部分内容将在近期测试并形成文章发布。