为你的 IPv6 局域网配置 ULA 吧

2018-09-11 11:00:41 +08:00
 raysonx

近几个月来,三大运营商开始陆续在部分地区提供 IPv6 互联网的接入服务。在号称“每一粒砂子都可以获得一个地址”的 IPv6 时代,所有的设备都可以拥有公网地址,NAT 不再是刚需。那是不是我们不再需要内网地址了呢? 本文将探讨一下这个话题。

IPv4 下的私有网络

曾经的 IPv4 网络也是点对点对等互联的:几乎所有互联网上的设备都拥有公网 IPv4 地址,甚至早期的 FTP 协议都只支持两个点对点连接的设备互传文件:客户端发起连接到服务器传输指令;下载文件时需要监听端口,等待服务器端发起连接。

同时,IPv4 提供了三个私有网络(private network)地址段: 10.0.0.0/8172.16.0.0/12192.168.0.0/16,无需注册申请即可在私有网络中自由使用。 在 NAT 技术出现以前,这样的地址段通常只提供内网通信,不提供互联网访问服务。需要访问互联网时,往往需要依靠同时接入内外网的代理服务器。

后来 IPv4 地址不够用了,IPv6 就被提出出来了,同时顺便解决一下 IPv4 网络的缺陷。然而 IPv6 与 IPv4 完全不兼容,普及十分缓慢。为了缓解地址不够用的问题,NAT44 被大量运用,普通用户的公网 IPv4 地址被收回并高价卖给企业用户,越来越多的用户被安排进内网。再到后来,某些 ISP 甚至明目张胆把 不提供公网 IPv4 地址 写进合同了。

内网地址下的终端设备在互联网上丧失了点对点互联的能力,只能主动向拥有公网 IP 的设备发起连接,无法被动接受连接,P2P 使用受限,就像你拥有一部只能打出而不能呼入的电话。部分内网用户为了使自己的设备能够被远程连接,研究各种打洞、穿透与隧道技术,好不热闹。

IPv6 下的私有网络与 ULA

IPv6 拥有 128 位长的地址,号称“可以为每一粒砂子分配一个地址”,一劳永逸地解决了地址短缺问题。每个设备都可以拥有公网 IPv6 地址,点对点连接又回来了。其实想一想,我们只是重新获得了近十年里失去的东西罢了。

IPv6 时代,ISP 依然会为普通用户提供“动态” IPv6 地址:每次接入网络时,ISP 会重新分配一个 IPv6 地址前缀,这就使得用户侧所有终端的地址发生变化。如果你的终端设备之间有内部互联,这可能会造成服务中断。我们不希望自己运行的网络受制于 ISP !

解决方法自然是:给你的局域网分配一个 IPv6 的内网地址段吧。 当然我不是让你重新使用 NAT。当然 IPv6 依然支持 NAT,如果你愿意,可以为你的终端分配内网 IPv6 地址,然后在网关处部署 NAT66,你就又重新再次回到了 NAT 时代。不过通常而言,NAT66 是没有必要的,而且使用 NAT 技术还会造成非常明显的性能损失。

在 IPv6 网络下,可以为每一个网络接口分配多个 IPv6 地址。你可以为你局域网的设备同时分配公网和内网地址,使你的设备同时接入内外两张网。

IPv6 提供一段称为 Unique Local Address ( ULA )的地址段fc00::/7,包含fc00::/8fd00::/8两部分:目前fc00::/8的使用还没有定义,我们不去管它;fd00::/8可以被自由使用。fd00::/8是一个十分巨大的地址段,你可以从中挑选一个/48的子段分配给你的局域网。RFC 4193建议使用随机生成的方法,使每个局域网的地址段都不同(这也是 ULA 名字的由来),从而避免局域网合并时地址冲突的麻烦。当然这主要是针对企业而讲的,家庭使用的话随机生成还是挑个好记的自己斟酌。如果要随机生成,Google 一下ULA generator有真相。

有了 ULA,你的设备在内部互访时可以直接使用固定的 ULA,和外部互访时则使用公网地址。只要保证你的路由表正确就可以:默认路由使用公网地址作为出口,ULA 地址段使用 ULA 作为出口。如果出现问题,检查一下你的 Router Advertisement 和 DHCPv6 服务的设置吧。

23249 次点击
所在节点    宽带症候群
37 条回复
Maskeney
2018-09-11 21:32:25 +08:00
学习了 感谢楼主 另外楼主是做相关工作的么?看起来发了好多关于 IPV6 的帖子
txydhr
2018-09-12 07:02:31 +08:00
正常家用。。。每个设备不都是有固定的 fe80 开头的地址么?
raysonx
2018-09-12 10:01:39 +08:00
@Maskeney 和工作不相关,只是做一些微小的推广工作而已。

@txydhr 现状是大量的应用软件不支持 link-local 地址。

比如有的软件不支持 zone index 后缀,如 fe80::dead:beef%eth0,典型的例子如配置 Linux 的 DNS 时,/etc/resolv.conf 文件就不支持这种写法。还有的软件直接主动禁止在 link-local 地址下工作,比如 kubernetes。
coby3155
2018-09-12 16:59:51 +08:00
请问大神..家里电信 IPV6 原生地址..桥接连路由器就会无 INTERNET 访问权限..不知道有没有解决办法?
flynaj
2018-09-23 21:49:30 +08:00
@raysonx 你的手机问题,MIUI 全部支持者
Spxg
2018-12-14 18:33:05 +08:00
上个月有的 ipv6,坐标福建电信,因为电信宽带套餐升级,在原来的套餐上加了 100M,所以多给了我一个新的宽带账号,一拨就有 v6 了。现在我用 v6 在家里搭了几个网站,重要的是端口还没封,用的挺舒服。问了装宽带的师傅最近 v6 怎么样了,他说现在都在搞这个
Spxg
2018-12-14 18:33:27 +08:00
@Spxg 刚说完。。。端口就被封了。wc
xionger
2019-02-09 23:25:42 +08:00
@raysonx 小白请教
可以直接用 fd00::/8 吗? 为什么要在这里面再挑选一个 /48 的子段呢?
raysonx
2019-02-11 22:55:19 +08:00
@xionger 可以使用。挑 /48 的子段是为了可以给不同的局域网分配不重复的地址段。
junkman
2020-04-17 09:35:40 +08:00
@raysonx 2020 年,再次翻出来提问。

家用的话,IPv6 /48 子段应该有 2^80 个可用 IP,但是家用的话应该撑死 256 个地址就够用了吧?

似乎用 fd00::8 /120 子段就可以了呢?
junkman
2020-04-17 09:37:24 +08:00
diff:
- 似乎用 fd00::8 /120 子段就可以了呢?
+ 似乎用 fd00:: 前缀下的某个 /120 子段就可以了呢?
raysonx
2020-04-17 12:10:03 +08:00
@junkman 前缀如果大于 64,无状态地址配置将不可用,只能用 DHCPv6 。然而 Android 设备不支持 DHCPv6,更别说还有其他缺点
junkman
2020-04-17 20:03:56 +08:00
> 无状态地址配置将不可用

具体是?请问这方面看哪里的资料比较好。

> 更别说还有其他缺点

比如?

感谢大侠解答!
raysonx
2020-04-17 20:46:30 +08:00
@junkman 其他缺点还有如:上游路由器重新拨号发生前缀变更后,DHCPv6 下发的地址不会及时更新(除非地址租约到期)。我觉得如果要系统性地了解 IPv6 的话还是要读一下计算机网络相关的书籍。不过说实在的绝大多数人对 IPv4 也是一知半解,只不过网上能查到的资料相对多一些已。
LodonBoy10086
310 天前
用 ipv6 一年了,才搞懂一些设置。
```
在 ZXHN F653GV9 光猫中:网络》 LAN 侧地址配置 》 IPv6 配置》 IPv6 前缀管理》输入前缀 fc02:3333:9999:: 输入前缀长度 48~64 》确认》查看下方前缀栏回显:fc02:3333:9999:: ····· LAN (广域网链接)····· Static
```
LodonBoy10086
310 天前
只对内网提供的服务,应该只用 ULA 。
另外问下,光猫防火墙 Ipv6Spi 是什么原理。v4 那边启用的话会变成 NAT3 。v6 这边呢 也会变成 NAT 么。
raysonx
310 天前
@LodonBoy10086 大概是防火墙。光猫因为型号太多,实现上也是个黑盒,具体设置方式完全无法回答。我只能回答 OpenWRT ,RouterOS 、VyOS 、纯 Linux 软路由这些的设置。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/488116

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX