IPv6的地址范围实在是太大,太大,太大了,按照目前来看,IANA平均把/12分配给各大机构,各大机构又平均把/32分给LIR,这就差不多允许每个机构LIR申请以百万来算的IP段总量,而最终ISP可能拿到的是/48,或者比较常见的大一点的/44.
注:为了直观,下面地址部分没使用通用压缩方法,但是在配置时候最好压缩地写.
注:这些都是个人记录,并非权威,如果需要更科学方法,咨询专业的人.权威一些的文档:https://www.cisco.com/c/dam/global/zh_cn/solutions/industry/segment_sol/enterprise/programs_for_large_enterprise/pdf/bn/cisco_sba_bn_ipv6addressingguide-aug2012_chn.pdf
几种常见前缀长度和分配场景:
- /32 => 几种常见前缀长度和分配场景RIR/NIR分配给有ASN的运营商,互联网公司,大型企业,不过能吃下这段地址都是大佬级人物,并且分配机构再小就不给了.
- /40 => 大型企业的标准分配(256个POP以内).
- /44 => 小型企业的标准分配(16个POP以内).
- /48 => 运营商向中小客户分配的常见前缀长度,但是国内一般不会给这么大.
- /56 => 宽带运营商给家庭用户和小微企业分配的最小前缀长度,国内一线城市标配.
- /64 => 末端设备子网,/64是很多协议硬性要求的,再往下需要人工分配.
- /127 => 路由器点对点链路,此处不是为了节约地址而是防止一种资源耗尽型攻击.
按道理讲,由于IPv6的接口地址部分,即一般的后64位,所能容纳的地址数量远超过现有任何设备的硬件转发表项,可以近似看做无限的地址空间,完全不需要考虑节约地址的事情.但是节约依然是一种美德,不是吗?比如JustHost之类他们就只分1个IPv6,GulloHosting就分/112的子网,足够创建6万多个地址.
另外,也有一种IP地址规划观点就是,永远不要节约IPv6地址,因为他怎么都用不完,这说的其实也是有道理的,如果一个运营商拿到一个/32,可分配 4096个/44,即使个别小区较大,需要比/44大的网络,也能支持四千个左右小区,共16777216个小区,再分割到/64,那是余量充足.
由于穷人试验的只能拿到最小的公网BGP大小:2406:0840:97c6::/48 (IP是举例的!)
然后以BuyVM作为入口transit,需要内存至少1G(含)以上的Plan才能收全表,规划我的又穷又慢网.
BuyVM通过本地上游AS53667,已经通过隧道连接AS58057,在电信这种级别的应该都是通过物理线路连接的,就我们这破网这么干,要知道,怎么走隧道,都会受公网影响,然后再和一些其他人建立对等Peer,上游就是要付钱的,如果只要一个上游,那么上游故障就会出事,所以一般要2个上游,Peer是为了降低通信成本的,一般加入一些IXP可以获得大量Peer.
入口POP地址规划在网段2406:0840:97c6::/64,地址初步规划为2406:0840:97c6::1,由于入口的机的接口速度是1Gbps,地点是拉斯维加斯,所以给他分配了RDNS为ge.node1.las1.xxoo.net,标志着我这个入口POP是位于LAS的第一个节点,速度1GE(其实也不等于1Gbps).
然后进行我的全球网络规划.(要打通全部内部机的连接,对于实际运营商来说,会用物理线路连接,对于试验那就随你用干什么了.)
- 2406:0840:97c6:XXX0:/64 <= 专门给POP用的,节点机不占用这里面的任何IP.
- 2406:0840:97c6:XXX1:/64 <= 分配给洛杉矶服务器的IP段.
- 2406:0840:97c6:XXX2:/64 <= 分配给纽约服务器的IP段.
- 2406:0840:97c6:XXX3:/64 <= 分配给亚特兰大服务器的IP段.
- 2406:0840:97c6:XXX4:/64 <= 分配给*****服务器的IP段,如果不够还可以继续延申,最大至15个,直到按地域划分完毕.
给15个选项足够配置所有服务器,然后前面还有三位,可以使用如下的分类.
- 按设备类型 => 网络设备/楼内服务器/安防系统/会议系统/IP 电话/网络信息化中心/办公室无线/办公室有线等等.
- 按速度分类 => 超低速设备/10Mbps/100Mbps/200Mbps/500Mbps/1Gbps/10Gbps/40Gbps等等.
- 按用途分类,按维护人分类,按安全策略分类.按设备系统分类等等.
剩下的64位推荐的方法有两种,不推荐的方法有很多,但是都可以用,无状态配置是比较好的方法,另一个随机生成地址,这样能尽量地规避网络扫描.
然后给洛杉矶的机器可以有这些地址(要是这样还能被准确扫描到那简直超神!):
2406:0840:97c6:0001:5918:4A2E:A9C9:B9F7
2406:0840:97c6:0001:2DDF:D6E8:3D3A:F621
2406:0840:97c6:0001:31A3:DCA3:F648:F50F
2406:0840:97c6:0001:4202:AA8B:F8EA:6216
2406:0840:97c6:0001:CC91:91D8:E198:262C
2406:0840:97c6:0001:B393:4FB0:E72E:F902
2406:0840:97c6:0001:6F91:3C91:0ADE:A9E6
2406:0840:97c6:0001:E461:AF2A:4C2D:D12D
2406:0840:97c6:0001:2C96:C32F:8AA6:0C80
2406:0840:97c6:0001:A3C2:EFD0:169F:B16E
随机生成可以参考这段程序.
import random
def gen_random():
ip = ''
ip = ip + str(random.choice("0123456789ABCDEF"))
ip = ip + str(random.choice("0123456789ABCDEF"))
ip = ip + str(random.choice("0123456789ABCDEF"))
ip = ip + str(random.choice("0123456789ABCDEF"))
return ip
for i in range(10):
print('2406:0840:97c6:0001:' + gen_random() + ':' + gen_random() + ':' + gen_random() + ':' + gen_random())
如果还不够小,可以考虑/112分配,一般来说,不建议比/112还小.除非你是单点设备,比如我买的绿帽云就是/112分配,他给我分配了2403:ac80:cc:7::2a9:0/112,并且IP地址部分也随机生成为2403:ac80:cc:7::2a9:8e5d,然后我系统中再添加一个IP,也是可以被外部访问的,因为路由器只管把/112下,符合这个前缀的都会转发给我.(/64是通过看ifconfig中另一个网卡得知的.)
ip addr add 2403:ac80:cc:7::2a9:8e56/64 dev eth0
通过traceroute能看出来网关,这里不深入探讨.
最后,附上子网计算器(可用IP数计算器):https://www.vultr.com/resources/subnet-calculator-ipv6