Loading... <div class="tip inlineBlock warning simple"> 🤖 本博客内容使用 GPT-4 技术进行润色 </div> ## 一、什么是FRP? > frp is a fast reverse proxy to help you expose a local server behind a NAT or firewall to the Internet. As of now, it supports **TCP** and **UDP**, as well as **HTTP** and **HTTPS** protocols, where requests can be forwarded to internal services by domain name. 大体意思就是,FRP(Fast Reverse Proxy)是一种快速反向代理工具,它可以帮助您将位于 NAT 或防火墙后面的本地服务器暴露给互联网。目前,FRP 支持 TCP、UDP、HTTP 和 HTTPS 协议,可以根据域名将请求转发到内部服务。您可以在其开源地址 https://github.com/fatedier/frp 上了解更多详细信息。 ## 二、免费的FRP服务 > 除了自己搭建FRP服务外,您还可以使用免费的 FRP 服务提供商 freefrp.net。该服务可用于远程管理内网服务器、路由器、NAS 以及内网建站等各种需求场景。 此处仅简单介绍 freefrp.net 提供的穿透服务使用方法,更多内容请访问 https://freefrp.net/ 了解详细信息,并参考该服务提供的使用文档 **使用文档** 获取更多FRP的使用说明。 ``` [common] # 服务提供商提供的 frp 服务器 IP 地址或者域名地址, 根据自己的需求自行选择 server_addr = frp.freefrp.net # 服务提供商提供的 frp 服务端口号, 一般默认7000 server_port = 7000 # 服务提供商提供的密码 token = freefrp.net # 穿透需要 Web 访问的内网服务,例如群晖 NAS DSM 的管理界面. # 服务名称, 此处为该条穿透服务的名称, 不可重复, 自行填写唯一性标识名称 [www_yourdomain_com_http] # 协议类型, http/https/tcp/udp等 type = http # 内网 IP 地址, 如果不是将 frp 放在 docker 中的可以考虑127.0.0.1 local_ip = 127.0.0.1 # 本地端口号, 根据服务在内网的开放端口自行选择映射出去的端口号 local_port = 8888 # 自定义域名, 自己 CNAME 一下就可以访问了 custom_domains = www.yourdomain.com # 服务商提供的子域名, 例如此处设置访问为 http://demo.frp.freefrp.net subdomain = demo # 可以设置多个端口穿透映射, 不限于http/https [www_yourdomain_com_https] type = https local_ip = 127.0.0.1 local_port = 80 custom_domains = www.yourdomain.com subdomain = www # 穿透需要 tcp 连接的内网服务,例如 SSH 的 22 端口或者 3389 的 Windowws 远程访问端口. [yourname_linux_ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 # 可以使用 ssh -p 10022 root@frp.freefrp.net 来远程登录你的内网 Linux 服务器 remote_port = 10022 [yourname_windows10_rdp] type = tcp local_ip = 192.168.1.6 local_port = 3389 # 可以使用地址 frp.freefrp.net:10033 来远程登录你的内网服务器 remote_port = 10033 ``` ## 三、FRP 后台自启动方案 为了实现 FRP 服务的后台自启动,并确保在系统重启后仍能自动运行,我们可以使用 systemd 来管理 FRP 服务。以下是具体的配置步骤和注意事项。 ### 1、打开服务配置文件 首先,我们需要编辑 FRP 服务端(frps)或客户端(frpc)的 systemd 服务配置文件,执行命令前,请确保你有足够的权限来编辑这些文件。使用 `vim` 或其他文本编辑器打开相应的文件: ```sh # 作为服务端启动 sudo vim /lib/systemd/system/frps.service # 作为客户端启动 sudo vim /lib/systemd/system/frpc.service ``` ### 2、添加服务配置信息 在打开的文件中,按照以下模板添加 FRP 服务的配置信息: ```sh [Unit] Description=Frp Client Service # 服务描述,可以是FRP客户端或服务端的描述 After=network.target syslog.target # 确保在网络和日志系统启动后启动FRP服务 [Service] Type=simple # 服务类型,simple表示主进程由ExecStart启动,启动后立即进入运行状态 User=nobody # 运行服务的用户,可以根据需要设置为其他用户 Restart=on-failure # 当服务进程退出并返回错误代码时重启服务 RestartSec=5s # 在重启服务之前等待的秒数 ExecStart=/your/path/frpc -c /your/path/frpc.ini # 启动服务时要执行的命令和参数,这里是FRP客户端的启动命令和配置文件路径 ExecReload=/your/path/frpc reload -c /your/path/frpc.ini # 重新加载服务配置时要执行的命令和参数 [Install] WantedBy=multi-user.target # 指定多用户目标,即系统进入多用户模式时启动服务 ``` ### 3、重新加载 systemd 模块 在编辑完服务配置文件后,需要重新加载 systemd 模块以应用更改: ```bash bash复制代码sudo systemctl daemon-reload ``` ### 4、启动和管理服务 现在,你可以使用以下命令来启动、停止、重启和查看 FRP 服务的状态: ```bash # 启动frps.service服务 sudo systemctl start frps.service # 停止frps.service服务 sudo systemctl stop frps.service # 重新启动frps.service服务 sudo systemctl restart frps.service # 开机自启动frps.service服务 sudo systemctl enable frps.service # 查看frps.service服务日志 sudo systemctl status frps.service # 重新加载 systemd 模块 systemctl daemon-reload ``` ### 5、错误排查 如果在配置过程中遇到问题,可以查看服务日志来排查错误。使用以下命令查看 FRP 服务的日志: ```bash sudo journalctl -u frps.service # 查看FRP服务端的日志 sudo journalctl -u frpc.service # 查看FRP客户端的日志 ``` 如果在尝试启动服务时收到类似上文提到的错误消息,这通常意味着 FRP 客户端在尝试连接到服务器时遇到问题。这可能是由于配置错误(如错误的服务器地址、端口或身份验证信息)或网络连接问题导致的。检查你的 `frpc.ini` 配置文件,确保所有设置都是正确的,并且 FRP 服务器正在运行并接受连接。 确保遵循上述步骤,并根据你的实际环境进行适当的调整。这样,你就可以成功配置FRP服务在后台自动运行,并在系统重启后自动恢复。 Last modification:March 1, 2024 © Allow specification reprint Support Appreciate the author AliPayWeChat Like 如果觉得我的文章对你有用,请随意赞赏