最近单位网络环境变动,DNS 服务器地址也发生了变化。原以为在核心交换机上修改了 DNS 地址, 终端PC也会自动下发。没想到好多终端PC原先手动设置了旧的DNS 地址,导致出了经典的“能上微信,不能浏览网站”的问题。
没办法,只能帮着改 DNS 地址。机器还挺多,手动改太麻烦了。于是,我写了一个小工具,用来快速设置 DNS 服务器地址。
先说说修改dns的几种方案:
手动方案
控制面板 –> 网络和Internet –> 更改适配器设置 –> 右键如"本地连接"(已启用的网络连接) –> 属性 –> Internet 协议版本 4(TCP/IPv4) –> 设置DNS(自动或输入IP)。
我感觉这个操作虽然繁琐,但是比较简单。不过我司是做高科技转换的,显然不会用这个低科技了。不夸张的说,好多同事连“控制面板”都找不到,也懒得找,就等着IT人员上门服务。
软件方案
现成的软件有好多,好处就是可以省去“手动方案”的前期动作,直接设置DNS。
Dns Jumper v2.3 - A Free DNS Changer
Zaczero/DNSChanger: 🔧 The ultimate Windows DNS changer tool (with DNSCrypt)
这两个工具界面都非常的简洁,功能绝对够用。缺点是还要手动输入DNS的服务器IP,而且是英文,也要一点学习时间。
批处理文件(.bat)
批处理文件(batch file)包含一系列 DOS命令,通常用于自动执行重复性任务。用户只需双击批处理文件便可执行任务,而无需重复输入相同指令。
这里有很多适用的脚本:
aDarkDev/DNSChanger-Win: Batch File for Change Windows dns easy.
这些脚本非常好用,但需要管理员权限,也有软件方案同样的问题。我想改改用着,但奈何不太了解PowerShell的语法,一时还没搞出来。
所以,最后还是自己写一个Python脚本,把DNS地址的硬编码在程序里面,打包成Exe文件,大家点击一下就行了。
python
用Python写还是比较直观的,两个步骤:
- 找到已启用的网络连接
get_active_interfaces
- 设置DNS
set_dns_servers
|
|
其中 psutil
是一个跨平台的 Python 库,用于检索系统和进程的运行信息。它提供了对系统资源(如 CPU、内存、磁盘、网络等)的访问,并允许管理和监控系统进程。这里用它获取网络接口和连接信息。
可用 pip
安装 psutil
。
|
|
auto-py-to-exe
用 auto-py-to-exe
将上面的脚本打包成 exe
文件。
打包的时候,选择 单文件,并设置一个图标。
这样,只要右击 dns-changer.exe
,选择 以管理员身份运行
即可。
当然,缺点也很明显。
一是文件比较大,原本几十行代码,打包就变成7M多了。
二是不够灵活,不能随时修改DNS地址。
所以,如果熟悉PowerShell的话,还是推荐用PowerShell脚本。
你有什么更好的方法吗?欢迎留言。