| 2021-04-12
目前在国内的网络环境,学校和小区内的用户通常都没有公网IP,没有公网IP是对开发很不方便的事情。而frp 是一个高性能的反向代理应用,它体积轻量但功能很强大。可以很容易实现路由器frp内网穿透功能,那么该如何实现路由器frp内网穿透呢?下面小编给大家讲解下。
frp内网穿透主要用于没有公网IP的用户,实现远程桌面、远程控制路由器、 搭建的WEB、FTP、SMB文件服务器被外网访问、远程查看摄像头、调试一些远程的API(比如微信公众号,企业号的开发)等。
一、实现的前提
1、nas处于内网,比如小区宽带、移动宽带。
2、有个有公网ip的服务器,比如阿里云的ECS服务器
二、实现原理
1、在阿里云的ECS服务器上安装frp服务端软件,当然你得有固定ip,然后在nas上安装frp客户端软件。
2、这样外网访问nas的时候就是通过阿里云的ECS服务器转发到家里的nas来实现。
FRP内网穿透工具的配置:
配置 FRP 内网穿透工具的前提条件是需要一台具有公网 IP 的设备,得益于 FRP 是 Go 语言开发的,具有良好的跨平台特性。你可以在 Windows、Linux、MacOS、ARM等几乎任何可联网设备上部署。
这里以 Linux 为例,FRP 默认给出两个服务端配置文件,一个是简版的 frps.ini,另一个是完整版本 frps_full.ini。
我们先来看看简版的 frps.ini,通过这个配置可以快速的搭建起一个 FRP 服务端。
$ cat frps.ini
[common]
bind_port = 7000
默认配置中监听的是 7000 端口,可根据自己实际情况修改。
启动 FRP 服务端
$ ./frps -c ./frps.ini
2018/01/25 10:52:45 [I] [service.go:96] frps tcp listen on 0.0.0.0:7000
2018/01/25 10:52:45 [I] [main.go:112] Start frps success
2018/01/25 10:52:45 [I] [main.go:114] PrivilegeMode is enabled, you should pay more attention to security issues
通过上面简单的两步就可以成功启动一个监听在 7000 端口的 FRP 服务端。
FRP内网穿透工具客户端配置
和 FRP 服务端类似,FRP 默认也给出两个客户端配置文件,一个是简版的 frpc.ini,另一个是完整版本 frpc_full.ini。
这里同样以简版的 frpc.ini 文件为例,假设 FRP 服务端所在服务器的公网 IP 为 4.3.2.1。
$ vim frpc.ini
[common]
# server_addr 为 FRP 服务端的公网 IP
server_addr = 4.3.2.1
# server_port 为 FRP 服务端监听的端口
server_port = 7000
启动 FRP 客户端
$ ./frpc -c ./frpc.ini
2018/01/25 11:15:49 [I] [proxy_manager.go:284] proxy removed: []
2018/01/25 11:15:49 [I] [proxy_manager.go:294] proxy added: []
2018/01/25 11:15:49 [I] [proxy_manager.go:317] visitor removed: []
2018/01/25 11:15:49 [I] [proxy_manager.go:326] visitor added: []
2018/01/25 11:15:49 [I] [control.go:240] [83775d7388b8e7d9] login to server success, get run id [83775d7388b8e7d9], server udp port [0]
这样就可以成功在 FRP 服务端上成功建立一个客户端连接,当然现在还并不能对外提供任何内网机器上的服务,因为我们并还没有在 FRP 服务端注册任何内网服务的端口。
通过花生壳软件或者路由器设置端口映射来搭建一条直接和设备建立连接的通道,就可以实现内网穿透功能了。