背景
我知道 VPN ,我也在用 VPN ,VPN 确实很方便,连上之后直接访问内网地址就可以获取到各项服务
但是,能不能再直接一点呢,比如临时给朋友开个 Web 页面传个文件什么的,用 VPN 还得教他半天,如果能直接浏览器打开那确实是挺好的
考虑到有朋友说路由器管理页面被主动探测到,又有朋友说 ocserv 运行几年毛事没有,也有朋友说裸 TLS 连接(内部没有 HTTP 协议,浏览器无法直接访问)也没啥问题,猜测运营商对于『家宽开 Web 服务』(此处仅讨论非标端口,80/443 就不必说了)大概可能会有这几种:
- 对于裸 TLS 连接拦截较少
- 模拟浏览器访问(比如 curl ),看看有没有内容(比如 HTTP 头)返回
- 同 1 ,但是判定更严谨,检查返回码是不是 200 (或者其他方式来判定是不是可以直接访问)
测试
以下测试都假定已有可用的 TLS 环境(毕竟直接裸 HTTP 连接的话,是个人都知道你在干啥)
nginx 对于拒绝非合法访问,有个选项是 deny all ,但是实测 deny all 也会返回 HTTP 403 ,在某些运营商那里可能会被判定为情况 2 。因此我测试了一下 return 444 ,对于非白名单路径(实例是 private_path_as_a_token )指示 nginx 直接切断连接
相关配置如下
location / {
keepalive_timeout 0;
return 444;
}
location /private_path_as_a_token {
root /home/html;
index index.html;
}
测试发现,在访问非白名单路径的时候(比如此时的根目录)确实会直接切断 TCP 连接,站在浏览器的角度看就是,这并非一个 HTTP 服务器:
* Trying 10.0.0.233:8000...
* Connected to 10.0.0.233 (10.0.0.233) port 8000 (#0)
> GET / HTTP/1.1
> Host: 10.0.0.233:8000
> User-Agent: curl/8.0.1
> Accept: */*
>
* Empty reply from server
* Closing connection 0
curl: (52) Empty reply from server
现在的问题是,如果我通过这个方式,在公网 IP (我的是公网 v6 )上开放 HTTPS 服务,是否能规避一定程度上的运营商主动探测?
望各位朋友不吝赐教