那个啥,不喜欢看一些背景 分析啥的 直接看红字修改就行了。 其他的都是冗余部分,都是码出来的,其他的地方好像搜不到。经验之谈。避免大家采坑。

在国家网信办推行IPv6的大前提下,进行IPv6改造工作,有在服务器上配置IPv4 和 IPv6双栈的需求。但是调研发现配置IPv6后会出现以下几个隐患:

双栈网络下 IPv6优先级更高:域名解析的AAAA记录优先级  以及网络出口的优先级

首先说域名解析AAAA优先导致的问题:

由于双栈情况下AAAA记录优先,域名解析会向localdns发起 AAAA 和A记录查询,刚才说到有AAAA记录优先

这就埋下了隐患,也就是说域名解析的过程会等待AAAA记录的返回(无论是否有解析记录),如果无AAAA解析记录会影响什么?

理论上有A记录 也就是IPv4兜底,肯定有解析,但是 dns的解析过程中,如果localdns无结果,会向上级域递归,直至根域查询无果。

这个过程会浪费掉一定的时间。这个时间也会算到dns解析过程中,故在双栈的情况下 一些域名的解析可能会缓慢,进而影响到服务。

然后是 网络出口IPv6优先导致的问题:

网络架构的变更,一般的服务器都不配置公网IP,都是通过nat/snat出公网的,在进行改造后 直接通过IPv6出公网,不经过nat。对网络架构是一种改造。

可能导致的问题:被调用端获取到的IP已经变化,相关IP段的授权需要修改。

另外,通过IPv6访问,可能出现质量不稳定:大网环境不稳定 IPv6正常测试推进过程中,整体网络环境 不如现在的稳定。还有 被调用方支持较弱,也就是覆盖节点不全面 或者是灰度部分不重要的地域,服务质量没办法保证。

综上,在当前情况下 服务器上及时开启双栈支持IPv6也是面临一定的问题。环境下又必须推进这件事情,那就使用折中方案。配置双栈 但是 IPv4优先。

配置很简单:

修改

/etc/gai.conf

precedence  ::ffff:0:0/96  100

关于为啥修改这个能生效 往下看,其他的blog好像没有解释的,撸了很多协议发现大概是这样的,欢迎补充。

1 调研gai.conf的理论依据:

gai.conf - getaddrinfo(3) configuration file  系统调用getaddrinfo(3) 可能得到多个地址,系统根据RFC3484选取最优地址。

RFC允许管理员修改/etc/gai.conf 实现动态更改地址排序规则。

RFC  网络协议的圣经

10.3. Configuring Preference for IPv6 or IPv4

默认情况下IPv6优先级高于IPv4,应用程序优先使用IPv6地址。可以通过赋予 ::ffff:0:0/96 更高的优先级实现IPv4优先级高于IPv6。

注: ::ffff:0:0/96 IPv4/IPv6转换地址 (IPv4-mapped IPv6 address)

/etc/gai.conf  默认是缺省的,无配置。

默认的配置为:label  ::1/128       0

label  ::/0          1

label  2002::/16     2

label ::/96          3

label ::ffff:0:0/96  4

precedence  ::1/128       50

precedence  ::/0          40

precedence  2002::/16     30

precedence ::/96          20

precedence ::ffff:0:0/96  10precedence 的IP段说明:

Prefix              Precedence        Label

::1/128             50                       0

::/0                   40                       1

2002::/16         30                       2

::/96                 20                       3

::ffff:0:0/96       10                       4

0:0:0:0:0:0:0:1/128 50 0 单播地址 环回地址 等同于IPV4的127.0.0.1

0:0:0:0:0:0:0:0/0 40 1 缺省路由 等同于IPV4 0.0.0.0

2002:0:0:0:0:0:0:0/16 30 2 可聚合全球地址

0:0:0:0:0:0:0:0/96 20 3 ipv4兼容地址

0:0:0:0:0:ffff:0:0/96 10 4 IPv4映射地址(这个地址网络上信息较少,地址范围::: ffff:0.0.0.0~:: ffff:255.255.255.255 地址数量2 128−96 = 2 32 = 4 294 967 296,用于软件,目的是IPv4映射的地址。 )

来源于维基百科,国内的那货死活搜不出来。PrefixPrecedenceLabelUsage

::1/128500Localhost

::/0401Default unicast

354IPv4-mapped IPv6 address

2002::/163026to4

2001::/3255Teredo tunneling

fc00::/7313Unique local address

::/9613IPv4-compatible addresses (deprecated)

fec0::/10111Site-local address (deprecated)

3ffe::/161126bone (returned)

2 配置验证:

选取服务器进行测试,并配置IPv6地址:

并设置/etc/gai.conf:precedence ::ffff:0:0/96 100

服务器具备双栈

服务器的双栈能够出公网

默认配置下 系统有优先使用ipv6(这里使用wget测试,curl dig ping等其他的测试都有IP版本之分,只要指定版本就不算系统优选了):

修改优先级:

多次测试 能够稳定路由。

3 测试结果:

在修改优先级 ::ffff:0:0/96 >= 40 时 服务器优先使用IPv4地址。可按照文档设定为100。

测试的连接:

wget -SO /dev/null weixin.qq.com

结论:

测试结果显示 修改该优先级能够达到服务器在双栈的情况下,优先使用IPv4。

该配置 可能会导致后续 使用IPv6失败的情况,需要在以后的改造过程中注意。

修改/etc/gai.conf ipv4的优先级的方式 是否正确 是否会引起其他的问题。 协议里面的内容比较多,包括很多目的地址选址方面的问题。需要关注下。

另外,根据RFC协议中的内容,我这进行了测试,如果有AAAA记录 但是IPv6地址不通,仍使用IPv4地址,与存活探路有关。不过程序处理需要消耗时间,得不偿失。建议直接规避吧。

标签:linux,ffff,双栈,ipv6,地址,IPv4,ipv4,IPv6,96

来源: https://blog.51cto.com/welcomeweb/2464836

linux双网卡 ipv4 ipv6 双栈,linux ipv4 ipv6双栈 (优先ipv4而不使用ipv6配置)相关推荐

  1. linux双网卡绑定同一IP步骤,linux系统双网卡绑定单个IP地址

    双网卡绑定单个IP地址为了提供网络的高可用性,我们可能需要将多块网卡绑定成一块虚拟网卡对外提供服务,这样即使其中的一块物理网卡出现故障,也不会导致连接中断.多网卡绑. 为了提供网络的高可用性,我们可能 ...

  2. linux虚拟网卡名不是eth0,linux不能启动虚拟网卡eth0

    最近,在做linux虚拟机上做实验时,发现不能启动linux的网卡, 当我用ifconfig命令时,只有如下的信息出现: lo        Link encap:Local Loopback ine ...

  3. linux重启网卡命令_如何在 Linux 中更改 MAC 地址 | Linux 中国

    在向你展示如何在 Linux 中更改 Mac 地址之前,让我们首先讨论为什么要更改它.-- Dimitrios Savvopoulos 在向你展示如何在 Linux 中更改 MAC 地址之前,让我们首 ...

  4. 双网卡同网段静态路由_WINDOWS系统下双网卡设置路由 本文主要涉及到静态路由...

    WINDOWS系统下双网卡设置路由 本文主要涉及到静态路由. 二.WINDOWS系统下设置路由 在WINDOWS下手动设置路由主要在DOS系统中命令符下(在运行输入 栏中键入COMMAND或者CMD即 ...

  5. linux获取网卡的ip,Windows和Linux系统下获取多网卡的ip地址

    在Windows或者Linux操作系统中,获取多网卡信息,可通过执行命令方式获取,具体如下: public Vector getServerIps() { Vector address = new V ...

  6. linux查看网卡的驱动命令行,Linux下查看网卡驱动和版本信息

    Linux下查看网卡驱动和版本信息 查看网卡生产厂商和信号 查看基本信息:lspci 查看详细信息:lspci -vvv # 3个小写的v 查看网卡信息:lspci | grep Ethernet 查 ...

  7. linux给网卡添加一个ip地址,linux网络配置中如何给一块网卡添加多个IP地址

    汤向峰每日一题-2017年3月16日: linux网络配置中如何给一块网卡添加多个IP地址 linux系统给网卡配置VIP的方法常见有两种:别名IP.以及辅助IP ================== ...

  8. linux 删除网卡 怎么找回来,删除linux系统中的多余的网卡

    由于本次Xen Server更换硬件进行重装,Xen Server上的VM(linux)备份还原后多出了eth0.bak和eth1.bak,想办法删除呗,使用的方法如下,大家可以参考参考! 一.删除V ...

  9. linux查看网卡驱动的命令,在Linux下确定网卡所使用驱动程序的方法

    有些时候你可能想知道某个Linux系统的网卡正在使用什么驱动程序,下面简单介绍下如何解决这个问题.一起去看看吧! 1.无论是集成网卡还是独立的网卡,都必须通过某种方式连接到PCI总线上,这样的话,必定 ...

  10. linux bochs 网卡,Bochs 在Windows和Linux下配置对比

    Bochs是一个x86硬件平台的开源模拟器.它可以模拟各种硬件的配置.Bochs模拟的是整个PC平台,包括I/O设备.内存和BIOS.更为有趣的是,甚至可以不使用PC硬件来运行Bochs.事实上,它可 ...

最新文章

  1. 企业绩效管理推不动,如何用绩效创造价值?
  2. 爬虫为什么用Chrome?
  3. ZABBIX 企业级分布式监控系统 1 监控系统简介
  4. JavaScript数据结构与算法——队列详解(下)
  5. 三菱a系列motion软体_三菱M70A/64SM重要功能比较
  6. WebAPI 和 WebService的区别
  7. mysql 健康检查_MySQL服务健康检查脚本
  8. 对象-关系映射ORM(Object Relational Mapping)(转)
  9. VB 游戏外挂操作类
  10. FFmpeg视频编解码库,无法解析的外部符号、找不到inttypes.h文件的问题
  11. Bootstrap基础3(表单)
  12. PHP Socket编程起步
  13. java对接芯烨XP58系列打印机,网络驱动
  14. 父亲节,各大产品借势宣传文案,每一句都“爸”气十足
  15. QQ批量挂机(python实现)
  16. parse error, unexpected TOKBEGIN, expecting AFFECT or SEMICOLON
  17. 杂谈:加班中离世的人
  18. R语言基于ARCH模型股价波动率建模分析
  19. 计算机输入输出接口形式,输入输出接口-微计算机原理-电子发烧友网站
  20. wince植入胎压监测_【折腾】小菲wince车载导航功能扩展

热门文章

  1. 炫我科技已经和亚马逊云科技一起准备好,迎接元宇宙时代
  2. 【MAC使用技巧】浏览器设置F5刷新快捷键
  3. 死锁-死锁预防、死锁避免(资源分配图与银行家算法)、死锁检测、死锁解除
  4. 关于layui的icon图标不显示的原因
  5. Pico 一体机开发记录
  6. 数据分析实战——电商复盘分析
  7. Linux无处不在 它是如何毁了微软统治世界的计划?
  8. 【架构实践】软件架构设计最佳实践
  9. 四川职高计算机专业本科院校,四川省职高本科大学录取分数线
  10. 博士申请 | 美国东北大学徐啸林老师招收机器学习安全方向全奖博士生