动态ip

>

代理ip软件

>

换ip软件

>

HTTP代理

>
Socks5代理
黑核动态ip代理
您的位置: 首页 > 新闻资讯 > 正文

Linux域名解析中的IP地址选择“亲和性”问题

发布时间:2019-12-21 14:12:03 来源:黑核动态ip代理

分享到

  问题初现

  最早发现问题时是在做一个测试,把某个域名解析到内网的几台机器上(10.0.0.9和10.0.0.119),结果用客户端(10.0.0.200和10.0.0.201,都由于特殊原因没有关掉IPv6)去连接测试时发现,连接都跑到10.0.0.119上了,10.0.0.9上几乎没有连接!

  问题原因

  网上Google了一下,据说是新的域名解析系统调用getaddrinfo()加入了对rfc3484的支持导致的,这种支持会将DNS服务器返回某个域名的多个IP(顺序随机),按照一定的逻辑排序后再返回,这样的话由于客户端一般都会取第一个IP,所以我们看到的结果就是某个客户端老连一个IP。

Linux域名解析中的IP地址选择“亲和性”问题

  至于rfc3484中涉及到的排序逻辑,我的理解大概是优先返回跟客户端“最近”的IP地址(具体算法肯定远比这个复杂,但大概就是这个意思,所以我把rfc3484引入的这个问题称之为“亲和性”问题)。

  我们的客户端的IP是10.0.0.200和10.0.0.201,显然离10.0.0.119比离10.0.0.9更“近”,所以,连接都跑10.0.0.119上去了,10.0.0.9上几乎没有连接。

  解决方法

  强制使用老系统调用:gethostbyname

  系统里干掉IPv6

  当然是第二种方法合适,因为这样我们不用动代码,而只需要配置下环境即可。

  测试求证

  本着打破沙锅问到底的精神,找了个简单程序调用getaddrinfo,并跟进glibc的源代码里看到了getaddrinfo函数执行情况的细节。于是找了两台服务器(用作客户端):

  10.0.0.3(IPv6 enabled)

  10.0.0.233(IPv6 disabled)

  在这两台机器上分别跑gai.c编出来的二进制文件,发现IPv6启用的那台(10.0.0.3)域名解析始终首先返回10.0.0.9,而IPv6 disabled的那台(10.0.0.233)却一会儿首先返回10.0.0.119,一会儿又首先返回10.0.0.9。

  附录

  例程getaddrinfo.c

  这个例程是网上翻出来的,连文件名、版权注释都没改。:)

Linux域名解析中的IP地址选择“亲和性”问题

Linux域名解析中的IP地址选择“亲和性”问题

  测试程序运行

  安装软件

Linux域名解析中的IP地址选择“亲和性”问题

  这里因为我的glibc版本是2.12-1.166.el6_7.3

  编译参数

Linux域名解析中的IP地址选择“亲和性”问题

  gdb跟踪

  发现在glibc源代码里,/usr/src/debug/glibc-2.12-2-gc4ccff1/sysdeps/posix/getaddrinfo.c文件中第2436行和2437行:

Linux域名解析中的IP地址选择“亲和性”问题

  这里的第2437行的函数qsort就是用来做排序的,前面的判断条件in6ai!=NULL在有IPv6的环境里成立;反之在仅有IPv4的环境里不成立。这也就是干掉IPv6会直接规避掉这个大“坑”的直接原因。


相关资讯

Linux如何设置静态ip和动态ip

对于一个Linux初学者来说,最深的感触就是可能缺少或多一个空格,或者一个大小写的区别,就会导致一些“严重”额问题,之所以严重,也是因为是菜鸟,所以感觉太神秘。

来源:黑核动态ip代理

2019-05-07 09:24:38

Linux搭建socks 5代理服务器

SOCKS5是一个代理协议,通过将前端发来的请求转发给真正的目标服务器,模拟了一个前端的行为。在这里,前端和SOCKS5之间也是通过TCP/IP协议进行通讯,前

来源:黑核动态ip代理

2019-05-13 09:23:39

从 TCP/IP 协议谈 Linux 内核参数优化

在硬件资源有限的情况下,最大的压榨服务器性能,提高服务器的并发处理能力,是很多技术人员思考的问题,除了优化Nginx/PHP-FPM/Mysql/Redis这类

来源:黑核动态ip代理

2019-12-11 14:25:21

Linux域名解析中的IP地址选择“亲和性”问题

问题初现最早发现问题时是在做一个测试,把某个域名解析到内网的几台机器上(10.0.0.9和10.0.0.119),结果用客户端(10.0.0.200和10.0.

来源:黑核动态ip代理

2019-12-21 14:12:03

如何在Linux中查看IP地址

在排除网络问题,设置新连接或配置防火墙时,了解设备的IP地址非常重要。IP地址可以分为两类,公共和内部。公共IP是唯一的IP地址,可以从Internet访问。内

来源:黑核动态ip代理

2020-01-06 14:05:32

关于linux中Squid代理服务器的10个问答

不仅是系统管理员和网络管理员时不时会听到“代理服务器”这个词,我们也经常听到。代理服务器已经成为一种企业常态,而且经常会接触到它。它现在也出现在一些小型的学校或

来源:黑核动态ip代理

2020-02-03 14:31:06

解析IP地址、子网掩码、网关的关系

子网掩码是每个网管必须要掌握的基础知识,只有掌握它,才能够真正理解TCP/IP协议的设置。以下就由黑核动态ip代理来深入浅出地讲解什么是子网掩码。IP地址的结构

来源:黑核动态ip代理

2019-04-08 15:22:44

换ip软件帮您解决ip被封烦恼!

换ip软件帮您解决ip被封烦恼!我想做互联网工作的基本上都需要换下ip吧,很多时候我们做推广经常被封账号,特别是同一个IP自问自答马上封你没商量,但是这些推广也

来源:黑核混拨IP网

2018-12-25 15:52:02

深入浅出反向代理服务器“Nginx”

Nginx("enginex")是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型

来源:黑核动态ip代理

2019-11-15 10:08:29

如何选择代理ip软件 换ip软件是越贵越好吗

随着换ip软件的逐步淘汰,代理ip软件已经进入了市场营销人员的必备工具的工具箱中。但是也随着网络市场的不断开发,各型各色的ip软件更是令人眼花缭乱。在选择代理i

来源:黑核混拨ip加速器网

2019-01-07 15:52:01

不知道怎么样修改ip地址可以用黑核混拨IP软件

现在做推广越来越难做了,动不动就被封号,要么就是一个IP只能登陆一个账号,这就尴尬了,如果只用一个账号推广根本不见效啊,或者说见效也效果不大,只能大批量的做推广

来源:黑核混拨ip加速器网

2018-12-25 16:28:24

在线客服
大客户VIP渠道
点击这里给我发消息
讨论QQ群
客服电话
13318873961