V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fxxkgw
V2EX  ›  DNS

关于校园网 DNS 解析问题求助

  •  1
     
  •   fxxkgw · 2015-05-27 15:20:36 +08:00 · 3458 次点击
    这是一个创建于 3468 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我有个域名地址,通过智能DNS会根据不同运营商把客户端数据post到不同服务器。
    服务器上通过一个PHP接收数据并获取客户端地址,代码如下:

    if($_SERVER['HTTP_X_FORWARDED_FOR'] && preg_match('/^([0-9]{1,3}.){3}[0-9]{1,3}$/',$_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $xff = $_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    elseif($_SERVER['HTTP_CLIENT_IP'] && preg_match('/^([0-9]{1,3}.){3}[0-9]{1,3}$/',$_SERVER['HTTP_CLIENT_IP'])) {
    $xff = $_SERVER['HTTP_CLIENT_IP'];
    }
    else {
    $xff = $_SERVER['REMOTE_ADDR'];
    }

    现在分析获取的数据,发现获取的客户端配置的IP DNS很多是联通或者电信的,但是域名却被解析到教育网的IP上,xff获取的IP也是教育网的
    其他服务器没出现这问题,比如联通的IP DNS解析域名到联通服务器,xff也是联通,唯独教育网有这个问题,请问这个要怎么解释呢?

    第 1 条附言  ·  2015-05-27 15:56:36 +08:00
    比如下面这个log
    获取的客户端配置ip=113.140.6.195 电信
    获取的客户端配置dns=125.76.192.170 电信
    networkenvironment=wifi
    xff=202.200.48.115 (教育网),**.205.210.**(接收服务器IP)
    按照一般情况,获取的ip和xff的首个IP应该是一致的。
    8 条回复    2015-05-27 18:07:10 +08:00
    Septembers
        1
    Septembers  
       2015-05-27 15:28:58 +08:00   ❤️ 1
    lsylsy2
        2
    lsylsy2  
       2015-05-27 16:01:47 +08:00
    很多教育网不是纯的教育网,而是类似长宽、移动这样,拉了其他宽带的线做出口。可能是这种情况。
    fangjinmin
        3
    fangjinmin  
       2015-05-27 16:06:12 +08:00
    你要做的是不是取得用户的IP,然后根据IP,选择服务器?
    HTTP_X_FORWARDED_FOR是经过了代理服务器的转发后才会有的。
    说明教育网经过了代理服务器的中转。
    fxxkgw
        4
    fxxkgw  
    OP
       2015-05-27 16:11:07 +08:00
    @fangjinmin 感谢回复。
    大体流程是先获取用户IP DNS 这些不需要远程服务器的脚本,直接在客户端上处理。然后post到一个URL,只能DNS会根据用户信息解析出URL对应的IP,类似于客户端运行nslookup 或dig命令。然后发送数据到远程服务器,服务器再接收数据。
    如果用户配置的DNS是电信或联通的,那为啥解析出的URL地址对应的是教育网的呢?
    fangjinmin
        5
    fangjinmin  
       2015-05-27 16:18:53 +08:00
    @fxxkgw 我不知道你说的智能DNS是怎么做的,我觉得你要去研究一下,你说的所谓智能DNS了。你希望做的结果同一个网络的IP,POST数据到布署在这个网络的专用服务器上吧?但是有可能你说的智能DNS是否会根据网速判断呢?比如如果连接到电信的服务器更快,它是否是选择了电信的服务器?
    fxxkgw
        6
    fxxkgw  
    OP
       2015-05-27 16:25:32 +08:00
    @fangjinmin 这个是CDN相关的,智能DNS作用就是,比如你是联通用户,访问www.abc.com时,就给你把abc.com解析到联通的服务器上,同理你是电信用户,就解析到电信服务器上。这样可以优化网站访问速度。
    fangjinmin
        7
    fangjinmin  
       2015-05-27 16:36:26 +08:00
    其实这个就很好解释了,教育网的IP,但是出口是在电信或者联通。你客户端取到的是教育网的IP,你的程序也是取到的教育网的IP,因为程序取的是HTTP_X_FORWARDED_FOR。而CDN取到的地址用PHP里面的参数来打比方的话,就是REMOTE_ADDR。
    jsq2627
        8
    jsq2627  
       2015-05-27 18:07:10 +08:00
    你这个“智能DNS”的描述不清楚啊
    这到底是反向代理还是 DNS?
    HTTP_X_FORWARDED_FOR 是反向代理才有的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1102 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:57 · PVG 02:57 · LAX 10:57 · JFK 13:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.