内网穿透

利用FRP访问校园网服务

Posted by Gavin on November 30, 2019

迟迟钟鼓初长夜

耿耿星河欲曙天

前言

需求

我们往往会产生在家想要访问工作环境的需求,比如放寒假回家了,我想要访问学校知网,但是知网会认证学校IP呀,一般来说,学校往往会提供VPN或RVPN服务,但是,如果不提供怎么办呢?这时就需要使用内网穿透技术了。
内网穿透技术本质上是在内网和外网之间建立稳定通道的技术,如下图所示,笔记本想要ssh登陆内网服务器,但是不在同一局域网下,内网服务器又没有公网IP,只是通过网关路由进行网络地址转换,将内网IP转换成公网IP(NAT协议),因此我们无法找到内网服务器。内网穿透技术则是引入一台具有公网IP的服务器作为跳板,首先内网服务器和公网服务器建立稳定的连接,笔记本则将请求转发给公网服务器,通过公网服务器再将请求通过建立的连接转发给内网服务器,则达到了外网使用内网服务资源的目的。

FRP

FRP是一个快速反向代理框架,可以将NAT或防火墙内的本地服务暴露给外网,其支持多种协议,如TCPUDPHTTPHTTPS等等,目前甚至支持点对点穿透。

FRP在具有公网IP的服务器上部署FRP服务端(FRPS),负责与内网服务建立和保持连接,并转发用户的请求给内网服务。在内网服务器上需要部署一个FRP客户端(FRPC),用来保持和公网IP的连接。


部署校园服务代理

下载并安装FRP

  1. 下载FRP

     wget https://github.com/fatedier/frp/releases/download/v0.30.0/frp_0.30.0_linux_amd64.tar.gz
    
  2. 解压缩

     tar -zxvf frp_0.30.0_linux_amd64.tar.gz
     mv frp_0.30.0_linux_amd64 frp
    

服务端

  1. 修改frps.ini

     [common]
     bind_port = 7000#改成你所需要的端口
    
  2. 启动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
    

客户端

  1. 修改frpc.ini

     [common]
     server_addr = xxx.xxx.xxx.xxx #公网服务器IP
     server_port = 7000
    	
     [http_proxy]
     type = tcp
     remote_port = 6000
     plugin = http_proxy
    
  2. 启动frpc

     ./frpc -c ./frpc.ini
    

浏览器

这时内网服务器和公网服务器已经建立好连接了,我们只需释放公网服务器6000端口(用于转发请求),并配置好个人PC的代理就行了。


资源