无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 1284|回复: 17
打印 上一主题 下一主题

[求助] PING不通内网指定IP,不让其访问指定域名(命令行)

  [复制链接]
跳转到指定楼层
1#
发表于 2024-7-8 11:21:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 2012huguoliang 于 2024-7-8 18:35 编辑

如题,我现在有个这样的需求:

我只想这些域名(可能是合集,或者是通配符*.qq.com这种形式,不行就多写几条)在我内网(ping内网服务器)的情况下访问,不在内网时,让这些域名不能访问。

我现在能想到的是,先ping内网服务器,能ping通不做任何修改,不能ping通,则执行echo 127.0.01 *.qq.com >%windows%\system\etc\hosts,写入hosts文件劫持。恢复内网则删除这些劫持hosts。
我要做的是其实是我想公司所有电脑在上班的时候(肯定是连了公司路由DHCP)才访问这些网站,不在公司上班的时候不访问这些网站(hosts劫持)。

这样是不是有其他缺陷,或者哪位大佬给我个示例,不胜赶紧。

来,我自己写好了,给大伙看看,哈哈。
@echo off
if "%1"=="h" goto begin
start mshta vbscript:createobject("wscript.shell").run("%~nx0"^&" h",0)^&(window.close) && exit
::隐藏执行begin后全部内容
:begin
@fltmc >nul || mshta vbscript:CreateObject("Shell.Application").ShellExecute("%~f0","%*",,"runas",1)(window.close) && exit /b
@attrib -R -S C:\windows\system32\drivers\etc\hosts
@cd C:\windows\system32\drivers\etc\
@if not exist hostsbak @copy /y hosts hostsbak
::判断是否在内网
@echo off
ping 192.168.100.66 >nul 2>nul&&goto pingok||goto pingnook

:pingok
::在内网
rename hosts hosts1
rename hostsbak hosts
del /q hosts1
copy /y hosts hostsbak
@goto end

:pingnook
::非内网
echo 127.0.0.1 exmail.qq.com >> %SystemRoot%\System32\drivers\etc\hosts
echo 127.0.0.1 imap.exmail.qq.com >> %SystemRoot%\System32\drivers\etc\hosts
echo 127.0.0.1 smtp.exmail.qq.com >> %SystemRoot%\System32\drivers\etc\hosts
echo 127.0.0.1 pop.exmail.qq.com >> %SystemRoot%\System32\drivers\etc\hosts
@goto end

:end
::复制本身到system32
cd /d "%~dp0"
copy "%~nx0" "%systemroot%\system32\"
::加入到开机启动
@echo off
echo Set oWS = WScript.CreateObject("WScript.Shell") > CreateShortcut.vbs
echo sLinkFile = "%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\netexmail.lnk" >> CreateShortcut.vbs
echo Set oLink = oWS.CreateShortcut(sLinkFile) >> CreateShortcut.vbs
echo oLink.TargetPath = "c:\windows\system32\netexmail.bat" >> CreateShortcut.vbs
echo oLink.WorkingDirectory = "c:\windows\system32\" >> CreateShortcut.vbs
echo oLink.Save >> CreateShortcut.vbs
cscript CreateShortcut.vbs
del CreateShortcut.vbs
exit




点评

淡定  发表于 2024-7-8 18:16

评分

参与人数 1无忧币 +2 收起 理由
yyz2191958 + 2 淡定

查看全部评分

2#
发表于 2024-7-8 11:25:31 | 只看该作者
在服务器防火墙上做源地址限制呗。
回复

使用道具 举报

3#
发表于 2024-7-8 12:07:37 | 只看该作者
自已架設DNS服務器,
主要的設內網的DNS IP,
次要的設外網的DNS IP,
這樣在內網自然會用內網DNS優先,在其它地方時,
因為主要的DNS連不上,自然會用次要的DNS。
回复

使用道具 举报

4#
发表于 2024-7-8 12:59:36 | 只看该作者
楼上正解 在内网路由器上指定内网使用的内网的DNS
将你需要的域名内网解析为内网IP 其他域名代理解析出去就可以了
回复

使用道具 举报

5#
发表于 2024-7-8 13:08:56 | 只看该作者
可用Acrylic DNS这个软件  任意域名在内网做虚拟解析
其他域名用外网的DNS代理解析
然后内网的电脑DNS设置为这个Acrylic DNS所在的电脑的内网IP就可以了
既不影响外网的域名解析 还可以虚拟任意域名解析 任意后缀 包含不存在的后缀
这个软件虚拟解析权限大于外网代理解析 比如qq.com你这个软件做了虚拟解析到内网IP 就相当于劫持了解析
这个软件也支持泛域名解析
回复

使用道具 举报

6#
发表于 2024-7-8 14:55:01 | 只看该作者
hosts 不支持通配符域名吧

点评

如果是这需求,我有脚本。 晚点给你  详情 回复 发表于 2024-7-8 16:17
嗯 不支持 那就多条 或者说替代Hosts文件,这样更简单  详情 回复 发表于 2024-7-8 14:58
回复

使用道具 举报

7#
 楼主| 发表于 2024-7-8 14:58:46 | 只看该作者
BEIKING 发表于 2024-7-8 14:55
hosts 不支持通配符域名吧

嗯 不支持 那就多条 或者说替代Hosts文件,这样更简单
回复

使用道具 举报

8#
发表于 2024-7-8 15:05:40 | 只看该作者
这个方法好,谢谢分享
回复

使用道具 举报

9#
发表于 2024-7-8 16:17:27 | 只看该作者
BEIKING 发表于 2024-7-8 14:55
hosts 不支持通配符域名吧

如果是这需求,我有脚本。
晚点给你

点评

老大 帮忙写下 我觉得可以改进下 先备份下源hosts,命名位hostsbak 然后判断是否内网,如果是内网,则在hosts后面追加劫持。如果是外网,则将现有hosts改名hostsx,将备份的hostsbak改名位hosts。 这样更  详情 回复 发表于 2024-7-8 16:39
回复

使用道具 举报

10#
 楼主| 发表于 2024-7-8 16:39:56 | 只看该作者
BEIKING 发表于 2024-7-8 16:17
如果是这需求,我有脚本。
晚点给你

老大 帮忙写下  我觉得可以改进下

先备份下源hosts,命名位hostsbak

然后判断是否内网,如果是内网,则在hosts后面追加劫持。如果是外网,则将现有hosts改名hostsx,将备份的hostsbak改名位hosts。

这样更完美!
回复

使用道具 举报

11#
发表于 2024-7-8 21:22:14 | 只看该作者
  1. @echo off
  2. if /i "%UserName%" == "SYSTEM" (Set PE=1&Goto GotAdmin) else (reg query "HKLM\SYSTEM\ControlSet001\Control\MiniNT" 1>nul 2>nul&&(Set PE=1&Goto GotAdmin))
  3. :BatchGotAdmin
  4. Set "_Args=%* "
  5. if `%1` neq `` Set "_Args=%_Args:"=""%"
  6. if exist %WinDir%\System32\fltMC.exe fltMC 1>nul 2>nul||mshta VBScript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c """"%~f0"" %_Args%""",,"runas",1)(Window.Close) 2>nul&&Exit /b

  7. :GotAdmin
  8. Title Hosts&if exist %WinDir%\System32\ureg.dll Mode 36,6 2>nul
  9. REM 环境检查
  10. find /? 1>nul 2>nul&&Set "findstr=find /i "||Set findstr=
  11. findstr /? 1>nul 2>nul&&Set "findstr=findstr /i /c:"
  12. if not defined findstr echo "找不到 find.exe 文件,按任意键退出 。。。"&Pause >nul&Exit /b
  13. ping /? 1>nul 2>nul||(echo "找不到 ping.exe 文件,按任意键退出 。。。"&Pause >nul&Exit /b)
  14. REM 配置参数
  15. Set "serIP=10.10.10.80" :: 用于检测是否为内网的服务器IP
  16. Set "mapIP=127.0.0.1"   :: 网址映射IP,通常是 127.0.0.1
  17. REM 检测是否为内网 (检测2次)
  18. echo.&echo.&echo      正在检测网络,请稍候。。。
  19. ping %SerIP% -n 1 1>nul 2>nul&&(Set lan=1&Goto MapIP)||Set lan=0
  20. ping %SerIP% -n 1 1>nul 2>nul&&Set lan=1||Set lan=0

  21. :MapIP
  22. if "%lan%" == "1" (
  23.     Call :HostsMap "+::%mapIP% www.qq.com"
  24.     Call :HostsMap "+::%mapIP% www.baidu.com"
  25.     Call :HostsMap "+::%mapIP% www.sina.com.cn"
  26.     Cls&Color 2f&echo.&echo.&echo      内网,已添加 Hosts 映射。
  27. ) else (
  28.     Call :HostsMap "-::%mapIP% www.qq.com"
  29.     Call :HostsMap "-::%mapIP% www.baidu.com"
  30.     Call :HostsMap "-::%mapIP% www.sina.com.cn"
  31.     Cls&Color cf&echo.&echo.&echo      非内网,已取消 Hosts 映射。
  32. )
  33. if exist %WinDir%\System32\timeout.exe (timeout /t 2 >nul) else if exist %WinDir%\System32\choice.exe (choice /t 2 /d y /n >nul) else ping 127.1 -n 2 >nul
  34. Exit /b

  35. :HostsMap :: 修改 Hosts 文件,调用格式 Call :HostsMap "+::127.0.0.1 app.drivereasy.com"
  36. Set "hosts=%SystemRoot%\System32\Drivers\etc\hosts"
  37. attrib -s -h -r "%hosts%" 1>nul 2>nul
  38. Setlocal EnableDelayedExpansion
  39. for %%a in (%*) do (
  40.     Set "param=%%~a"&if "!param:~1,2!" == "::" (
  41.         if "!param:~0,1!" == "+" (
  42.             %findstr%"!param:~3!" <"%hosts%" 1>nul 2>nul||>>"%hosts%" echo !param:~3!
  43.         ) else if "!param:~0,1!" == "-" (
  44.             %findstr%"!param:~3!" /v <"%hosts%" >"%hosts%.mod"
  45.             move /y "%hosts%.mod" "%hosts%" 1>nul 2>nul
  46.         )
  47.     )
  48. )
  49. Endlocal&Goto :eof
复制代码


点评

比我的复杂点 我学习下  详情 回复 发表于 2024-7-9 11:03

评分

参与人数 1无忧币 +5 收起 理由
董大 + 5 赞一个!

查看全部评分

回复

使用道具 举报

12#
发表于 2024-7-9 08:28:48 | 只看该作者
谢谢分享
回复

使用道具 举报

13#
 楼主| 发表于 2024-7-9 11:03:24 | 只看该作者

比我的复杂点 我学习下
回复

使用道具 举报

14#
发表于 2024-7-9 17:01:49 | 只看该作者
这个方法好,谢谢分享!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-29 07:12

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表