frp搭建和使用

NAS2年前 (2023)更新 ENE
199 0 0

本文章参考:github frpNikon937Liorwongclangcnclangcn docker的文章

frp介绍

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

为什么使用frp?

通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:

  • 客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。
  • 采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间。
  • 代理组间的负载均衡。
  • 端口复用,多个服务通过同一个服务端端口暴露。
  • 多个原生支持的客户端插件(静态文件查看,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。
  • 高度扩展性的服务端插件系统,方便结合自身需求进行功能扩展。
  • 服务端和客户端 UI 页面。

    前置准备

  • 外网服务器一台(或者有公网ip的机器如阿里服务器)
  • 内网服务器一台(win10电脑)

    安装方法 1(较2繁琐一点)

    1. 下载脚本部署文件

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

注意事项:

  1. 服务器端和内网机器端下载的版本要相同,否则可能会影响内网穿透
  2. 根据服务器系统选择合适的脚本
  3. 脚本主要分为服务端与客户端文件
    • 外网服务器端用到的是Frps和Frps.ini
    • win10电脑用到的是Frpc和Frpc.ini
      注: 服务端部署,可以只保留服务端文件frps
      客户端部署,可以只保留客户端文件frpc

      2. 服务器端frps部署

      1. 解压压缩包并命重命名文件夹:

      创建frp文件夹,然后上传linux压缩包至文件夹并解压

      
      mkdir frp

tar xzvf frp_linux_386.tar.gz

mv frp_linux_386 frp

或者
```Linux
wget https://github.com/fatedier/frp/releases/download/v0.xx.0/frp_0.xx.0_linux_amd64.tar.gz

tar -zxvf frp_0.xx.0_linux_amd64.tar.gz

mkdir frp

mv  frp_0.xx.0_linux_386  frp</code></pre>
<h4>2. 配置</h4>
<ol>
<li>配置Frps.ini文件
<ul>
<li>进入frp文件夹下:cd frp,修改frps.ini文件 (vim frps.ini)
<pre><code class="language-frp">[common]
bind_addr = 0.0.0.0
#“bind_addr”内网穿透服务器端监听的IP地址,可以省略,默认为127.0.0.1
bind_port = 7000
#“bind_port”表示用于客户端和服务端连接的端口,这个端口号我们之后在配置客户端的时候要用到。
dashboard_port = 7500
#“dashboard_port”是服务端仪表板的端口,若使用7500端口,在配置完成服务启动后可以通过浏览器访问 x.x.x.x:7500 (其中x.x.x.x为VPS的IP)查看frp服务运行信息。
token = 12345678
“token”是用于客户端和服务端连接的口令,请自行设置并记录,稍后会用到
dashboard_user = admin
dashboard_pwd = admin
“dashboard_user”和“dashboard_pwd”表示打开仪表板页面登录的用户名和密码,自行设置即可。
vhost_http_port = 10080
vhost_https_port = 10443
“vhost_http_port”和“vhost_https_port”用于反向代理HTTP主机时使用,本文不涉及HTTP协议,因而照抄或者删除这两条均可。</code></pre></li>
<li>修改完成,:wq 退出</li>
</ul></li>
<li>启动命令
注:需要切换到文件目录
<pre><code class="language-frp">./frps -c frps.ini</code></pre>
<p>如果看到屏幕输出这样一段内容,即表示运行正常,如果出现错误提示,请检查上面的步骤。</p>
<pre><code class="language-frp">2019/01/12 15:22:39 [I] [service.go:130] frps tcp listen on 0.0.0.0:7000
2019/01/12 15:22:39 [I] [service.go:172] http service listen on 0.0.0.0:10080
2019/01/12 15:22:39 [I] [service.go:193] https service listen on 0.0.0.0:10443
2019/01/12 15:22:39 [I] [service.go:216] Dashboard listen on 0.0.0.0:7500
2019/01/12 15:22:39 [I] [root.go:210] Start frps success</code></pre>
<p>则说明服务器端已经启动Frp服务,监听的端口是7000。此时访问 x.x.x.x:7500 并使用自己设置的用户名密码登录,即可看到仪表板界面</p></li>
</ol>
<h4>服务端后台运行</h4>
<p>至此,我们的服务端仅运行在前台,如果Ctrl+C停止或者关闭SSH窗口后,frps均会停止运行,因而我们使用nohup命令将其运行在后台。
nohup命令相关地址:<a href="https://ehlxr.me/2017/01/18/Linux-%E7%9A%84-nohup-%E5%91%BD%E4%BB%A4%E7%9A%84%E7%94%A8%E6%B3%95/">https://ehlxr.me/2017/01/18/Linux-%E7%9A%84-nohup-%E5%91%BD%E4%BB%A4%E7%9A%84%E7%94%A8%E6%B3%95/</a></p>
<pre><code class="language-nohup">nohup ./frps -c frps.ini &</code></pre>
<p>输出如下内容即表示正常运行</p>
<pre><code class="language-nohup">nohup: ignoring input and appending output to &#039;nohup.out&#039;</code></pre>
<p>此时可先使用Ctrl+C关闭nohup,frps依然会在后台运行,使用jobs命令查看后台运行的程序</p>
<pre><code class="language-nohup">jobs</code></pre>
<p>在结果中我们可以看到frps正在后台正常运行</p>
<pre><code class="language-nohup">[1]+  Running                 nohup ./frps -c frps.ini &</code></pre>
<p>此时访问 x.x.x.x:7500 依然可以打开仪表板界面,至此,服务端即设置完成,你可以关闭SSH窗口了。</p>
<h3>3. win10客户端配置</h3>
<h4>1. 解压压缩包并命重命名文件夹:</h4>
<p>创建frp文件夹,然后下载的windows压缩包至文件夹并解压</p>
<h4>2. 内网服务配置</h4>
<ol>
<li>内网机器配置Frpc.ini
<ul>
<li>进入frp文件夹下找到frpc.ini右击Notepade打开
<pre><code class="language-frp">[common]
server_addr = xx.xx.xx.xx
#外网-服务器端ip
server_port = 7000
#外网-服务器端监听的端口(必须与Frps.ini中的配置一致)
token = 12345678
#“token”是你在服务器上设置的连接口令,原样填入即可</code></pre></li>
<li>修改完成,保存退出
<h4>4. 自定义规则</h4>
<p>frp实际使用时,会按照端口号进行对应的转发,原理如下图所示。</p></li>
</ul></li>
</ol>
<p>上面frpc.ini的rdp、smb字段都是自己定义的规则,自定义端口对应时格式如下。</p>
<ul>
<li>“[xxx]”表示一个规则名称,自己定义,便于查询即可。</li>
<li>“type”表示转发的协议类型,有TCP和UDP等选项可以选择,如有需要请自行查询frp手册。</li>
<li>“local_port”是本地应用的端口号,按照实际应用工作在本机的端口号填写即可。</li>
<li>“remote_port”是该条规则在服务端开放的端口号,自己填写并记录即可
<h4>5. 启动命令</h4>
<p>Ctrl+R 执行cmd需要再frp文件路径下执行</p>
<pre><code class="language-cmd">
./frpc -c frpc.ini</code></pre></li>
</ul>
<p>Ctrl+C停止服务</p>
<pre><code>#### 6. 启动日志
```frp
2019/03/23 17:28:21 **[I] [service.go:221] login to server success, get run id [3435ffb8820dbcf1], server udp port [0]**

2019/03/23 17:28:21 **[I] [proxy_manager.go:137] [3435ffb8820dbcf1] proxy added: [web]**

2019/03/23 17:28:21 **[I] [control.go:144] [web] start proxy success**

7. 客户端后台运行及开机自启

frpc运行时始终有一个命令行窗口运行在前台,影响美观,我们可以使用一个批处理文件来将其运行在后台,而且可以双击执行,每次打开frpc不用再自己输命令了。
在任何一个目录下新建一个文本文件并将其重命名为“frpc.bat”,编辑,粘贴如下内容并保存。

@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
REM
cd C:\frp
frpc -c frpc.ini
exit

之后直接运行这个 .bat 文件即可启动frpc并隐藏窗口(可在任务管理器中退出)。
至于开机启动,把这个 .bat 文件直接扔进Windows的开机启动文件夹就好了

4. 访问内网http服务

  1. 启动服务端frps服务成功
  2. 启动win10客户frpc服务成功
  3. 启动需要映射本机服务成功
  4. server_addr:local_port
  5. 访问成功,至此搭建成功!
  6. 更多帮助请移步官方帮助文件:https://github.com/fatedier/frp/blob/master/README_zh.md

    安装方法 2

    使用脚本由clangcn提供

    1. 服务器端frps部署

  7. 安装
    
    wget --no-check-certificate https://raw.githubusercontent.com/clangcn/onekey-install-shell/master/frps/install-frps.sh -O ./install-frps.sh

chmod 700 ./install-frps.sh

./install-frps.sh install

2. 安装步骤
```Linux
Loading network version for frps, please wait...
frps Latest release file frp_0.8.1_linux_amd64.tar.gz
#此步骤会自动获取frp最新版本,自动操作,无需理会
Loading You Server IP, please wait...
You Server IP:12.12.12.12
#自动获取你服务器的IP地址
Please input your server setting:

Please input frps bind_port [1-65535](Default Server Port: 5443):
#输入frp提供服务的端口,用于服务器端和客户端通信
Please input frps dashboard_port [1-65535](Default dashboard_port: 6443):
#输入frp的控制台服务端口,用于查看frp工作状态
Please input frps vhost_http_port [1-65535](Default vhost_http_port: 80):
#输入frp进行http穿透的http服务端口
Please input frps vhost_https_port [1-65535](Default vhost_https_port: 443):
#输入frp进行https穿透的https服务端口
Please input privilege_token (Default: WEWLRgwRjIJVPx2kuqzkGnvuftPLQniq):
#输入frp服务器和客户端通信的密码,默认是随机生成的
Please input frps max_pool_count [1-200](Default max_pool_count: 50):
#设置每个代理可以创建的连接池上限,默认50

##### Please select log_level #####
1: info
2: warn
3: error
4: debug
#####################################################
Enter your choice (1, 2, 3, 4 or exit. default [1]):
#设置日志等级,4个选项,默认是info

Please input frps log_max_days [1-30]
(Default log_max_days: 3 day):
#设置日志保留天数,范围是1到30天,默认保留3天。

##### Please select log_file #####
1: enable
2: disable
#####################################################
Enter your choice (1, 2 or exit. default [1]):
#设置是否开启日志记录,默认开启,开启后日志等级及保留天数生效,否则等级和保留天数无效

设置完成后检查你的输入,如果没有问题按任意键继续安装

============== Check your input ==============
You Server IP   : 12.12.12.12
Bind port       : 5443
Dashboard port  : 6443
vhost http port : 80
vhost https port: 443
Privilege token : WEWLRgwRjIJVPx2kuqzkGnvuftPLQniq
Max Pool count  : 50
Log level       : info
Log max days    : 3
Log file        : enable
==============================================

安装结束后显示:

Congratulations, frps install completed!
==============================================
You Server IP   : 12.12.12.12
Bind port       : 5443
Dashboard port  : 6443
vhost http port : 80
vhost https port: 443
Privilege token : WEWLRgwRjIJVPx2kuqzkGnvuftPLQniq
Max Pool count  : 50
Log level       : info
Log max days    : 3
Log file        : enable
#将上面信息添加到你的路由器frp穿透插件中吧
==============================================
frps Dashboard: http://12.12.12.12:6443/
#这个是frp控制台访问地址
==============================================
  1. 命令
    • 更新命令
      ./install-frps.sh update
    • 卸载命令
      ./install-frps.sh uninstall
    • 服务器端管理命令
      /etc/init.d/frps start
      /etc/init.d/frps stop
      /etc/init.d/frps restart
      /etc/init.d/frps status
      /etc/init.d/frps config
      /etc/init.d/frps version

      2. 路由器设置(windows请参考安装方法1里)

      在路由器上使用的时候,请使用虚拟内存


安装方法 3 docker

相关链接

frps的教程:https://code.aliyun.com/clangcn/frp-docker/blob/master/frps-docker/README.md
frpc的教程:https://code.aliyun.com/clangcn/frp-docker/blob/master/frpc-docker/README.md

1. 介绍

frps for Docker

  • 基于Dockerfile文件编译出一个frps的容器镜像。
  • 版本 frp 0.20.0
  • 问题 如何安装Docker自行百度吧

    2. 安装

    下载镜像导入从项目中下载docker images后导入,阿里云镜像下载:

    wget --no-check-certificate https://code.aliyun.com/clangcn/frp-docker/raw/master/frps-docker/frps-docker.tar

    github镜像下载地址:

    wget --no-check-certificate https://github.com/clangcn/frp-docker/raw/master/frps-docker/frps-docker.tar

    镜像导入命令

    docker load < frps-docker.ta

    3. 使用

    启动命令

    docker run -h="frps-docker" --name frps-docker -d \
    -p 6443:5443/tcp \
    -p 6443:5443/udp \
    -p 6444:5444/udp \
    -p 7443:5445/tcp \
    -p 8080:80/tcp \
    -p 8443:443/tcp \
    -e set_token=password \
    -e set_subdomain_host= \
    -e set_max_pool_count=50 \
    -e str_log_level=info \
    -e set_log_max_days=3 \
    "frps-docker:latest"
© 版权声明

相关文章