本文是《IPv6系列》文章的第二篇《常见困扰》,紧接《入门指南》,用于解答IPv6的10个常见困扰。

小慢哥的原创文章,欢迎转载


目录

▪ 本文缘由 ▪ 困扰1. IPv4和IPv6只有地址格式不同吗 ▪ 困扰2. IPv4到IPv6对应用程序是透明无感知的吗 ▪ 困扰3. 提供WEB服务,需要每台服务器都配置IPv6地址吗 ▪ 困扰4. IPv4和IPv6要配在同一张网卡上吗 ▪ 困扰5. 我的网卡有fe80开头的地址,可以用来上公网吗 ▪ 困扰6. IPv6地址如何配置 ▪ 困扰7. 没有了ARP,如何解析MAC地址 ▪ 困扰8. IPv6使用多播替代广播,需要做哪些改造 ▪ 困扰9. IPv6真的安全吗 ▪ 困扰10. 如何学习IPv6 ▪ 后续说明


本文缘由

在笔者的上一篇文章《IPv6系列-入门指南》里,简要阐述了以下内容:

▷ 掌握IPv6的必要性 ▷ IPv6的3个常见顾虑 ▷ IPv6基础知识 ▷ 常用测试方法

而在进一步的实践学习中,会遇到很多的困扰。笔者结合自己以及身边的同行兄弟们遇到的困扰,精心挑选出10个困扰在本文中进行解答。

如果没有阅读过《IPv6系列-入门指南》,敬请劳神垂阅,以便知识的连贯。


困扰1. IPv4和IPv6只有地址格式不同吗

除了地址格式不同,IPv4与IPv6协议栈也不同,他们在逻辑上是完全不同的2个世界

以下实践中经常会遇到的4个不同之处:

基本通讯过程:ND替代ARP、多播替代广播、fe80地址成为标配、ICMP成为通讯核心 ▷ IP配置方式:客户端以无状态自动配置IP成为主流,弱化DHCP ▷ DNS域名解析:AAAA记录替代IPv4的A记录、对应用存在优先级问题(优先解析AAAA还是A) ▷ 应用层适应性:socket编程中AFINET仅支持IPv4,AFINET6仅支持IPv6


困扰2. IPv4到IPv6对应用程序是透明无感知的吗

错,是有感知的,上层应用程序需要进行改造。

举个例子,当访问fzxiaomange.com时候,是要优先解析IPv6地址(AAAA)还是IPv4地址(A),因为总得选一条线路来发送请求。现在许多框架会优先选择IPv6。

注意:如果解析出AAAA记录,即使本机没有可路由IPv6地址,也有可能依然尝试通过IPv6进行请求,导致请求失败

还有一个典型的例子,是程序会在应用层里交互底层IP地址,比如FTP主动模式会在应用层里交互IPv4地址,而如果实际可用的是IPv6地址,就可能导致后续连接的异常。

无法做到透明无感知,是导致产生IPv4到IPv6的部分过渡方案的原因之一。


困扰3. 提供WEB服务,需要每台服务器都配置IPv6地址吗

现在有一种言论,说“IPv6地址无限多,每台服务器都可以配一个IP地址,不用做NAT”。

这很容易误导人,具体如何使用IPv6,还得根据场景而定。比如笔者的个人博客fzxiaomange.com,由nginx->php->mysql组成,分别位于3台服务器上,那只需要在nginx上配置IPv6地址,并在DNS上添加一条AAAA记录指向L7的IPv6地址即可。完全没必要在php、mysql服务器上配置IPv6地址,而且一旦配置了,就直接暴露内网了。

每个设备都配置IPv6,主要适用于偏客户端以及地址需求量大的场景,诸如物联网设备、手机4G、家庭宽带等。

另外,IPv6有NAT,适用于办公PC、机房服务器等需要访问IPv6网络,而不想被别人主动访问的场景。


困扰4. IPv4和IPv6要配在同一张网卡上吗

都可以,首先需要先了解2个词“单栈”“双栈”

以节点为角度(通用的解释):

▷ 单栈:表示一个IPv6节点,也就是一台服务器,或一部手机,仅有IPv6地址,或仅有IPv4地址,前者叫做“IPv6单栈”“IPv6-Only”,后者叫“IPv4单栈”“IPv4-Only”。 ▷ 双栈:表示一个IPv6节点,同时拥有IPv6地址和IPv4地址

以网卡为角度

▷ 单栈:表示一张网卡仅有IPv6地址,或仅有IPv4地址,示意图如下

▷ 双栈:表示一张网卡同时拥有IPv6地址和IPv4地址

IPv4和IPv6在逻辑上是两个完全不相交的世界。如果终端处位于同一个物理层,比如同一个VLAN,那么网卡就只能同时配置IPv6地址和IPv4地址;反之,就必须一张网卡配置IPv6,另一张网卡配置IPv4。所以,关键看网络架构是如何设计,各有利弊。比如放同一张网卡上,就可以做到带宽共享,而放不同网卡,可以做到带宽分别限制与计费。


困扰5. 我的网卡有fe80开头的地址,可以用来上公网吗

当网卡启动的时候,会自动生成“链路本地地址”(Link-Local Address),这是一个fe80::/10的单播地址。“链路本地地址”用于IP自动配置邻居发现等。

注意事项

▷ 核心:每张网卡都会存在“链路本地地址”,这是IPv6协议通讯的核心,不应当删掉 ▷ 范围:仅在同一个二层范围内进行传播,不会被路由器做转发 ▷ 地址:“链路本地地址”的算法不统一,有的操作系统会根据mac地址计算而来(EUI-64),而有的则是随机或其他某种算法计算而来 ▷ 服务:“链路本地地址”虽然可以在二层内互通,但主要用于核心通讯以及某些网络高级协议。不适用于上层应用业务之间的通讯。因此不能用来上公网,也不能用于对外提供服务


困扰6. IPv6地址如何配置

公网地址和私网地址

▷ 公网地址:“全球单播地址”(Global Unicast Address,2000::/3) ▷ 私网地址:“唯一本地地址”(Unique-Local Address,fc00::/7)

细心的人可能会发现,为什么这里叫做“全球单播地址”,而“唯一本地地址”却不叫做“唯一本地单播地址”,好吧,其实都是简称,在RFC里是这么定义的:“Global Unicast Addresses”、“Link-Local IPv6 Unicast Addresses”。其实“全球单播地址”是可以叫做“全球地址”的,只是这样显得有点别扭。

自动生成还是固定IP

在IPv6里,任何单播地址都可以自动生成,也可以手工配置固定IP,具体看应用场景:

▷ 客户端:如果我想访问ipv6互联网,而不对外提供服务,那么使用自动生成即可,无需使用固定的ip地址 ▷ 服务端:如果需要对外提供服务,那么ip地址就需要固定了,不能使用自动生成

自动配置IP

在ipv6里还分为2种方法:“有状态”与“无状态”

▷ 有状态(Stateful):地址由DHCPv6 Server统一管理,DHCPv6 Client从中获得一个可用的IP地址 ▷ 无状态(Stateless,简称SLAAC):路由器发出“路由通告”报文(Router Advertisement,简称RA),报文内包含了IPv6地址的前缀信息。当收到RA包后,就会根据其中前缀信息,自动生成一个或多个IP地址


困扰7. 没有了ARP,如何解析MAC地址

ARP协议是IPv4用于解析目标MAC地址的协议,而在IPv6里,解析地址采用的是邻居发现(Neighbor Discovery Protocol,简称NDP或ND)

ND不是一个具体协议,而是用来描述多个相关功能的协议的抽象集合,所涵盖的所有协议均是基于ICMPv6。其中有2种报文与解析MAC地址有关:

邻居请求报文NS(Neighbor Solicitation):请求解析 ▷ 邻居通告报文NA(Neighbor Advertisement):响应解析

这与ping是非常类似的:

▷ ping:发送icmp的echo request报文,对端响应icmp的echo reply报文 ▷ 地址解析:发送icmp的ns报文,对端响应icmp的na报文


困扰8. IPv6使用多播替代广播,需要做哪些改造

IPv6使用多播替代了广播,多播的特点是不会像广播那样完全泛洪,而是数据包只发送给加入了多播组的机器。

但是,这有个前提,就是交换机要能识别并维护多播组的信息,主流交换机都具备此功能,然而并不都是默认开启的。对于二层交换机来说,需要开启MLDv2 Snooping

顾名思义,就是交换机会识别“MLDv2成员报告”报文从哪个端口发来的,并记录下来,之后当交换机收到多播包后,会先查找其多播地址是否能在缓存里匹配上

▷ 匹配成功:仅会将数据包从相应的端口发出 ▷ 匹配失败:就会泛洪,此时和广播毫无差异


困扰9. IPv6真的安全吗

理想很美好,IPv6从设计之初,就进行了大量的安全方面的设计,“完整的”IPv6在安全方面有至少以下3个优势:

▷ 原生支持的端到端加密 ▷ 安全的邻居发现(Secure Neighbor Discovery,简称SEND) ▷ 更大的地址空间

现实很残酷,只有第3点发挥了作用,更大的地址空间,减少了被非法扫描到的概率。而第1、2点并没真正普及起来,因为协议本身就很复杂、学习难度很大、实现起来也很不容易。因此IETF为了加速IPv6的普及,对安全性不再强制要求。这也导致了IPv6实际上并没有预期中的那么安全,在IPv4里存在的地址欺骗、虚假网关等情况,在IPv6里依然存在。


困扰10. 如何学习IPv6

网上能找到非常多的IPv6教程,其中有很多教程都是通篇讲IPv6地址、IP包格式、ICMP包格式,这很容易让初学者打退堂鼓。笔者虽然不是专业的网工,但愿能抛砖引玉,推荐的学习步骤如下:

1️⃣ IPv6的历史、设计理念 2️⃣ IPv6的地址格式、分类、前缀计算,以及与IPv4的对比 3️⃣ IP地址、网关路由的配置与查看 4️⃣ 服务端实践,尝试给自己的网站增加IPv6 5️⃣ 客户端实践,让自己的PC访问IPv6互联网 6️⃣ 应用层实践,自己写一对C/S程序,能同时支持IPv4与IPv6 7️⃣ IPv6通讯原理,抓包分析每个包,熟悉ND、DHCPv6等 8️⃣ IPv4与IPv6的互访、过渡 9️⃣ IPv6安全

如何连接ipv6服务器_IPv6系列初学者的10个常见困扰相关推荐

  1. 如何连接ipv6服务器_IPv6系列-初学者的10个常见困扰

    本文是<IPv6系列>文章的第二篇<常见困扰>,紧接<入门指南>,用于解答IPv6的10个常见困扰. 小慢哥的原创文章,欢迎转载 目录 ▪ 本文缘由 ▪ 困扰1. ...

  2. 如何连接ipv6服务器_IPv6系列-常见困扰

    本文是<IPv6系列>文章的第二篇<常见困扰>,紧接<入门指南>,用于解答IPv6的10个常见困扰. 小慢哥的原创文章,欢迎转载 目录 ▪ 本文缘由 ▪ 困扰1. ...

  3. 如何连接ipv6服务器_Linux操作系统配置IPv6方法

    登录系统 具体操作打开SecureCRT软件,点击快速连接输入服务器IPv6地址.端口号.用户名,再次点击连接,输入密码,确认登录服务器. 确认系统是否支持IPv6 默认支持 下图红色部分表示系统支持 ...

  4. 如何连接ipv6服务器_ipv4网络环境下测试ipv6网站 ipv6proxy.cn

    本文讲述如何在IPv4环境下测试IPv6网站内容 测试一个网站是否支持ipv6访问,有很多在线测试网址,比如下面几个,在网站页面输入框中输入你想要查询的域名即可. http://ipv6-test.c ...

  5. 连接ipv6服务器未响应,IPv6过渡技术未响应

    IPv6过渡技术未响应 内容精选 换一换 CVE-2020-13401漏洞源于IPv6动态分配除提供了IPv6的DHCP技术外,还支持Router Advertisement技术.路由器会定期向节点通 ...

  6. 【安信可NB-IoT模组EC系列AT指令应用笔记①】连接TCP服务器,实现远程收发数据

    目录 一.前期准备 1.硬件准备 2.TCP服务器 二.连接网络 1.查看SIM卡是否正常 2.附着网络 3.注册APNID 4.激活网络 5.测试网络连接情况 三.连接TCP服务器 1.创建sock ...

  7. ipv4和ipv6显示服务器无响应,将IPv4客户端连接到IPv6服务器:连接被拒绝

    我正在试验IPv6套接字,尤其是在Windows Vista和更高版本上提供的"双栈"功能,显然在Unix上默认情况下.我发现当我将服务器绑定到特定的IP地址或本地计算机的主机名解 ...

  8. [ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器

    原文:[ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器 上一章 [ 搭建Redis本地服务器实践系列二 ] :图解CentOS7配置Redis  介绍了Red ...

  9. netty系列之:搭建客户端使用http1.1的方式连接http2服务器

    文章目录 简介 使用http1.1的方式处理http2 处理TLS连接 处理h2c消息 发送消息 总结 简介 对于http2协议来说,它的底层跟http1.1是完全不同的,但是为了兼容http1.1协 ...

最新文章

  1. 负载均衡(Load Balancing)学习笔记(二)
  2. 利用 Swoole 给应用写个防火墙
  3. 基于京东手机销售数据用回归决策树预测价格
  4. cherry-pick的用法
  5. 八年磨一剑,阿里云ApsaraDB for HBase2.0正式上线
  6. python 验证码识别 阿里云_python3调用阿里云图像识别OCR-实现验证码识别
  7. 关于性能优化的一些实践
  8. 大数据:技术与应用实践指南
  9. SpringBoot轻量级博客/论坛(包含 SpringBoot、SSM、Dubbo多个版本实现代码) 初云博客
  10. Linux上tomcat运行内存溢出,linux中tomcat内存溢出解决办法
  11. 计算机电路电子技术试题答案,数字电子技术基础试题及答案
  12. leetcode69 x的平方根
  13. 人工智能畅想——《人工智能简史》读后感
  14. 持续降库纯碱增仓大涨,沪铝认购小涨,螺纹10-01季节性正套2022.5.19
  15. weblogic 启动很慢_【转】解决weblogic启动慢和创建域慢的方法
  16. matlab将水印图像嵌入图像,改进的图像自嵌入水印算法及其MATLAB实现
  17. 马帅:我的同事王开源-真正开源斗士
  18. 如何优雅地使用Sublime Text3中大量的插件
  19. DataStream API
  20. Arduino/stm32 智能小车设计(一)

热门文章

  1. 【目标检测】基于yolov7的安全帽佩戴检测和识别(附代码和数据集,Ubuntu系统)
  2. 江苏专转本考试倒计时,该如何自救?
  3. ad域文件服务器迁移到samba,将AD域漫游用户配置文件放在samba服务器中
  4. wxpy 机器人报错解决方案
  5. java毕业设计旅游网站mybatis+源码+调试部署+系统+数据库+lw
  6. 【面试】如何提高产品质量?(测试/开发/产品多维度入手)
  7. 离线语音控制新方案,NRK3303语音识别芯片在智能风扇的应用
  8. Java 多线程和并发编程:(二)线程同步 Lock 锁
  9. 计算机技工高级职称,高级工程师与高级技师职称有什么区别?快来了解一下吧...
  10. IPVS分布式mysql_IPVS负载均衡