原理解析


FRP是一款用于内网穿透的软件,架设在公网环境中,其原理就是通过中转的公网网络端口进行内网端口的映射,使内网服务可以通过公网进行访问

例如

内网 192.168.3.100:80 HTTP服务
公网服务器 119.28.29.119
在公网服务器上安装FRP服务端,在内网机器上运行FRP客户端
192.168.3.100:80 >>> 119.28.29.119:80
[服务端端口随意,但唯一]
这样通过访问 119.28.29.119:80
实际上就是访问 192.168.3.100:80
不仅支持http,还可以支持TCP,UDP,socks管道,简单文件服务器,TLS本地证书指定,P2P等任意协议。
FRP是开源的而且作者目前仍在更新中,github开源地址 https://github.com/fatedier/frp

{dotted startColor="#ff6c6c" endColor="#1989fa"/}

搭建实战


原版frp服务端有二进制版本和源代码版本,我们这次通过一键脚本进行安装带有web面板的frp服务端,脚本来源于github用户https://github.com/MvsCode/frps-onekey
由于国内网络环境下载不正常,我也会放一个修改后的脚本在本页面提供下载 install-frps.sh

服务端搭建操作


通过ssh连接您的服务器,操作系统支持debian系列和redhat系列,也就是centos与ubuntu都支持。
将下载的脚本放入您创建的文件夹,log日志会保存在同文件夹下,所以请不要在根目录进行操作。
下面是一些命令。

#直接通过wget 或者 curl下载,wget某些系列没有自带安装,所以先安装wget
#centos为例
yum install wget -y
wget https://raw.githubusercontent.com/MvsCode/frps-onekey/master/install-frps.sh
chmod 0777 install-frps.sh
bash install-frps.sh install

以上命令执行正常应该进入了脚本界面
1.png
2.png
一些关键信息:

  1. bind_port FRP连接端口
  2. vhost_http_port HTTP的端口
  3. vhost_https_port HTTPS的端口
  4. dashboard_port FRP面板端口
  5. 默认admin为面板账号
  6. dashboard_pwd 面板密码,默认自动生成
  7. token FRP鉴权密码,默认自动生成
  8. subdomain_host 子域名host,默认本机
  9. max_pool_count 最大连接数目
  10. log_level 日志等级
  11. log_max_days 日志保存天数
  12. log_file 可以选择开关日志记录,默认开
  13. tcp_mux TCP的连接复用,可以提高性能,建议默认开
  14. kcp support KCP的支持,默认开
  15. 选择完上述信息,进可以回车继续,会自动连接到对应选择的地址进行下载FRP服务端二进制主程序,如果失败或者长时间没有反应,大概率本地网络问题导致,多次重试或者更换下载地址尝试。

3.png
脚本执行完毕显示如上界面代表安装已成功,此后可以通过简易命令进行控制
首次安装完 使用frps start 启动FRP服务端

    frps status manage : frps {start|stop|restart|status|config|version}
    Example:
      start: frps start
       stop: frps stop
    restart: frps restart

如需卸载,通过执行脚本文件
bash install-frps.sh uninstall
可以通过服务器公网:dashboard_port,进入web面板查看,用户名和密码为您自行配置的,如遗忘可通过
frps config 进行查看。


客户端连接


通过 https://github.com/fatedier/frp/releases
下载对应系统的客户端程序
windows为例 https://github.com/fatedier/frp/releases/download/v0.45.0/frp_0.45.0_windows_amd64.zip
下载后解压,文件夹内即可看到 frpc.exe
开始编写配置文件,在frpc.exe同文件夹内创建文本文件,修改名称为frpc.ini,后缀记得为.ini
填入FRP服务器信息和你需要进行映射的服务,然后打开cmd或者powershell执行frpc.exe,如图所示,提示
start proxy success,代表FRP已经映射成功。
4.png

关键信息

[common]
#这里是默认的不可修改
server_addr = FRP服务端地址
server_port = FRP服务端的Bind port
token = FRP服务端token

[web]
#这里是你的服务名,可自由填写,不可重复
type = http  #服务类型,有tcp, udp, http, https, stcp, sudp, xtcp, tcpmux
local_port = 80
#你要映射的本地端口,对等映射,公网地址同端口,使用 服务器IP:80 访问 本地IP:80端口
custom_domains = blog.noccd.cn
#访问映射的host名

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
#通过remote_port 进行非对等映射,使用 服务器IP:6000 访问 本地IP:22端口

复制以上配置需要去掉注释信息,否则无法运行
更多配置信息查看官方文档
https://gofrp.org/docs/reference/proxy/