内网穿透技术能够帮助我们穿越 NAT(网络地址转换)和防火墙,实现远程访问内网服务。FRP(Fast Reverse Proxy)是一款高性能的内网穿透工具,本文将介绍如何配置和使用 FRP 进行内网穿透。
快速开始
创建新文章
首先,你需要在内网主机(客户端)和公网上的服务器(服务端)上安装 FRP。可以从 FRP GitHub 仓库 下载最新版本,支持 Windows、Linux 等操作系统。
Windows 客户端安装
在 Windows 系统中,下载并解压 FRP 压缩包,然后进入解压后的文件夹,直接运行:
frpc.exe -c frpc.toml
其中 frpc.toml
是客户端的配置文件,包含了服务器地址、端口、映射规则等信息。
配置 FRP 服务端(frps)
FRP 服务端需要部署在公网上的服务器上,接收并转发客户端的请求。服务端的配置文件通常是 frps.toml
,可以根据需求修改配置。
启动 FRP 服务端
使用以下命令启动 FRP 服务端:
./frps -c ./frps.toml
在 Linux 系统中,使用 nohup
命令来确保 FRP 服务端在后台持续运行。
nohup ./frps -c ./frps.toml &
nohup
会将输出重定向到 nohup.out
文件,你可以使用以下命令查看日志:
tail -f nohup.out
端口映射配置
FRP 支持多种类型的端口映射,以下是一些常见的配置方式:
HTTP 映射:
客户端配置:frpc.toml
[http]
type = tcp
local_ip = 127.0.0.1
local_port = 80
remote_port = 8080
上述配置将本地的 80 端口映射到公网的 8080 端口。
SSH 映射:
客户端配置:frpc.toml
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
这会将本地的 SSH 端口(22)映射到公网的 6000 端口,方便通过公网访问内网的 SSH 服务。
常见问题与解决
如何让 FRP 服务端持续运行?
当你通过 SSH 连接到服务器并启动 FRP 服务端时,关闭 SSH 会导致服务端进程被终止。为了确保 FRP 服务端在后台持续运行,可以使用以下方法:
1. 使用 nohup
命令
在 Linux 系统中,nohup
命令可以将进程放到后台运行,避免因终端关闭而中断进程。
启动 FRP 服务端时使用 nohup
:
nohup ./frps -c ./frps.toml &
2. 查找进程 ID(PID)
如果需要查看 FRP 服务端的运行状态,可以通过以下命令查找进程 ID:
ps aux | grep frps
3. 终止进程
如果需要停止 FRP 服务端,可以使用 kill
命令终止进程:
kill <PID>
如果进程没有响应,可以使用 kill -9
强制终止:
kill -9 <PID>
发布服务
配置好 FRP 后,你可以通过访问公网服务器的 IP 地址和端口,访问内网主机的服务。例如,在上面的 HTTP 映射中,你可以通过 http://<server_ip>:8080
来访问内网主机的 80 端口服务。
FRP 配置示例
客户端配置(frpc.toml
)
[common]
server_addr = "your_server_ip"
server_port = 7000
[http]
type = tcp
local_ip = 127.0.0.1
local_port = 80
remote_port = 8080
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
服务端配置(frps.toml
)
[common]
bind_port = 7000
[http]
type = tcp
custom_domains = "your_domain.com"
结语
FRP 是一个强大且灵活的内网穿透工具,适用于多种场景,如远程开发、远程桌面访问等。通过本文的配置指南,你应该能够快速上手 FRP,成功实现内网穿透并访问内网服务。如果遇到任何问题,可以参考 FRP 的官方文档,或者在 GitHub 上提出问题。
在这篇文章中,我添加了详细的 `frpc.toml` 和 `frps.toml` 配置示例,以及如何配置和启动 FRP 服务端与客户端的步骤。这些内容现在包含在文章的正文部分,并且按照 Hexo 的格式进行了组织。