+
95
-

frp如何实现内网穿透与反向代理?

frp如何实现内网穿透与反向代理?

网友回复

+
15
-

什么是FRP?

Frp (Fast Reverse Proxy) 是比较流行的一款免费开源用于内网穿透的反向代理应用,它支持 TCP、UDP 协议, 也为 http 和 https 协议提供了额外的支持。你可以粗略理解它是一个中转站, 帮你实现 公网 ←→ FRP(服务器) ←→ 内网 的连接,让内网里的设备也可以被公网访问到。 800_auto

而目前 FRP 还推出了“点对点穿透”的试验性功能,连接成功后可以让公网设备直接跟内网设备“点对点”传输,数据流不再经过 VPS 中转, 这样可以不受服务器带宽的限制,传输大文件会更快更稳定。当然,此功能并不能保证在你的网络环境 100% 可用,而且还要求访问端也得运行 FRP 客户端 (因此目前手机是无法实现的,只有电脑可以)。由于实现条件较多,所以有文件传输需求的朋友还是建议买带宽稍大一点的 VPS 会比较省心。

github地址:https://github.com/fatedier/frp

安装FRP

首先我们得要有一台有公网ip的服务器,比如各大云服务器。然后我们就需要去服务器上安装服务端。

服务端安装与配置

FRP 使用 Go 语言开发,可以支持 Windows、Linux、macOS、ARM 等多平台部署。FRP 安装非常容易,只需下载对应系统平台的软件包并解压就可用了。 这里以Linux系统Ubuntu 18.04为例:

首先下载对应的安装包。自行选择对应的版本 https://github.com/fatedier/frp/releases

curl -# -LJO https://github.com/fatedier/frp/releases/download/v0.34.3/frp_0.34.3_linux_amd64.tar.gz

没有安装curl要先安装curl当然wget同样也能下载

wget https://github.com/fatedier/frp/releases/download/v0.34.3/frp_0.34.3_linux_amd64.tar.gz

使用tar指令解压tar.gz文件 tar -zxvf frp_0.34.3_linux_amd64.tar.gz

进入解压后的文件夹 由于我们是服务端所以只需要关注frps相关文件就行了 - 接下来我们开始对服务端进行配置 vim frps.ini
[common]
bind_port = 7000
bind_addr = 0.0.0.0
token = 123456

dashboard_port = 37500
dashboard_user = admin
dashboard_pwd = admin

[common]部分是必须有的配置,其中bind_port是自己设定的frp服务端端口,bind_addr是绑定的ip地址默认为0.0.0.0即本机的所有ip地址。 token用于验证连接,只有服务端和客户端token相同的时候才能正常访问。如果不使用token,那么所有人都可以直接连接上,所以建议大家在使用的时候还是把token加上。 而下面的[dashboard]仪表盘的配置(可以不配置) 配置了的化可以访问服务器ip:dashboard_port 通过dashboard_user和dashboard_pwd登陆后查看frp服务器状态

800_auto

服务端这样配置就可以了,其他高级功能请参考官方文档。 - 启动服务端 ./frps -c frps.ini 当然我们也可以把frps注册成系统服务,避免每次重启系统都要去手动启动。 sudo vim /lib/systemd/system/frps.service 然后在frps.service文件里写入:
[Unit]
Description=frp server
After=network.target

[Service]
Type=simple

ExecStart=/your path/frps -c /your path/frps.ini
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID

[Install]
WantedBy=multi-user.target

然后就可以启动frps了 sudo systemctl start frps 打开自启动 sudo systemctl enable frps 查看状态和日志信息: sudo systemctl status frps

如果要重启应用,可以这样,sudo systemctl restart frps 如果要停止应用,可以输入,sudo systemctl stop frps 到这里服务端已经配置完成,你已经可以访问你的frp仪表盘了。

客户端的配置

首先客户端也要先去下载对应的安装包。自行选择对应的版本 https://github.com/fatedier/frp/releases

然后我们需要对frpc.ini进行配置 这里以windows远程文件共享为例

[common]
# 服务器的公网地址
server_addr = X.X.X.X
# 7000为服务端frp与客户端frp相互通信的端口就是我们服务端配置的监听端口
server_port = 7000
token = 123456

[smb]
# win10文件共享smb协议通过tcp通信
type = tcp
local_ip = 127.0.0.1
# smb协议的本地端口
local_port = 445
# 设定远程端口,当访问服务器的7002端口时,数据会被转发到本地445端口
remote_port = 7002

其他配置类似,请参考官方文档。 - 接着我们就可以启动客户端了。 powershell启动客户端frp ./frpc -c frpc.ini

使用具有访问smb服务器能力的软件进行访问。我是用ios的FileExplorer和nPlayer进行访问的。软件设置主机地址为X.X.X.X,端口为7002。注意,有些软件不能设置smb服务器的端口,比如OPlayer,它只能使用默认的445端口,所以要把remote_port配置成445才可以使用。

当然我们还可...

点击查看剩余70%

我知道答案,我要回答