动态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会直接规避掉这个大“坑”的直接原因。


相关资讯

如何判断代理服务器列表中的好坏?

如何判断代理服务器列表中的好坏?基本上一个较为正规或成熟的代理服务器平台,他们都会有专业的技术团队和客服售后,而且这些很容易使他们的综合水平考察范围,因此我们可

来源:黑核混拨ip代理

2019-03-28 16:40:53

怎样维护爬虫程序中的代理ip库

使用爬虫代理IP的最佳方案是在本地维护一个IP池,这样才能更有效的保障爬虫工作的高效稳定持久的运行,那么,应该怎样在本地维护IP池呢?在代理服务商认可的调用AP

来源:黑核动态ip代理

2019-04-12 11:15:30

代理ip在爬虫过程中的使用

在实际的爬虫抓取的过程中,由于会存在恶意采集或者恶意抓取的情况,很多网站都会设置相应的防爬取机制,通常防爬程序都是通过ip来识别机器人用户的,因此充足可用的ip

来源:黑核动态ip代理

2019-04-19 10:40:04

动态IP拨号vps配置中的IP多少AB段代表什么

动态IP拨号vps配置中的IP多少AB段代表什么?随着互联网需求的增加,很多公司和个人都在使用动态拨号VPS,但是有些用户看到拨号vps介绍里面ip段标的几A段

来源:黑核动态ip代理

2019-05-05 09:48:20

动态ip拨号vps在爬虫工作中的重要性

对于在互联网上工作的朋友来说,动态IP拨号vps并不是一种陌生的存在。如果您恰好是从事代码工作的专业技术人员,特别是如果您负责网络爬行相关工作,那么您每天都必须

来源:黑核动态ip代理

2019-05-05 10:57:23

代理服务器原理及在网络中的应用

代理服务器,英文名叫ProxyServer,在日常网络中有很多用途,这里把我们所熟悉的一些作用总结和分析一下,分类说明:一、共享网络最常见的可能是用代理服务器共

来源:黑核动态ip代理

2019-05-24 09:27:14

代理IP在数据爬取中的作用与代理IP验证

目前动态ip虽多,提供服务的商家也五花八门,但对于代理IP的使用并不是购买过来就可以随便用了,还需要了解代理IP的作用,数据爬取与IP提取知识,这样可以有针对性

来源:黑核动态ip代理

2019-06-04 09:41:13

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

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

来源:黑核动态ip代理

2019-11-15 10:08:29

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

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

来源:黑核动态ip代理

2019-12-21 14:12:03

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

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

来源:黑核动态ip代理

2019-04-08 15:22:44

黑核混拨IP加速器轻松解决怎么修改手机ip地址问题

有些视频播放站很坑,一天只能观看几个视频就需要开通会员才能看了,但是我们又不想冲会员怎么办,那就需要修改手机IP地址了,但是怎么修改手机IP地址呢?不是谁都懂的

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

2018-12-25 17:39:01

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