frp 高性能反代程序,轻松实现多平台内网穿透,网站穿透实例记录

关于反代和穿透工具,之前在 XTunnel 介绍 的一文中提及过frp,和项目已经被商用的xtunnel相比,frp仍然秉持开源精神,在Github上的项目至今依旧活跃,虽然没有提供GUI,但只需简单配置客户端与服务端,一行命令就能完成内网穿透,今天简单介绍一下,并记录一个frp的普通应用场景:frp Windows 客户端+frp Linux 服务端+域名,实现无公网IP PC内网网站映射外网访问

如果你是第一次接触frp,可以看下面引用自frp的官方说明文档,官方教程已经足够详细了,本文只对场景做简单记录,程序涉及到的更多配置参数见 frp Github 中文文档

frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, udp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发。

frp 的作用

利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。

对于 http 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。

利用处于内网或防火墙后的机器,对外网环境提供 tcp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机。

可查看通过代理的所有 http 请求和响应的详细信息。(待开发)

开始前

需要用到的工具:1台能访问外网的Windows PC电脑,1台带有公网IP的Linux VPS,1个可自主解析的域名。

服务端配置(Linux)

1.根据系统版本,从Releases 页面选择对应的程序包,登陆VPS SSH并上传或wget至服务器。

wget --no-check-certificate https://github.com/fatedier/frp/releases/download/v0.9.3/frp_0.9.3_linux_amd64.tar.gz
tar zxvf frp_0.9.3_linux_amd64.tar.gz
cd frp_0.9.3_linux_amd64

本次以Ubuntu 14.04 64bit为例,截止博客发文为止最新版本为0.9.3

2.删除默认服务端配置文件frps.ini,重新创建并编辑

rm frps.ini && vi frps.ini

注意:官方下载过来的压缩包内包含2个配置文件,客户端(frpc.ini)和服务端(frps.ini),本次使用Linux作为服务端,所以需要修改frps.ini,不要搞混了!

3.进入vi编辑界面,添加一个配置

[common]
bind_port = 7000
vhost_http_port = 80
 
[web]
type = http
custom_domains = frp.1w.nz
auth_token = 123

以上配置简单来说就是定义一个http反向代理,名为: web ,设置 http 访问端口:80,绑定自定义域名 frp.1w.nz ,其中bind_port是服务端与客户端握手时的端口,auth_token相当于验证密码,https 服务配置方法相同, vhost_http_port 替换为 vhost_https_port, type 设置为 https 即可。

4.保存退出vi界面,安装 Screen,为运行frp新建一个名为frp的终端会话:

Debian & ubuntu:

apt-get -y install screen && screen -S frp

CentOS:

yum -y install screen && screen -S frp

为了方便执行其他操作,保证frp服务不被中断,需要新建一个会话,让frp保持后台运行。

5.最后启动 frp 服务端,即可完成服务端操作。

./frps -c ./frps.ini

域名绑定

将服务端配置文件中设置的域名解析至Linux VPS 的公网IP

客户端配置(Windows)

1.根据系统版本,从Releases 页面选择对应的Windows 程序包,下载解压。

https://github.com/fatedier/frp/releases/download/v0.9.3/frp_0.9.3_windows_amd64.zip

本次以Windows 10 64位为例,截止博客发文为止最新版本为0.9.3

2.清空默认客户端配置文件frpc.ini,重新添加一个客户端配置

[common]
server_addr = 104.1xx.xx.xx
server_port = 7000
auth_token = 123

[web]
type = http
local_port = 80

依然要注意服务端和客户端的配置文件区别,本次使用Windows作为客户端,所以需要修改frpc.ini,以上配置基本根据服务端相对应地填写即可,参数必须一致,需要修改的主要是server_addr(填写Linux VPS 公网 IP)和local_port(填写本地网站应用的端口),最后再确认一下客户端服务端的握手端口、以及验证码是否一致,

3.确认无误后,运行程序目录下的frpc.exe,看到成功提示即表示连接成功。

4.再来看看服务端的运行日志

其他参数与功能

frp也同样支持多条反代记录,如果你需要和朋友共用frp,也可以在配置文件中添加一个自定义二级域名,还有更多的应用场景需要用到的参数与配置,详见 frp Github 中文文档,这里不赘述。

点赞