Article

FRP内网穿透搭建教程

2024.05.07 云服务 0
本文目录

    No Content

    字数 阅读时间

    FRP内网穿透搭建教程

    FRP内网穿透搭建教程

    基本概念

    FRP在配置过程中存在三个主要终端:
    服务端:具有公网IP的服务器,用于运行frps服务
    客户端:需要被访问的内网服务器,运行frpc服务
    访问端:用于访问内网服务器的终端设备,根据frp的运行模式(常规、STCP、P2P)不同,可直接连接客户端或通过frpc连接客户端

    本教程基于FRP-v0.57.0,0.52.0版本前后配置文件差异较大,在实际应用中应根据版本调整配置设置
    项目链接:frp github
    中文文档:frp README

    FRP服务端配置

    FRP客户端配置

    以Ubuntu为例,先下载frp客户端,对于不同的frp版本,需要对链接进行相应调整

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

    解压压缩包并修改文件夹名

    tar -zxvf frp_0.57.0_linux_amd64.tar.gz
    cp -r frp_0.57.0_linux_amd64 frp

    清理过程文件

    rm -rf frp_0.57.0_linux_amd64
    rm -rf frp_0.57.0_linux_amd64.tar.gz

    进入文件目录并清理frpc文件

    cd frp
    rm -rf frpc, frpc.toml

    修改frps.toml文件内容

    # 端口设置
    bindAddr = "0.0.0.0"		# 外部访问IP限制
    bindPort = XXXX			# frp服务端口
    # 认证设置
    auth.method = "token"		# 认证方式
    auth.token = "XXXX"		# token设置
    # 面板设置
    webServer.addr = "0.0.0.0"	# 监测面板访问IP限制
    webServer.port = XXXX		# 监测面板服务端口
    webServer.user = "XXXX"		# 监测面板用户名
    webServer.password = "XXXX"	# 检测面板密码
    # frps测试运行
    XXXX/frps -c XXXX/frps.toml	# 替换为frps实际路径

    frps.toml文件中主要需要设置的内容包括:端口认证面板三项,在运行服务前需要在服务器中放行对应端口
    注意:IP地址应为字符串类型
    frps.toml完整文档:frps Full-Example

    FRP服务设置

    完成FRP客户端配置后,复制frps,frps.toml路径,在/etc/systemd/system 目录下创建一个 frps.service文件,用于配置frps服务

    # 注意root权限
    sudo vim /etc/systemd/system/frps.service

    写入以下内容

    [Unit]
    Description = frps
    After = network.target syslog.target
    Wants = network.target
    [Service]
    Type = simple
    ExecStart = XXXX/frps -c XXXX/frps.toml	# 替换为frps实际路径
    [Install]
    WantedBy = multi-user.target

    配置frps服务开机自动启动

    sudo systemctl enable frps

    使用systemd命令管理frps服务

    # 启动frps
    sudo systemctl start frps
    # 重启frps
    sudo systemctl restart frps
    # 终止frps
    sudo systemctl stop frps
    # 查看frps运行状态
    systemctl status frps

    其他说明

    Docker部署:除前述默认部署方式外,某些面板(如1Panel)支持frps的Docker化部署,可以在面板应用商店内进行部署,配置方法与签署方法相同,但不需要专门对frps服务进行管理;

    可视化文件编辑:大多数面板均支持可视化方式对文件进行编辑,无需使用vim,可以通过命令行对服务进行设置,再通过可视化方式管理文件内容。

    FRP客户端配置

    常规模式

    FRP客户端与服务端配置类似,主要需要修改frpc.toml文件

    # 下载链接与前同
    https://github.com/fatedier/frp/releases/download/v0.57.0/frp_0.57.0_linux_amd64.tar.gz

    frpc.toml文件设置如下所示

    serverAddr = "XXXX"				# 服务器IP地址
    serverPort = XXXX				# 服务端口(远端、中介端)
    auth.token = "XXXX"				# token
    # log.to = "./logs/frpc.log"	# Log设置
    
    [[proxies]]
    name = "XXXX"					# 连接名
    type = "tcp"					# 连接类型
    localIP = "127.0.0.1"			# 本地IP
    localPort = XXXX				# 本地端口
    //remotePort = XXXX				# 远程端口,需要在公网服务器放行

    frpc服务启动

    ./frpc -c ./frpc.toml

    STCP/P2P模式

    常规模式frp服务下访问端无需进行特殊设置,可直接对客户端进行连接,但相当于直接向公网暴露了一个tcp端口,存在很大的安全隐患
    此外,在该模式下每次信息传递都需要走完“访问端-服务器-客户端”全流程,数据都需要通过公网服务器进行中转,受到服务器带宽、流量、延迟影响严重(国内服务器带宽一般较小,国外服务器延迟一般较高)
    FRP的STCP、P2P模式即分别为上述两个问题的解决方案

    STCP模式客户端设置

    STCP模式需要客户端、访问端均运行frpc服务,通过密钥进行验证,构建客户端、访问端对应端口间的映射

    # 客户端frpc
    serverAddr = "XXXX"				# 服务器IP地址
    serverPort = XXXX				# 服务端口(远端、中介端)
    auth.token = "XXXX"				# token
    
    [[proxies]]
    name = "XXXX"					# 连接名
    type = "stcp"					# 连接类型
    secretKey = "XXXXXX"			# 密钥
    localIP = "127.0.0.1"			# 本地IP
    localPort = XXXX				# 本地端口
    # 访问端frpc
    serverAddr = "XXXX"				# 服务器IP地址
    serverPort = XXXX				# 服务端口
    auth.token = "XXXX"				# token
    
    [[proxies]]
    name = "XXXX"					# 连接名
    type = "stcp"					# 连接类型
    serverName = "XXXX"				# 服务端连接名
    secretKey = "XXXXXX"			# 密钥
    bindAddr = "127.0.0.1"			# 本地IP
    bindPort = XXXX				# 本地端口(映射到本端口)

    建立连接需要先后启动客户端、访问端的frpc服务,此后在访问端,通过访问127.0.0.1:XXXX即可访问客户端对应端口

    P2P模式客户端设置

    P2P模式(XTCP模式)通过NAT打洞实现客户端、访问端对应端口的直接连接,服务端在连接初期进行识别配对,建立连接后客户端、访问端直接进行通信,因此可以大幅超出服务端的带宽、流量、延迟限制
    P2P模式无法保证一定能够打洞成功,部分网络环境可能禁止打洞,在校园网、园区网等环境使用该模式时需要慎重考虑,必要时与管理员进行联系

    # 客户端frpc
    serverAddr = "XXXX"				# 服务器IP地址
    serverPort = XXXX				# 服务端口
    auth.token = "XXXX"				# token
    
    [[proxies]]
    name = "XXXX"					# 连接名
    type = "xtcp"					# 连接类型
    secretKey = "XXXXXX"			# 密钥
    localIP = "127.0.0.1"			# 本地IP
    localPort = XXXX				# 本地端口
    # 访问端frpc
    serverAddr = "XXXX"				# 服务器IP地址
    serverPort = XXXX				# 服务端口
    auth.token = "XXXX"				# token
    
    [[proxies]]
    name = "XXXX"					# 连接名
    type = "xtcp"					# 连接类型
    serverName = "XXXX"				# 服务端连接名
    secretKey = "XXXXXX"			# 密钥
    bindAddr = "127.0.0.1"			# 本地IP
    bindPort = XXXX				# 本地端口(映射到本端口)

    与STCP模式相同,P2P模式需要先后启动客户端、访问端的frpc服务,此后在访问端,通过访问127.0.0.1:XXXX即可访问客户端对应端口

    分享 将文章链接或阅读海报分享给其他人。
    FRP内网穿透搭建教程 /archives/frptutorial
    作者 Ophius 发布于 2024.05.07 许可协议 CC BY-NC-SA 4.0

    转载请保留原文链接与作者信息。

    最后修改时间 最后编辑时间计算中 · · 文章可能会随时间更新。
    相关文章 Smart
    随机文章 Random
    Comment

    评论

    评论区跟随文章阅读区展示,方便围绕正文继续交流。

    无法评论

    无法评论:文章评论已在主题设置中关闭。