免费的 FRP 内网穿透服务
一、什么是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
或其他文本编辑器打开相应的文件:
# 作为服务端启动
sudo vim /lib/systemd/system/frps.service
# 作为客户端启动
sudo vim /lib/systemd/system/frpc.service
2、添加服务配置信息
在打开的文件中,按照以下模板添加 FRP 服务的配置信息:
[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复制代码sudo systemctl daemon-reload
4、启动和管理服务
现在,你可以使用以下命令来启动、停止、重启和查看 FRP 服务的状态:
# 启动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 服务的日志:
sudo journalctl -u frps.service # 查看FRP服务端的日志
sudo journalctl -u frpc.service # 查看FRP客户端的日志
如果在尝试启动服务时收到类似上文提到的错误消息,这通常意味着 FRP 客户端在尝试连接到服务器时遇到问题。这可能是由于配置错误(如错误的服务器地址、端口或身份验证信息)或网络连接问题导致的。检查你的 frpc.ini
配置文件,确保所有设置都是正确的,并且 FRP 服务器正在运行并接受连接。
确保遵循上述步骤,并根据你的实际环境进行适当的调整。这样,你就可以成功配置FRP服务在后台自动运行,并在系统重启后自动恢复。