使用FRP进行内网穿透

frp内网穿透| Blog of Howell

1. 什么是FRP?

FRP(Fast Reverse Proxy)是一个高性能的反向代理应用,专门用于内网穿透。它能够让位于内网的服务器通过公网IP或域名被外网访问。FRP支持多种协议,包括TCP、UDP、HTTP、HTTPS等,因此非常适合用于搭建各种内网服务,如Web服务、远程桌面、SSH访问等。

2. FRP的工作原理

FRP的核心思想是通过一个公网服务器作为中转,让外部的请求能够访问到内网中的服务。其工作流程如下:

  1. FRP客户端运行在内网机器上,它负责将内网服务的流量转发到公网服务器。
  2. FRP服务端运行在拥有公网IP的服务器上,它负责接收来自外网的请求并将请求转发给FRP客户端。
  3. 当外部用户访问公网服务器的指定端口时,FRP服务端将请求转发给FRP客户端,然后由FRP客户端将流量引导至实际的内网服务。

3. 准备工作

在开始配置之前,你需要:

  • 一台具有公网IP的服务器(通常是VPS),它将作为FRP服务端。
  • 一台在内网中的机器,它将运行FRP客户端。

4. 下载和安装FRP

你可以从FRP的GitHub页面下载最新版本的FRP。根据你的服务器和客户端的操作系统下载相应的可执行文件或压缩包。

下载完成后,将FRP解压到你希望的目录中,并确保可执行文件具有执行权限。

bash

# 例如在Linux系统上
wget https://github.com/fatedier/frp/releases/download/v0.42.0/frp_0.42.0_linux_amd64.tar.gz
tar -zxvf frp_0.42.0_linux_amd64.tar.gz
cd frp_0.42.0_linux_amd64

5. 配置FRP服务端

FRP服务端需要在具有公网IP的服务器上配置,配置文件通常命名为frps.ini。下面是一个简单的配置示例:

ini

[common]
bind_port = 7000 # 监听的端口,FRP客户端将连接这个端口

配置完成后,可以使用以下命令启动FRP服务端:

bash

./frps -c ./frps.ini

6. 配置FRP客户端

在内网中的机器上配置FRP客户端,配置文件通常命名为frpc.ini。下面是一个简单的配置示例:

ini

[common]
server_addr = x.x.x.x # 公网服务器的IP地址
server_port = 7000 # FRP服务端的绑定端口

# 定义一个名为 "ssh" 的代理
[ssh]
type = tcp
local_ip = 127.0.0.1 # 内网服务的地址
local_port = 22 # 内网服务的端口(如SSH的端口)
remote_port = 6000 # 外网访问时使用的端口

配置完成后,可以使用以下命令启动FRP客户端:

bash

./frpc -c ./frpc.ini

7. 访问内网服务

配置完成后,外部用户只需通过<公网IP>:6000即可访问到内网的SSH服务。这意味着你可以在任何地方通过公网IP来访问内网中的SSH服务,而无需对路由器进行端口转发。

8. 常见问题与调试

  • 端口冲突:确保服务端和客户端配置中使用的端口未被其他服务占用。
  • 防火墙问题:检查服务器的防火墙配置,确保FRP服务端的端口(如7000)和客户端代理的端口(如6000)都已开放。
  • 日志查看:FRP的日志文件可以帮助你排查问题。服务端和客户端的运行目录下通常会生成日志文件,可以通过检查日志来定位问题。
阅读剩余
THE END