校园网代理服务的实现

网络 shadowsocks haproxy

> 校园网有诸多好处:有ipv6、可以免费下载知网网站等论文。在家里如果想要连接校园网,如果学校不提供vpn的话就很麻烦。 ##方案一:学校提供校园网VPN 直接利用`VPN`服务即可 ##方案二:有具有公网ip的校园网服务器 直接在该服务器上搭建`ss代理服务器`或`VPN`即可。 ##方案三:有校园网服务器(无公网ip) 可以利用`花生壳`、`nat123`等付费的内网穿透服务。 该方案的__原理__是:个人内网服务器下载花生壳客户端,并与花生壳服务器建立TCP链接(NAT端口实现绑定,和QQ的内网传统原理是一样的)。 用户发送请求到花生壳的服务器,花生壳服务器再发送请求到个人内网服务器。(该方案由于利用了花生壳的服务器进行了转发,占用了带宽,所以花生壳会收取费用收回成本。如果需求量不是很大的话这样也可以。) ##方案四:有校园网服务器(有ipv6)+有公网服务器(带有ipv6) 我个人采用了这个方案。我在实验室放置了一台带`ipv6`和`局域网ipv4`的服务器;个人还有一个`bandwagon`的`VPS`。 先在校园网的服务器上搭建代理服务(比如`shadowsocks`或`VPN`),然后再在公网服务器上安装`haproxy`。(`haproxy`可以实现端口代理转发)。 在`/etc/haproxy/haproxy.cfg`进行如下设置(请自行替换中括号中的ip和port): ``` global ulimit-n 800000 defaults log global mode tcp option dontlognull timeout connect 10000 timeout client 300000 timeout server 300000 frontend ss-in mode tcp bind *:[想要代理的本地端口] default_backend ss-out backend ss-out server server1 [校园网服务器的ipv6地址]:[校园网ss服务器端口] ``` 之后运行`nohup /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg &`即可。 之后使用ss客户端填写`公网服务器的地址`和`[想要代理的本地端口]`即可使用代理。 #### 原理 校园网服务器具有ipv6,而公网VPS也具有ipv6,所以二者可以互相直连ping通。因此,在公网vps上实现一个端口代理转发即可。这里使用的工具是`haproxy`。这种代理方式下,用户访问代理时,会将请求发送到公网服务器,公网服务器转发到校园网服务器(通过ipv6),之后再从校园网服务器原路返回到公网服务器和用户。总延迟较大。延迟例如:我的VPS在美国,到中国都是200ms,那么总延迟约200ms*4=800ms。 ![](https://file.hurray0.com/uploads/menu/40/53a7cae6f7d91023f20733b6406021ed.PNG) 上图为我在手机上通过联通流量代理登录六维的截图(六维只支持ipv6的cernet环境(只有ipv6或只有校园网都不行,也就是限制ipv6地址范围)),因此可以验证代理成功。 ##方案五:有校园网服务器+有公网服务器(有一个没有ipv6或全没有ipv6) 这种情况下实现方法和方案三类似,只不过是自己实现转发服务。 网上较成熟的方案有:`frp`和`ngrok`等。这里有一篇知乎可以作为参考 [https://www.zhihu.com/question/49629610]()