Author: phanx
Updated: 2016-5-4
转载请保留作者信息
=========================
从Vista版本起,Windows会自动探测当前网络是否连接到Internet, 是通过一个叫做 Network Connectivity Status Indicator (NCSI) 的服务来实现的.
主要有以下两步:
1. NCSI 首先对 进行域名查询,得到响应地址后,访问 http:///ncsi.txt 这个文件. 这个文件是一个纯文本,只包含"Microsoft NCSI"这14个字符.
2. NCSI 还会对 dns.msftncsi.com 进行域名查询,如果返回结果是 131.107.255.255. 那么就认为internet连接正常,如果不是则认为异常.
知道了这个行为,那么我们可以在内网的DNS上模拟一个msftncsi.com域,添加两个A记录 www 和 dns, www指向一个HTTP Server的地址,然后在HTTP Server的根目录放上
ncsi.txt这个文件. dns则解析到 131.107.255.255 这个地址.
注意 ncsi.txt 这个文件的内容只有Microsoft NCSI这14个字符,是没有换行符的,所以一定要去掉换行符,
在linux下面可以这样生成文件
- echo "Microsoft NCSI" > ncsi.txt
- perl -pe 'chomp if eof' ncsi.txt > ncsi2
- mv -f ncsi2 ncsi.txt