学校的 DNS 越来越不给力了,打开一些网页时经常出现连接超时的现象。虽然不能确定 DNS 服务器到底出了啥问题,但是可以确定换用 114 或者 Google 的 DNS 肯定能够更快的请求到资源。
问题来了,尽管设置完新的 DNS 后可以用的很爽,但是某些时候需要用到内网资源,比如网关登录系统时,更换 DNS 将导致这些请求无法被正确转发。这时,不得不再手动的把 DNS 切换回默认设置。
这种无脑又费时费力的工作当然是程序员不能容忍的,于是,解决方案来了。
Windows 版
设置
strComputer = "." arrDNSServers = Array("114.114.114.114", "114.114.115.115") Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set Nics = objWMIService.ExecQuery _ ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True") For Each Nic In Nics intSetDNSServers = Nic.SetDNSServerSearchOrder(arrDNSServers) If intSetDNSServers = 0 Then WScript.Echo "已切换为114 DNS" End If Next
恢复
strComputer = "." Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colNetAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE") For Each objNetAdapter In colNetAdapters errEnable = objNetAdapter.EnableDHCP() errDNS = objNetAdapter.SetDNSServerSearchOrder(null) Next If intSetDNSServers = 0 Then WScript.Echo "已恢复为默认 DNS" End If
使用方法
将上述两个脚本分别保存为「设置DNS.vbs」和「恢复DNS.vbs」,当然文件名可以自拟,但是确保扩展名设置正确,然后双击运行即可。 如果系统默认没有关联 vbs 的解释引擎,可以打开注册表,找到「HKEY_CLASSES_ROOT」-「.vbs」,双击右侧「默认」键,将其值改为「VBSFile」后即可。 注意,「设置 DNS.vbs」中默认的 DNS 设置为 114 的 DNS,这个 DNS 在国内来说效果很不错了。如果你需要换用 Google 或其它的 DNS,修改第 2 行的内容即可。OS X 版
##设置DNS sudo networksetup -setdnsservers Wi-Fi 114.114.114.114 114.114.115.115" sudo networksetup -setdnsservers Wi-Fi 8.8.8.8 8.8.4.4 #恢复默认DNS sudo networksetup -setdnsservers Wi-Fi empty