虽然你国说正在普及 ipv6, 但是我认为距离普及完成还有几年 (或许需要等到 ipv8 出现的时候 ww), 那么问题来了,在完全不借助你的 ISP 的情况下广播你 IPv6 是可能的咩,答案是可能的.

你国现状

通过某论坛的坛友们讨论得知你国现状

  • 只有部分地区有 ipv6
  • 分配的 ipv6 无法使用
  • ipv6 不是固定的
  • 无法修改 rdns
  • 得到的 ipv6 为 / 64 以上,导致无法再为下级路由分配
  • 访问任何 ipv6 站点需要先环球旅行 2 圈左右

其它的几个实现方法

咨询你的 ISP, 询问他们是否可以广播你的 ipv6

根据你国国情来看这个方法并不适合.

使用 tunnelbroker 给我们提供的普通隧道 (Regular Tunnel)

这个方法目前被大多数人使用,但是他有以下缺点

  • 获得的 ipv6 来自美国并且标注为数据中心使用.
  • 无法使用一些对地理位置审查严格的服务,比如 netflix
  • 经常会因为无效的地理位置触发如 google 的访问验证

使用服务器创建自己的 6in4 服务器

很多 vps / 独立服务器运营商会为我们提供 / 64 甚至 / 48 的 ipv6, 我们可以创建一个像 tunnelbroker 那样的 6in4 服务器
这个方法我很久之前就想实现,但是由于水平的原因我从未成功过,而且它的缺点和上面的一样.

和 ISP 协商并从他们那里购买专线

这是一个很好的解决办法,只要你愿意接受每月支付接近 5 位数的账单的话,我建议你使用这种方法.

选择的解决方法

在经过摸索上述方法时,我找到了第四种方法,我注意到 tunnelbroker 里存在一个 BGP 隧道 (BGP Tunnel), 打开这个页面时发现需要填写 ASN,IP 和自己的 ip block

一开始我并不知道这是做什么的,经过之前尝试广播 ip 之后我渐渐的明白了它的用处,于是我尝试使用了它.

必备条件

在使用 BGP 隧道时你需要满足以下条件

  • ISP 为你分配一个公网 IPv4, 它可以是动态的
  • 你拥有 ASN 和一个至少为 / 48 的 ipv6 block

如果你的 ISP 没有为你分配 ipv4, 你可以尝试向客服索要,你可说你正在使用的摄像头是很旧的型号,要想远程访问必须要使用公网 ip 来远程访问它,如果这时候你仍然无法得到 ipv4 你也可以尝试寻找 ISP 在当地的维护人员,请他们吃饭尝试从他们那里得到公网 ipv4, 如果这个时候他们仍然不能为你分配公网 ipv4, 你可以尝试让他们为你创建 41 的端口映射,如果无法做到这两种方法其中的一种,你将无法继续.

ASN 和 IPv6 可以在很多渠道获得,比如 hostus 和 ipv6.im

实施步骤

首先我们到 tunnelbroker 创建一个 BGP 隧道,选择离你最近的 pop 节点,填写你的 asn 和 ISP 分配给你的 ip 还有你需要使用 (广播) 的 IP block

然后你将收到来自 [email protected] 的邮件,邮件中会让你提交 loa (关于 loa 请查看前面的文章) 以便验证,提交之后大约在 24 小时内就会审核通过,这时你就可以正常使用你的隧道了.

然后我们需要像创建普通隧道那样创建一个 6to4 隧道

  • auto he-ipv6
  • iface he-ipv6 inet6 v4tunnel
  • address 2001:470:233:233::2
  • netmask 64
  • endpoint 8.8.4.4
  • local 8.8.8.8
  • ttl 255
  • gateway 2001:470:233:233::1

当建立了普通隧道之后,剩余的操作就和普通的 ip 广播设置一样了,具体操作请看前两篇文章,这里只贴出 bird6 的不同点

  • protocol bgp vultr
  • {
  • local as 209233;
  • source address 2001:470:233:233::2;
  • import none;
  • export all;
  • graceful restart on;
  • multihop 2;
  • neighbor 2001:470:233:233::1 as 6939;
  • }

不同点的解释

  • 209233 请替换成你的 asn 号码
  • 2001:470:233:233::2 是 bgp 隧道为你分配的 client ip
  • 2001:470:233:233::1 是 bgp 隧道为你分配的 server ip,6939 为 he 的 asn 号码

另外 bird 内不需要 password 字段,如果填写了这个字段将无法正常广播

然后我们来验证是否已经建立连接

  • root@website:~# birdc6 show proto all he
  • BIRD 1.6.3 ready.
  • name proto table state since info
  • he BGP master up 09:29:01 Established
  • Preference: 100
  • Input filter: REJECT
  • Output filter: ACCEPT
  • Routes: 0 imported, 2 exported, 0 preferred
  • Route change stats: received rejected filtered ignored accepted
  • Import updates: 60702 0 60702 0 0
  • Import withdraws: 274 0 — 60976 0
  • Export updates: 3 0 0 — 3
  • Export withdraws: 1 — — — 1
  • BGP state: Established
  • Neighbor address: 2001:470:233:233::1
  • Neighbor AS: 6939
  • Neighbor ID: 8.8.4.4
  • Neighbor caps: refresh AS4
  • Session: external multihop AS4
  • Source address: 2001:470:233:233::2
  • Hold timer: 146/180
  • Keepalive timer: 2/60

当 BGP state: 的值为 Established 时则表示可以正常进行广播了,广播方法请参考前面 2 篇文章