请教: ipv6 是不是也有公网、内网地址之分?

336 天前
 jingrs489

一直没弄明白,一个设备是不是 ipv6 地址只能有一个?还是可以有一个公网 ip ,一个内网 ip ? 有没有什么文章能简单介绍 ipv6 相关入门知识?多谢

3998 次点击
所在节点    宽带症候群
15 条回复
codej
336 天前
ipv4 是中文牌子,
ipv6 是英文牌子,
中文必须用中文,英文必须用英文,挂域名也不行
zerotier 这种平台可以。
内网外网概念不变
Remember
336 天前
分的,但 ipv6 的内网地址一般不怎么用。一个设备可以不止一个 ipv6 地址,甚至有可能直接是一个/64 地址段。

不但可以同时绑定 ipv6 公网 ip 和 ipv6 内网 ip ,还可以同时绑定多个 ipv6 公网+多个 ipv6 内网。

以 windows 为例,如果你路由器是 openwrt ,开了 IPv6 ULA , 会默认分配一个 ipv6 的内网地址,一个相对固定的 ipv6 公网地址,另外还有若干个临时的 ipv6 公网地址。
msg7086
336 天前
IPv6 和 IPv4 一样,一台设备可以绑很多个,地址也分公网地址和内网地址。
维基百科搜索 IPv6 看「 IPv6 地址的分类」和「特殊地址」。
keegan
336 天前
IPV6 内网访问实测还需要加上网卡,比如我要访问我的 nas ,网卡是 en0 ,就需要输入`fe80::eed6:8aff:feae:****%en0`
Actrace
336 天前
maybeonly
336 天前
@keegan fe80::开头的 ipv6 地址不是通常说的“内网地址”,而是“本地链路地址”,对应 ipv4 的 169.254/16
地位等同于 ipv4 的 192.168/16 (以及其他两段)的地址的 ipv6 是 fc00::/7 ,但是在分配的时候有一些额外的“要求”(并且实践的时候时不时被无视)
区别是,fe80::的地址不能被路由转发(尽管可以做为下一跳地址)
临时地址也不一定是内网地址

关于 ipv6 特殊地址 ref:
https://www.iana.org/assignments/iana-ipv6-special-registry/iana-ipv6-special-registry.xhtml
https://zh.wikipedia.org/wiki/IPv6#%E7%89%B9%E6%AE%8A%E4%BD%8D%E5%9D%80
beyondstars
335 天前
请参阅:

- RFC4291 https://datatracker.ietf.org/doc/html/rfc4291 ( IP Version 6 Addressing Architecture)
- RFC 4193 https://datatracker.ietf.org/doc/html/rfc4193 (Unique Local IPv6 Unicast Addresses)
- RFC3587 https://datatracker.ietf.org/doc/html/rfc3587 (IPv6 Global Unicast Address Format)
- IPv6 组播地址 https://www.iana.org/assignments/ipv6-multicast-addresses/ipv6-multicast-addresses.xhtml

大体上来说,IPv6 地址分为单播地址、组播地址、任播地址,其中任播地址也是从单播地址空间里面分配的,单播地址细分为回环地址 (loopback), 全局单播地址 (global unicast) ( 2000::/3 前缀),IPv4 映射的 IPv6 地址(::ffff:<32bit ipv4 addr>), Link Local address (大部分是 fe80::/64 前缀),Unique Local Address (ULA) 一般用作本地、内网或者私有网络通信,ULA 一般是 fd00::/8 前缀。

一个“设备”(不管它是物理的 NIC 、 或者虚拟网卡也好)可以有多个 IPv6 地址。
beyondstars
335 天前
事实上一个“设备”可以有多少个 IPv4/IPv6 地址几乎完全取决于软件(操作系统),跟硬件关系不大,操作系统是怎么把 IP 地址实现/分配到“设备”上的?在操作系统看来,每个链路层网络设备一般都有一个链路层地址(对于以太网设备来说是 MAC 地址),当操作系统收到当前来自设备所处的(一个或多个)以太网段( Ethernet segment) 的 ARP 或者 NDP 查询时,它就回复,比如一个 ARP 查询是 "Who is 192.168.0.1, tell 192.168.0.101", 然后操作系统会回复 "192.168.0.101 is 82:bf:23:61:a2:95",这样 192.168.0.101 这个地址就和 82:bf:23:61:a2:95 这个网卡关联了。
joshu
335 天前
ipv4 10/8 、172.16/12 、192.168/16 -> ipv6 fc00::/7 ,就是通常说的,内网可安全使用、外网不可使用的地址段
ipv4 169.254/16 -> fe80::/10 ,只在网卡接口两端有效的地址,使用时一般需要指明网卡名称,在同机器不同网卡之间可同时使用同一地址
beyondstars
335 天前
如果层主对 IPv6 地址的实现方面感兴趣,还可以趁热打铁进一步了解下:

- NDP https://datatracker.ietf.org/doc/html/rfc4861
- DHCPv6 https://datatracker.ietf.org/doc/html/rfc8415
- SLAAC https://datatracker.ietf.org/doc/html/rfc4862
- IPv6 Prefix Delegation https://www.rfc-editor.org/rfc/rfc3633

等资讯。
beyondstars
335 天前
题外话:IPv6 的其中一个愿景就是设计一个足够大、足够充裕的地址空间,使得设备与设备之间都可以点对点地直接互联(因为在这个充裕的地址空间里面大家都能分配到 IP 地址),所以普遍来说 ULA (私有地址)相对而言比较少见,大多数设备要么就是只有 fe 开头的 link local 地址,要么就是再加上多个 2 开头的 global unicast 地址(公网地址)。

因为 2000::/3 global unicast 地址是全球唯一的,所以理论上你的电脑可以用这个地址跟全球 IPv6 互联网的任何一台计算机双向通信(不管是谁主动发起连接,只需知道对方的 IPv6 地址),所以路由器/局域网网关设备出于安全起见一般都默认启动 IPv6 stateful firewall (只准局域网内的设备主动向外发起连接,不准广域网设备主动与局域网内的设备发起连接),这时地址虽然是公网地址,但从实际效果上看“相当于”内网地址。好处是阻挡了弱密码探测、爆破登录等安全风险,不过也不是绝对的安全。
cnbatch
335 天前
如果你家开通了两家或三家运营商的宽带,都启用 IPv6 ,同时路由器支持双 WAN 接入,那么网内各设备就都可以拥有大量公网 IP ,V 站自己就有现成的: /t/998873
jingrs489
335 天前
@codej
@Remember
@keegan
@Actrace
@maybeonly
@beyondstars
@joshu
多谢各位指教!
chenda3d
335 天前
我的理解是猫之下的设备都能分到一个 ipv6 ,windows 系统自己会开内网 ipv6 fe80::这种,内网的设备还会产生一个临时的 ipv6 公网地址,也是 windows 系统产生,这个可以通过 cmd 关闭,这样的话你的设备就会用,猫下发的 ipv6 公网提供外网服务了。需要猫的 ipv6 防火墙做配置,一般运营商关闭了猫进来的 80 ,21 这些端口,提供服务需要开放其他端口
keegan
335 天前
@maybeonly 感谢科普!

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

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

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

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

© 2021 V2EX