迟迟钟鼓初长夜
耿耿星河欲曙天
前言
需求
我们往往会产生在家想要访问工作环境的需求,比如放寒假回家了,我想要访问学校知网,但是知网会认证学校IP呀,一般来说,学校往往会提供VPN或RVPN服务,但是,如果不提供怎么办呢?这时就需要使用内网穿透技术了。
内网穿透技术本质上是在内网和外网之间建立稳定通道的技术,如下图所示,笔记本想要ssh登陆内网服务器,但是不在同一局域网下,内网服务器又没有公网IP,只是通过网关路由进行网络地址转换,将内网IP转换成公网IP(NAT协议),因此我们无法找到内网服务器。内网穿透技术则是引入一台具有公网IP的服务器作为跳板,首先内网服务器和公网服务器建立稳定的连接,笔记本则将请求转发给公网服务器,通过公网服务器再将请求通过建立的连接转发给内网服务器,则达到了外网使用内网服务资源的目的。
FRP
FRP是一个快速反向代理框架,可以将NAT或防火墙内的本地服务暴露给外网,其支持多种协议,如TCP、UDP、HTTP、HTTPS等等,目前甚至支持点对点穿透。
FRP在具有公网IP的服务器上部署FRP服务端(FRPS),负责与内网服务建立和保持连接,并转发用户的请求给内网服务。在内网服务器上需要部署一个FRP客户端(FRPC),用来保持和公网IP的连接。
部署校园服务代理
下载并安装FRP
-
下载FRP
wget https://github.com/fatedier/frp/releases/download/v0.30.0/frp_0.30.0_linux_amd64.tar.gz
-
解压缩
tar -zxvf frp_0.30.0_linux_amd64.tar.gz mv frp_0.30.0_linux_amd64 frp
服务端
-
修改frps.ini
[common] bind_port = 7000#改成你所需要的端口
-
启动frps
./frps -c ./frps.ini
2019/11/30 08:19:02 [I] [service.go:141] frps tcp listen on 0.0.0.0:7000 2019/11/30 08:19:02 [I] [root.go:205] start frps success
客户端
-
修改frpc.ini
[common] server_addr = xxx.xxx.xxx.xxx #公网服务器IP server_port = 7000 [http_proxy] type = tcp remote_port = 6000 plugin = http_proxy
-
启动frpc
./frpc -c ./frpc.ini
浏览器
这时内网服务器和公网服务器已经建立好连接了,我们只需释放公网服务器6000端口(用于转发请求),并配置好个人PC的代理就行了。