微信订阅号二维码

本页内容二维码:

本栏目热门内容
  • Acrobat虚拟PDF打印机执行...
  • LINKSYS交换机登录WEB界面...
  • 又一次RAID 5阵列故障记录...
  • 解决VMware vSphere ESXi ...
  • 修改CentOS发行信息以绕过...
  • Windows Server 2008 重命...
  • 解决虚拟化运行的 Windows...
  • Intel Nehalem CPU Errata...
  • 某卢瑟装机搞得一踏糊涂,...
  • 解决MySQL Cluster 备份总...
  • MegaCli安装及使用杂记
  • 解决WSUS显示客户端不全的...
  • 解决 VMWare vSphere 6 客...
  • 解决Windows Server 2008 ...
  • 本站服务器RAID 5阵列双硬...
  • 网站数据库从MySQL 5.0升...
  • 解决MariaDB使用Percona X...
  • 修改arpwatch使通知邮件主...
  • Linux 下的分区调整工具GP...
  • DELL PowerEdge 820 报CPU...
  • 程序员漫画:如何用8种不...
  • 解决很好用的多合一即时通...
  • 使用 GParted 进行虚拟机...
  • 解决Samba WINS服务的错误...
  • 解决Squid代理HTTP时在浏...
  • 用Delphi编写使用到ADO的D...
  • 网站简单改版
  • 索尼系列手提电脑备份失败...
  • Dell R900服务器 BMC firm...
  • 更多...

    解决Samba作为WINS服务器时总是把某个服务器名称解释为错误IP地址的问题

    作者:Sender  来源:WaveCN.com  发布日期:2015-05-11  最后修改日期:2015-05-11

      手头的LINUX网关兼任了很多工作,其中包括了作为内网的WINS服务器。这个设定的原因是...算了不表。某天,突然发现之前好好的某个网络共享死活连不上去。于是进行各种检查,最重要的表现是:

    • 用IP地址访问网络共享是否可行?是。
    • 用服务器名访问网络共享是否可行?否。

      照旧怀疑是否各种IP设置的问题?是否WINDOWS的某些网络相关服务(尤其是 TCP/IP NetBIOS Helper 这个服务)是否被停掉?甚至怀疑了WINSOCK是否被破坏......一番折腾,仍然不行。

      没辙了,上网乱找,找到一个很旧很旧的小软件: NBLOOKUP (https://support.microsoft.com/en-us/kb/830578)。这个软件一直都没有被 Microsoft 纳入到正式的NetBeui工具(比如常用的NBTSTAT)家族中。用这个工具检查发现,它返回的服务器名称解释结果是不正常的,具体一点,就是服务器的名称未能解释成正确的IP地址,而是解释成了这台服务器在之前使用的另外一个地址。下面是这个工具的输出例子:

    C:Userssender>nblookup wings

    Recursion is on

    Querying WINS Server: 192.168.1.6
    NetBIOS Name: wings
    Suffix: 20

    Name returned: WINGS
    Record type: Unique
    IP Address: 192.168.1.10 (注:实际应该是192.168.1.33)

      这就有点奇怪了。按说NETBEUI的工作机制,它是不存在名称缓存,所有的解释都是即时发组播包去查询的。由于客户端计算机设置了LINUX网关作为WINS服务器,于是开始怀疑问题出在网关的Samba上。通过在网关上直接抓包(WireShark也是必须要掌握的工具),发现网关的Samba服务对于WINS解释请求都是立即回应,没有进行任何组播查询的。仔细去看文档,原来Samba负责进行WINS解释的nmbd服务的工作方式和WINDOWS本身的实现有所不同。Samba的nmbd服务可能是出于减少网络广播的目的,会在内部维持一个服务器的解释列表,文件名是wins.dat。通过locate找到这个文件的位置是:

    /var/cache/Samba/wins.dat

      停掉服务然后删除这个文件,再重启服务:

    service smb stop
    rm /var/cache/Samba/wins.dat
    service smb start

      目测wins.dat文件自动被重建。再在客户端上通过nblookup进行测试,一切正常了。附带一提的是在Linux下,Samba也提供了类似nblookup的工具,名称为nmblookup,这里就不浪费时间去介绍了。

      最后一个问题是为何这个IP地址改了这么久,直到今天才出事?认真想了一下,才发现其实是很多事情掩盖了这个问题:
      1、改IP后为了保证兼容性,旧IP被作为第二IP地址依然保留在适配器的设置中,直到最近几天才删掉;
      2、删掉旧IP后直到发现问题的这一段时间内,这个网络共享都是通过之前创建的、基于新IP而不是服务器名称的网络驱动器去访问的;
      3、直到网络大调整,网络驱动器删除重建时,问题就跳了出来。

      结论就一个字:囧。

     

    欢迎关注微信公众号后私信讨论文章内容!
    本栏目相关
  •  2014-11-19 修改arpwatch使通知邮件主题显示IP地址(我的CentOS 源码包修改实例)
  •  2015-05-11 解决Samba作为WINS服务器时总是把某个服务器名称解释为错误IP地址的问题
  •  2022-12-12 Linux Kernel 日志排错分析和处置三例
  • 返回页首