• 首页
  • 狐文
  • 狐图
  • About
狐窝
OvO
  1. 首页
  2. 未分类
  3. 正文

linux ipv4 ipv6双栈 (优先ipv4而不使用ipv6配置)

2020年09月10日 25点热度 0人点赞 0条评论

2020-01 from--https://www.qedev.com/linux/10571.html

 

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

 

 

在国家网信办推行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说明 http://www.man7.org/Linux/man-pages/man5/gai.conf.5.html

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

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

 

linux ipv4 ipv6双栈 (优先ipv4而不使用ipv6配置)

 

RFC3484协议  https://tools.ietf.org/rfc/rfc3484.txt

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)

 

linux ipv4 ipv6双栈 (优先ipv4而不使用ipv6配置)

 

/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  10
precedence 的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映射的地址。 )

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

Prefix Precedence Label Usage
::1/128 50 0 Localhost
::/0 40 1 Default unicast
::ffff:0:0/96 35 4 IPv4-mapped IPv6 address
2002::/16 30 2 6to4
2001::/32 5 5 Teredo tunneling
fc00::/7 3 13 Unique local address
::/96 1 3 IPv4-compatible addresses (deprecated)
fec0::/10 1 11 Site-local address (deprecated)
3ffe::/16 1 12 6bone (returned)

 

2 配置验证:

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

 

 

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

服务器具备双栈

 

linux ipv4 ipv6双栈 (优先ipv4而不使用ipv6配置)

 

 

服务器的双栈能够出公网

 

linux ipv4 ipv6双栈 (优先ipv4而不使用ipv6配置)

 

 

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

 

linux ipv4 ipv6双栈 (优先ipv4而不使用ipv6配置)

 

 

 

linux ipv4 ipv6双栈 (优先ipv4而不使用ipv6配置)

 

 

修改优先级:

 

linux ipv4 ipv6双栈 (优先ipv4而不使用ipv6配置)

 

 

linux ipv4 ipv6双栈 (优先ipv4而不使用ipv6配置)

 

 

多次测试 能够稳定路由。

 

 

3 测试结果:

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

测试的连接:

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

wget -SO /dev/null https://k.sinaimg.cn/n/default/1_img/upload/3933d981/300/w1620h1080/20200105/f33b-imrkkfy0727359.jpg/w640slw.jpg

 

结论:

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

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

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

 

 

 

 

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

标签: aaaa ipv 双栈
最后更新:2020年09月10日

OvO

狐狸

点赞
< 上一篇
下一篇 >
最新 热点 随机
最新 热点 随机
钛备份或小米系统备份功能备份出来的APK无法正常还原 BBR安装启用 安装docker mitmproxy 调试方法 Android SDK 版本选择 Perdition Mail代理服务器配置 HAProxy SSL代理 Openssl 中间人SSL代理 Stunnel SSL to SSL代理 NGINX反代IMAP配置 各种设备User Agent Torrent下载工具推荐 用 rar2john+hashcat 破解 RAR 文件密码 2020最好的Linux发行版 关闭新版chrome工具栏上拼图图标 Office 下载、安装、激活,有它就够了! Android 非官方的发行版 openwrt添加autoconf-archive
NGINX反代IMAP配置Stunnel SSL to SSL代理Openssl 中间人SSL代理HAProxy SSL代理Perdition Mail代理服务器配置Android SDK 版本选择mitmproxy 调试方法安装dockerBBR安装启用钛备份或小米系统备份功能备份出来的APK无法正常还原
Maven仓库理解和优先级 ESXI 安装时用到的几个命令 如何禁用samba身份验证 香蕉派关闭LED灯 udev控制磁盘引导顺序 让 Python 更加充分的使用 Sqlite3 Python 定义编码 Windows 8.1/Server 2012 R2 也可以 KMS激活了 踩坑记:LinuxMint18字体变为楷体的修复 nginx重写错误的调试 编译 Linode 内核模块小白教程,以 tcp_hybla 为例 Chromium代码编译选项介绍 ZFS 调优指南 Gmail邮件客户端跳板解决方案 6个网盘中转站 Oracle:hint用来手工改变sql的执行计划 chmod只修改子目录或文件的权限 英特尔服务器主板24针前面板接口说明
标签聚合
下载 chrome 网卡 ssl linux 路由 https yum chromium git blog docker 安装 密码 镜像 e

COPYRIGHT © 2020 狐窝. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS