前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >【内网穿透】用frps实现内网穿透

【内网穿透】用frps实现内网穿透

原创
作者头像
云帆沧海
发布2024-10-15 18:04:14
发布2024-10-15 18:04:14
46200
代码可运行
举报
文章被收录于专栏:前端开发前端开发
运行总次数:0
代码可运行

1. 简介

在当今互联网时代,远程访问内网资源已成为一种常见需求。无论是在家访问办公室的电脑,还是远程管理家庭NAS,内网映射都是一种强大的解决方案。

本文将详细介绍如何使用frp(Fast Reverse Proxy)来实现这一目标。

1.1 frp

frp是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,将NAT或防火墙后的本地服务器暴露到互联网。它支持TCP、UDP、HTTP、HTTPS等多种协议,使用起来非常灵活。

1.2 frp的主要组件

frp主要由两部分组成:

frps (服务端): 运行在具有公网IP的服务器上

frpc (客户端): 运行在您想要暴露到公网的内网机器上

内网映射的概念和用途:内网映射允许您将内网服务器的端口映射到公网IP的特定端口上,使得外网用户可以通过访问公网IP和端口来访问内网服务

2.准备工作

2.1软件下载

访问frp的GitHub发布页面: https://github.com/fatedier/frp/releases

根据您的操作系统下载适合的版本

解压下载的文件,您会看到frps和frpc两个可执行文件

下载后的操作步骤

Windows:

创建目录:C:\frp

使用内置的解压工具或7-Zip等软件,将文件解压到 C:\frp 目录下

Linux/macOS:

创建目录:

代码语言:python
代码运行次数:0
复制
sudo mkdir /usr/local/frp

解压文件到该目录:

代码语言:python
代码运行次数:0
复制
sudo tar -zxvf frp_x.xx.x_linux_amd64.tar.gz -C /usr/local/frp

设置适当的权限:

代码语言:python
代码运行次数:0
复制
sudo chown -R $(whoami):$(whoami) /usr/local/frp

解压后,在您指定的目录(如 C:\frp 或 /usr/local/frp)中,您会看到以下文件:

frps: 服务端程序(用于公网服务器)

frpc: 客户端程序(用于内网设备)

frps.ini: 服务端配置文件模板

frpc.ini: 客户端配置文件模板

frps_full.ini 和 frpc_full.ini: 包含所有可能配置项的完整配置文件

配置服务端(公网服务器)

3.开始配置

3.1 ssh请求配置

配置完即可通过客户端ssh连接到服务端

进入 frp 目录:

代码语言:python
代码运行次数:0
复制
Windows: cd C:\frp
Linux/macOS: cd /usr/local/frp

编辑 frps.ini 文件:

代码语言:python
代码运行次数:0
复制
[common]
bind_port = 7000
token = your_secure_token

将 frps 和 frps.ini 上传到您的公网服务器的相应目录(如 /usr/local/frp/)

配置客户端(内网设备)

进入 frp 目录:

代码语言:python
代码运行次数:0
复制
Windows: cd C:\frp
Linux/macOS: cd /usr/local/frp

编辑 frpc.ini 文件:

代码语言:python
代码运行次数:0
复制
[common]
server_addr = your_server_public_ip
server_port = 7000
token = your_secure_token

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

确保 frpc 和 frpc.ini 保存在您的内网设备上的指定目录中

启动服务

在公网服务器上启动 frps:

代码语言:python
代码运行次数:0
复制
cd /usr/local/frp
./frps -c frps.ini

在内网设备上启动 frpc:

Windows:

代码语言:python
代码运行次数:0
复制
cd C:\frp
frpc.exe -c frpc.ini

Linux/macOS:

代码语言:python
代码运行次数:0
复制
cd /usr/local/frp
./frpc -c frpc.ini

3.2 http请求配置

3.2.1 服务端配置(frps)

编辑 frps.ini 文件,添加 HTTP 服务的端口:

代码语言:python
代码运行次数:0
复制
[common]
bind_port = 7000
vhost_http_port = 80
token = your_secure_token

这里的 vhost_http_port 是用于接收 HTTP 请求的端口,通常设置为 80。

如果您的服务器已经有 Web 服务占用了 80 端口,可以选择其他端口,如 8080:

代码语言:python
代码运行次数:0
复制
vhost_http_port = 8080

3.2.2客户端配置(frpc)

编辑 frpc.ini 文件,添加 HTTP 服务的配置:

代码语言:python
代码运行次数:0
复制
[common]
server_addr = your_server_public_ip
server_port = 7000
token = your_secure_token

[web]
type = http
local_ip = 127.0.0.1
local_port = 8080
custom_domains = yourdomain.com

undefined

type = http: 指定这是一个 HTTP 服务。

local_ip 和 local_port: 指向您本地的 Web 服务地址和端口。

custom_domains: 指定要使用的域名,这个域名应该解析到您的公网服务器 IP。

如果您想要通过子域名访问,可以这样配置:

代码语言:python
代码运行次数:0
复制
[web]
type = http
local_ip = 127.0.0.1
local_port = 8080
subdomain = test

启动服务

在公网服务器上启动 frps:

代码语言:python
代码运行次数:0
复制
./frps -c frps.ini

在内网设备上启动 frpc:

代码语言:python
代码运行次数:0
复制
./frpc -c frpc.ini

访问测试

配置完成后,您应该能够通过 http://yourdomain.comhttp://test.yourdomain.com 来访问您的内网 Web 服务了。

这样就配置完成。

下一篇博客会讲完成之后如何测试是否联通,以及一些debug方法。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 简介
    • 1.1 frp
    • 1.2 frp的主要组件
  • 2.准备工作
    • 2.1软件下载
    • 3.开始配置
    • 3.1 ssh请求配置
    • 3.2 http请求配置
      • 3.2.1 服务端配置(frps)
      • 3.2.2客户端配置(frpc)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档