![HTTP 服务器上的隧道](https://linux22.com/image/628427/HTTP%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84%E9%9A%A7%E9%81%93.png)
正如您所知,许多国家的审查制度阻止我们访问某些网站。
在土耳其,Facebook 和 Youtube 将受到审查。
我认为通过 HTTP 服务器传递这些审查将会很棒。
是否有任何脚本或应用程序可以让我们像隧道一样使用 HTTP 服务器?
或者,我该如何实现它,我将用什么?
我们将租用一台无限流量的服务器,供5-10个人使用,仅用于隧道传输。
答案1
您可以使用 OpenVPN。如果您使用监听端口 443 的 OpenVPN 服务器,则可能不会被过滤。但是,分析您的网络流量的人会知道您正在使用 OpenvPN:您可能希望避免这种情况。
如果您想避免这种情况,可以通过 HTTPS 代理连接到 OpenVPN 服务器。OpenVPN 知道如何使用 HTTP 代理,但不知道如何使用 HTTPs 代理,因此您必须使用 socat 之类的工具:
在localhost上使用socat转发到HTTPS代理(部署在OpenVPN服务器附近);
socat TCP-LISTEN:9999,bind=localhost OPENSSL:proxy.example.com:443
要求 OpenVPN 使用本地主机作为 HTTP 代理。
OpenVPN -(HTTP 代理)-> 本地代理解包器 -(TLS)-> HTTP 代理 -(OpenVPN/TCP)-> OpenVPN 服务器
答案2
您可能希望使用 PPP over SSL:
socat OPENSSL:ppp.example.com:443 EXEC:"sudo pppd nodetach noipdefault notty noauth 192.168.0.1:198.169.0.2"
或通过 HTTPS 代理的 PPP:
socat EXEC:"corkscrew www.exmaple.com 443 ppp.example.com 9999" EXEC:"sudo pppd nodetach noipdefault notty noauth 192.168.0.1:198.169.0.2"
答案3
如果您只想让人们访问网站,更简单的解决方案可能是设置具有 CONNECT 功能的 HTTPs 代理。
答案4
您可以设置 SSH 隧道并使用带有 corscrew 的 ProxyCommand 将其中继到 HTTPs(或普通 TLS)代理:
ssh ssh.example.com
和:
Tunnel point-to-point
ProxyCommand corkscrew proxy proxyport %h %p