快速修改设置DNS,适应不同工作环境

在不同环境下工作,难免会需要切换DNS。

比如公司有DNS,家里又没有DNS。如果想翻墙,需要设置DNS。切来切去非常麻烦,Windows没有直接切换的方式,不像Mac可以提供不同工作场景的配置。

基本切换方法

1、打开网络
2、选择更改适配器
3、打开网络连接属性对话框
4、打开IPv4协议属性对话框
5、设置你需要的DNS方式

每次切换都需要这么长长的5步,不累死也烦死。还好Windows还是可以通过命令设置的。

命令设置方法

windows提供了一个非常强大的网络管理命令,可以用netsh这个命令进行设置。这个命令网络管理员一定非常熟悉。

修改DNS只需要用到Interface网络接口的子命令组,可以用Help查看。设置DNS只需要用

netsh interface ipv4 set dns

就可以搞定

用法: set dnsservers [name=]<string> [source=]dhcp|static
             [[address=]<IP address>|none]
             [[register=]none|primary|both]
             [[validate=]yes|no]

参数:

      标记           值
      name         - 接口名称或索引。
      source       - 为以下值之一:
                     dhcp: 将 DHCP 设置为源,用于为指定接口配置 DNS
                           服务器。
                     static: 将用于配置 DNS 服务器的源设置为
                             本地静态配置。
      address      - 为以下值之一:
                     <IP address>: DNS 服务器的 IP 地址。
                     none: 清除 DNS 服务器列表。
      register     - 为以下值之一:
                     none: 禁用动态 DNS 注册。
                     primary: 仅在主 DNS 后缀下注册。
                     both: 在主 DNS 后缀和特定连接后缀下注册。
      validate     - 指定是否将执行 DNS 服务器设置的验证。
                     默认情况下,该值为 yes。


备注: 将 DNS 服务器配置设置为 DHCP 或静态模式。仅当
      源为 "static" 时,"addr" 选项还可用于为指定接口
      配置 DNS 服务器 IP 地址的静态列表。如果 Validate 开关为 yes,
      则验证新设置的 DNS 服务器。

示例:

       set dnsservers name="Local Area Connection" source=dhcp
       set dnsservers "Local Area Connection" static 10.0.0.1 primary

注意:
这个命令需要管理员权限才能运行,cmd也需要以管理员方式启动。

修改IPV4的DNS为 127.0.0.1

netsh interface ipv4 set dns name=本地连接 source=static addr=127.0.0.1 register=PRIMARY

命令行参数:
name ---- 需要修改的网络连接名称,就是叫 本地连接 那个什么的。
addr ---- 设置成所需要的DNS

恢复动态DNS

netsh interface ip set dns name=本地连接 dhcp

简单一个命令就搞定

简单一个netsh命令就搞定需要手工点5下才能完成的事情,这个超爽。就是唯一还有一点不太爽的就是,这个命令是管理员权限的。

每次运行命令敲这么多子也是麻烦,当然最后做个bat就完成了。

设置BAT样例

Web网络连接的DNS设置成本地127.0.0.1,具体为啥一般翻墙的东东都是用本地解析的。

提示:一般如果没有修改,可能就是 本地连接字样的名字

@echo off  

rem //设置变量   
set NAME="web"  
set DNS1=127.0.0.1
set DNS2=114.114.114.114


echo 当前可用操作有:  
echo   1 设置本地DNS代理
echo   2 恢复动态DNS
echo   3 退出  
echo   .
echo 请选择后回车:  
set /p operate=  
if %operate%==1 goto 1  
if %operate%==2 goto 2  
if %operate%==3 goto 3  

:1
echo . 
echo 正在设置本地DNS代理,请稍等...  
echo 网络 = %NAME%   
echo DNS  = %DNS1%   
echo .
netsh interface ipv4 set dns name=%NAME% source=static addr=%DNS1% register=PRIMARY   
echo 本地代理已设置!  
pause  
goto 3  


:2  
echo .
echo 正在恢复动态DNS,请稍等...  
echo 网络 = %NAME%
echo .
netsh interface ip set dns name=%NAME% dhcp
echo 恢复动态DNS设置!  
pause  
goto 3  

:3  
exit