【问题标题】:Batch script to bypass VPN for certain domains用于绕过某些域的 VPN 的批处理脚本
【发布时间】:2016-02-02 23:57:21
【问题描述】:

我使用 VPN 服务已有一段时间了,但某些网站 (twitch.tv) 不允许我通过 VPN 连接到它们。所以我在 Windows 上查找了如何绕过这些域的 VPN 并找到了静态路由。

我想如何做到这一点是在启动时运行一个批处理文件,该文件会自动路由一组给定的所有 IP 地址 域。

  • 独立于默认网关地址
  • 独立于使用的网络适配器
  • 域更改 IP 地址后无需调整
  • 处理整个域 IP 地址集(nslookup?)

这是我通过反复试验得出的结论。

@echo off

FOR /F "tokens=3" %%F in (
    'route print ^|findstr "\<0.0.0.0\>"'
) Do if not defined DefaultGateway set "DefaultGateway=%%F"

FOR /F "tokens=2" %%F in ('nslookup twitch.tv') DO (
    SET var1=%%F
)
route -p add %var1% mask 255.255.255.255 %DefaultGateway%

FOR /F "skip=5 tokens=1" %%F IN ('nslookup twitch.tv') DO (
   route -p add %%F mask 255.255.255.255 %DefaultGateway%
)

我想你可以看出这是我从 SO 上的 sn-ps 创建的一些可怕的科学怪人代码。它现在可以工作,但我怎样才能让它更优雅?第二个和第三个 FOR 循环可以合并为一个吗?如何做到这一点,以便如果我要添加一个新域,我可以将其添加到列表中,而不是添加另外 2 个 FOR 循环?

【问题讨论】:

    标签: windows batch-file automation network-programming vpn


    【解决方案1】:

    我一直在使用这个批处理文件:

    set domains=twitch.tv google.com some-domain.com
    
    for /f "tokens=3" %%a in ('route print ^| findstr "\<0.0.0.0\>"') do (
        for %%d in (%domains%) do (
            for /f "tokens=1,2 skip=4" %%b in ('nslookup %%d 2^>nul') do (
                if "%%c"=="" (route add %%b %%a) else (route add %%c %%a)
            )
        )
        goto done
    )
    :done
    

    它抓取第一个0.0.0.0路由的网关并使用它来添加指定域的路由,它们的IP地址通过nslookup获取。

    它计划在通过Task Scheduler -&gt; Microsoft -&gt; Windows -&gt; Ras 使用触发器On an event / Application / RasClient / 20225 建立连接时运行。

    【讨论】:

    • 试用了这个,还是不行。它不完全“独立于使用的网络适配器”。它为我从错误的适配器获取默认网关。
    • 此外,“nslookup -query^=any [domain]”命令并不总是返回互联网地址。
    • 不,我仍然收到来自某些域的“draft-jabley-dnsop-refuse-any”响应。我认为有些人不会响应 QTYPE=ANY 查询。
    • 几乎是对的,"[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*" 很好,但现在它还为 dns 服务器添加了一个静态路由(nslookup 返回的第一个 IP 地址)。此外,tokens=4 返回我的本地 ip 而不是默认网关。在我的情况下,它真的必须是 3 哈哈。
    • 这行得通!如果您更新您的 OP,我可以接受它作为答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    • 2014-06-14
    • 1970-01-01
    • 2014-12-03
    相关资源
    最近更新 更多