• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >嵌入式开发 > 为啥Yosemite下我ping的地址和nslookup出来的地址不一样

为啥Yosemite下我ping的地址和nslookup出来的地址不一样

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了nslookup ping,yosemite,os x yosemite,os x yosemite下载,yosemite什么意思等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:为啥Yosemite下我ping的地址和nslookup出来的地址不一样
描述:

国内的dns地址会被污染,这大家都知道,但我已经用了黑科技在局域网内代理了一个纯净的dns服务器,用nslookup命令来看工作良好

$ nslookup twitter.com
Server:     10.0.10.201
Address:    10.0.10.201#53

Non-authoritative answer:
Name:   twitter.com
Address: 199.59.149.230
Name:   twitter.com
Address: 199.59.150.7
Name:   twitter.com
Address: 199.59.148.10
Name:   twitter.com
Address: 199.59.148.82

但是用ping命令发现却到了一个污染地址

$ ping twitter.com
PING twitter.com (37.61.54.158): 56 data bytes
Request timeout for icmp_seq 0

我用的是内网的dns,要污染也不会这么强吧!而且在我的hosts文件里也没有配置任何相关的域名


解决方案1:

我也不懂,来贴下我的输出,等大婶解答。

$ nslookup twitter.com
Server:     127.0.0.1
Address:    127.0.0.1#53

Non-authoritative answer:
Name:   twitter.com
Address: 37.61.54.158

$ dig twitter.com

; <<>> DiG 9.9.2-P2 <<>> twitter.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12838
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;twitter.com.           IN  A

;; ANSWER SECTION:
twitter.com.        15476   IN  A   37.61.54.158

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Nov 27 14:29:39 2014
;; MSG SIZE  rcvd: 56

$ host twitter.com
twitter.com has address 37.61.54.158
twitter.com mail is handled by 20 alt1.aspmx.l.google.com.
twitter.com mail is handled by 30 ASPMX2.GOOGLEMAIL.com.
twitter.com mail is handled by 30 ASPMX3.GOOGLEMAIL.com.
twitter.com mail is handled by 20 alt2.aspmx.l.google.com.
twitter.com mail is handled by 10 aspmx.l.google.com.

解决方案2:

ping是用来测试主机是否可达的工具,并不适合测试DNS是否正常
ping的默认行为是调用系统API(大多数应用程序也是如此)进行查询,期间会涉及到

  • Windows
    • HOSTS file
    • search NetBIOS name cache
    • query WINS server
    • broadcast NetBIOS Name Query
    • search DNS client resolver cache
    • query DNS server
  • Unix
    • /etc/hosts
    • query NIS service
    • query DNS server

而nslookup就简单多了,直接调用命令内置的dns客户端,

  • 先查cache是否命中
  • 若无法命中,则直接查询系统配置的或者命令行指定的dns服务器

解决方案3:

好吧,我知道答案了,顺便给问题加了个标签 yosemite ,大家也可以猜到这又是苹果干的好事了。我没有在问题中声明使用的系统非常不好

在新版的yosemite里,加入了一个discoveryd的进程来做网络发现,而且它也会缓存所有的dns查询记录,也就是所有与主机名相关的查询工作都会经过这样一个进程

yosemite 下载,nslookup,yosemite 正式版,nslookup 工具,yosemite download,mac yosemite,找不到nslookup,os x yosemit

所以你的域名查询实际上是经过了缓存,但这个缓存有个特点

  1. ping,dig等直接获取域名结果的命令会被缓存
  2. nslookup这类显式地从dns服务器获取结果的命令不会被缓存

而且我们可以用dig命令的查询时间来判断是否被缓存了,如果被缓存了,那么它的耗时肯定是0ms,比如下面的结果

$ dig twitter.com

; <<>> DiG 9.8.3-P1 <<>> twitter.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19734
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;twitter.com.           IN  A

;; ANSWER SECTION:
twitter.com.        28  IN  A   199.59.149.198
twitter.com.        28  IN  A   199.59.149.230
twitter.com.        28  IN  A   199.59.150.7
twitter.com.        28  IN  A   199.59.150.39

;; Query time: 0 msec
;; SERVER: 10.0.10.201#53(10.0.10.201)
;; WHEN: Thu Nov 27 15:00:05 2014
;; MSG SIZE  rcvd: 93

什么时候缓存会自动清除

  1. 根据资料上的记录,当你的dns服务器地址变更的时候,这些缓存会自动清除。比如你重新设置这里
  2. 当时间超过了域名的ttl限制后,这个域名就会被设置为过期

yosemite 下载,nslookup,yosemite 正式版,nslookup 工具,yosemite download,mac yosemite,找不到nslookup,os x yosemit

为什么题主的缓存没有更新

因为我使用了局域网的一台服务器来代理其它的dns,为了解决污染,我把它代理的源地址从114.114.114.114切换到了8.8.8.8。但mac上的dns地址却没变过,都是这台代理服务器的地址,所以discoveryd不会清除缓存

强制清除所有的dns缓存

在yosemite下,你可以输入

sudo discoveryutil mdnsflushcache;sudo discoveryutil udnsflushcaches


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 为啥Yosemite下我ping的地址和nslookup出来的地址不一样

相关文章

  • 2017-06-05 已经编译成sys文件后,如何加载?谁能给点儿入门的资料,小弟感激不尽
  • 2017-06-05 请问游戏摇杆的油门踏板什么原理呢?
  • 2017-06-05 怎么做一个自己的设备类?
  • 2017-06-05 运行状态检测win10已禁用对该状态检测的服务?
  • 2017-06-05 用vc编程序,要从中断读数据,不会
  • 2017-06-05 lua.dllLua协程使用困惑求解
  • 2017-06-05 出售FatFat12/16/32文件系统源码
  • 2017-06-05 求助:STM32F205串口无法接收数据
  • 2017-06-05 大家学驱动如何起步的
  • 2017-06-05 WINCE下SelectedIndexChanged和Click问题

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Linux串口通讯的问题,超头痛!
    • 买了个纸币器,6张假币全接收,有对纸币器中传感器了解的吗?帮我看下这个设备
    • PPPoe中的问题?
    • Vxworks69bootrom如何加载bin文件
    • 在linux下,如何实现wifidirect?
    • 菜鸟求助I2C,V4L2,找不到设备
    • 谁有mini2440PCB文件,想参考一下、画个板子。
    • 那位仁兄用uC/OS-II做嵌入式开发?为什么它给的源代码例子不能编译?急求解答!
    • DeviceIoControl的问题
    • 该用什么调试工具?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有