由于Host文件无法配置通配符域名的重定向,网上找了解法方案:DNSAgent 下载地址:https://github.com/stackia/DNSAgent/releases 解压后如图所示: 规则配置,修改rules.cfg 如以上配置可以以正则表达式的域名(Pattern)解析到对应的ip地址(Address),因此也可以使用通配符的域名解析. 配置好规则后,执行DNSAgent.exe 设定 网络连接的DNS为127.0.0.1 至此DNS代理就生效了,访问我们定义的域名解析就会解析到对应ip,如果host中也做了重定向最终是以host配置为主的. 以上操作有点麻烦,主要是如果DNSAgent.exe窗口如果关闭就会失效,如果我们想要解除代理,关闭DNSAgent.exe后还得重新设置DNS自动获取服务器地址 自认为的最佳实践: 1. 注册服务 执行Install as Service.bat,设置服务开机自启,如果规则变化,请重启服务 2. 自动设置DNS 细心的同学会发现你们解压出来跟我的截图不一样,我的截图多出来了dns_on.bat,dns_off.bat,use_admin.bat 这里就是利用bat脚本实现自动设置DNS,省去繁琐操作 use_admin.bat 用于提升运行权限(设置DNS需要administrator权限) :------------------------------------- REM --> Check for permissions >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" REM --> If error flag set, we do not have admin. if ''%errorlevel%'' NEQ ''0'' ( echo Requesting administrative privileges... echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs" if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" ) :--------------------------------------
dns_on.bat 设置DNS=127.0.0.1 echo use administrator auth echo check NSAgent is running tasklist /nh | find /c "%app%" if ERRORLEVEL 1 (start /D "%path%" %app%) else (echo app is running) netsh interface ip set dns name="本地连接" source=static addr=%dns%
dns_off.bat 设置DNS自动获取服务器 echo use administrator auth netsh interface ip set dns name="本地连接" source=dhcp
这样我们就可以愉快的玩耍啦!
|