由于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权限)
@echo off
:: BatchGotAdmin
:-------------------------------------
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...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
:--------------------------------------
dns_on.bat 设置DNS=127.0.0.1
@echo off
echo use administrator auth
call use_admin.bat
set app=DNSAgent.exe
set path=%~dp0
set dns=127.0.0.1
echo check NSAgent is running
tasklist /nh | find /c "%app%"
if ERRORLEVEL 1 (start /D "%path%" %app%) else (echo app is running)
echo flush dns
ipconfig /flushdns
echo set DNS=127.0.0.1
netsh interface ip set dns name="本地连接" source=static addr=%dns%
echo print ipconfig info
ipconfig /all
pause
dns_off.bat 设置DNS自动获取服务器
@echo off
echo use administrator auth
call use_admin.bat
echo flush dns
ipconfig /flushdns
echo set auto dns
netsh interface ip set dns name="本地连接" source=dhcp
ipconfig /all
pause
这样我们就可以愉快的玩耍啦!