使用frp让内部服务走向互联网

本文详细介绍了如何使用frp实现内网穿透,包括下载安装、配置frps服务端和frpc客户端,以及远程访问内部服务和应用的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

在数字化时代,我们经常需要将内部网络中的服务暴露给互联网以便远程访问。这包括访问家庭网络中的设备、共享本地 Web 服务器或者通过 SSH 连接到内部计算机。要实现这些目标,需要一种可靠且安全的网络穿透解决方案。frp(fast reverse proxy)正是一款强大的工具,能够帮助你实现内网穿透,下面我们将探讨如何使用frp来实现这一目标。

什么是frp?

frp 是一个开源的网络工具项目,它由 fatedier 开发,旨在让用户能够轻松地将内部服务暴露到公共互联网。frp 项目由两个主要组件组成:

  1. frps(frp server): 这是 frp 的服务器组件,它运行在你的云服务器、VPS 或本地服务器上。它主要负责监听来自外部的连接请求,然后将这些请求转发给具有 frpc 客户端的内部服务。
  2. frpc(frp client): 这是 frp 的客户端组件,运行在需要进行网络穿透的设备上。frpc 将内部服务的流量通过反向代理传输到 frps 服务器,从而使内部服务可以在互联网上访问。

实现内网穿透的步骤

下载并安装frp

你需要从在frp GitHub上下载frp,根据你的系统选择合适的版本
我这里准备了两个机器,分别为:192.168.229.170、192.168.229.166,把192.168.229.170作为frp server且模拟为公网服务,192.168.229.166作为frp client且模拟为内网机器。
我们在192.168.229.170上执行

wget https://github.com/fatedier/frp/releases/download/v0.51.3/frp_0.51.3_linux_amd64.tar.gz

下载完frp后解压

tar -zxvf frp_0.51.3_linux_amd64.tar.gz

进入frp目录下

cd frp_0.51.3_linux_amd64/

会看到frp文件包含了

frpc  frpc_full.ini  frpc.ini  frps  frps_full.ini  frps.ini  LICENSE

我们将frp client的相关文件传递给192.168.229.166

scp frpc frpc_full.ini frpc.ini root@192.168.229.166:/usr/local/frp_0.51.3_linux_amd64/

配置frps(服务端)

修改192.168.229.170上的frps.ini文件

[common]
bind_port = 7000
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = your_password
  • bind_port 定义了 frps 服务器监听的端口,用于接收来自 frpc 客户端的连接。
  • dashboard_port 定义了 frps 仪表板的端口,可以用于监视和管理 frp 服务器。
  • **dashboard_user **和 dashboard_pwd 定义了仪表板的用户名和密码,以增加安全性。

你可以根据需要添加更多的代理规则,以将不同的内部服务映射到不同的端口。

启动frps

在服务器上运行以下命令来启动 frps 服务器

./frps -c frps.ini

建议使用后台运行的方式挂起,保证命令的执行不受终端关闭的影响(并使用重定向符号来将日志输出重定向到其他文件)

nohup ./frps -c frps.ini > frps.log 2>&1 &

image.png

配置frpc(客户端)

修改192.168.229.166上的frpc.ini文件

[common]
server_addr = 192.168.229.170
server_port = 7000

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

server_addrserver_port 是 frps 服务器的地址和端口。
定义了一个名为ssh和基于tcp协议的代理规则
local_ip:指定了要穿透的内部服务的本地 IP 地址。在这里,内部服务是位于本地计算机上,所以使用了 “127.0.0.1”,表示本地主机。
local_port:指定了要穿透的内部服务的本地端口。在这个例子中,“22” 是 SSH 服务的默认端口。
remote_port:定义了 frps 服务器上用于外部访问的端口。外部用户将通过此端口访问内部服务。例如,远程用户可以通过 192.168.229.170:6000 来访问192.168.229.166的SSH服务。

启动frpc

在客户端上运行以下命令来启动frpc客户端

./frpc -c frpc.ini

或使用后台运行的方式:

nohup ./frpc -c frpc.ini > frpc.log 2>&1 &

image.png

远程访问内部服务

现在,你可以使用 frps 服务器的地址和规定的端口来访问你的内部服务。
例如使用192.168.229.170 的6000端口ssh登录到了192.168.229.166这台内网机器上

ssh -p 6000 root@192.168.229.170

访问内部应用

当然,你也可以在内部服务器上开放出一个应用代理。
例如我有一个SpringBoot应用,我想让外部能访问到它
我可以在frpc.ini里配置:

[springbootApp]
type = tcp
local_ip = 127.0.0.1
local_port = 8080
remote_port = 6001

8080端口为我tomcat暴露的端口,这样子外部就可以通过6001端口访问到我springboot的8080端口,进而请求我应用的接口。

总结

frpc 是一个强大的工具,可用于实现网络穿透,将内部服务暴露到互联网上。通过简单的配置和启动,你可以轻松地远程访问内部服务器或服务,无论是家庭网络设备还是Web应用程序。使用 frpc,你可以更方便地管理和共享你的网络资源,使其在互联网上变得更加可访问。如果你需要实现网络穿透,不妨考虑使用 frpc,它将为你提供出色的解决方案。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值