frp 实现内网穿透

本文详细介绍了如何在Linux和Windows系统上安装和配置frp,包括服务端frps的设置(如添加http暴露、认证和开机启动),以及客户端frpc的配置(如SSH和Web服务的映射)。通过frp实现内网穿透,允许公网访问内部服务。

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


frp用于实现内网穿透的工具,实现的是公网ip或者域名,可以调用到本地的端口,原理是在公网的服务器上(具有公网ip的服务器)与本地服务建立一个通道,然后通过反向代理的能力将请求转发到本地对应端口,从而实现了内网穿透的功能。frp支持http、tcp、udp等协议的穿透。

一、服务端安装

服务端安装配置过程,这里以x86_64 的linux系统进行展示,这里使用的是centos 7.9

1.下载frp

这里下载的是0.44 的版本,测试了几个版本,有的是服务端下载不了,有的是客户端下载不了,只有0.44的正常下载了,因此就用了这个版本的frp。

# 可尝试使用下面任何一个地址下载,如果不行就根据地址去官网直接下载到本地上传到服务器
 wget https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_amd64.tar.gz
 wget http://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_amd64.tar.gz

2.解压、修改文件名,方便操作配置

# 解压
tar -zxvf frp_0.44.0_linux_amd64.tar.gz
# 修改文件名
mv frp_0.44.0_linux_amd64 frp

3.修改配置文件

# 进入文件夹
cd frp
# 编辑服务端配置文件 frps.ini 其中frpc开头的都是客户端文件,这里可以删除
vim frps.ini

下面是默认的配置信息:

[common]
# 服务端和客户端通信的端口
bind_port = 7000

增加以下配置内容

[common]
# 服务端和客户端通信配置
bind_port = 7000
# 监控面板配置
dashboard_port = 7500
dashboard_user = root
dashboard_pwd = super
# 认证配置,这个必须增加,使用token没有成功,网上找到有用这种方式认证的,更改后可以使用
privilege_mode = true
privilege_token = pwd123
# http 对外暴露端口,对外暴露的http端口需要使用这个进行暴露
vhost_http_port = 8080

4.启动frps服务、放行端口

启动很简单,一个命令即可,启动后可以使用http://公网ip:7500 打开监控页面来验证是否正常启动,用户名和密码就是上面配置的用户名密码

# 启动命令
./frps -c frps.ini

启动完成后,控制台会打印 frps started successfully 的信息,然后我们就可以登录监控面板进行确认了。不过确认之前还需要将对应端口进行放行,如果你是云服务器,需要在云服务器的安全组中将以上配置信息的所有端口进行放行(7000可以不用)。放行完成后登录监控面板进行验证:
在这里插入图片描述
这里我的客户端已经搭建完成了,所以显示proxy counts有两个,这样服务端的搭建就成功了。

5.配置frps服务开机启动

上面的启动命令,一旦退出命令界面程序就会暂定,这里使用systemd来管理服务的启动状态,并设计frps的开机启动,这样就不用关心服务端的启动问题了,可谓一劳永逸。

# 开始配置
sudo vim /lib/systemd/system/frps.service

填入以下内容即可,这里需要根据自己的frps文件路径自行设置frps的位置,我的是/root/frp/frps

[Unit]
Description=frps service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
#启动服务的命令(此处写你的frps的实际安装目录)
ExecStart=/root/frp/frps -c /root/frp/frps.ini

[Install]
WantedBy=multi-user.target

设置开机启动等其他命令:

# 开机启动
sudo systemctl enable frps
# 启动frps
sudo systemctl start frps
# 停止frps
sudo systemctl stop frps
# 直接重启
sudo systemctl restart frps

这样就实现了frps的开启启动,以后就可以不用问了

二、客户端安装

这里展示客户端的安装过程,这里客户端使用的是windows系统,应该大部分都是windows系统。这里客户端的版本应该和服务端版本保持一致,都是使用0.44 的版本。

1.安装frp

下载地址如下:

https://github.com/fatedier/frp/releases/tag/v0.44.0

在这里插入图片描述
下载的就是上图的的包,这个包都是解压即用的。
下载下来以后,直接解压到指定目录即可,这里解压到D盘根目录下,并重命名文件夹名为frp,所以我的frpc的文件的路径是D:\frp\frpc

2.修改配置文件

[common]
# 服务端ip,这个不可以变
server_addr = 116.204.89.***
# 服务端通信端口,这个也不可以变
server_port = 7000
# 服务端的密码,也不可以变,和服务端保持一致
privilege_token = pwd123
# 设置为true就行
tls_enable = true

[ssh]
# 这个是连接类型
type = tcp
local_ip = 172.17.65.57
local_port = 22
# 这个端口,无需在服务端声明,但是需要在服务器端放行
remote_port = 6000

[http]
# 服务类型
type = http
# 本地web服务端口
local_port = 8080
# 服务端ip或者域名,这是笔者的复习任务网站
custom_domains = ebbing.xinhengcompany.cn

这里是暴露了两个端口,一个是本地的22,一个是本地的8080,

本地的tcp的22端口映射到服务器的6000(无需在服务端配置,只需要放行这个端口就可以),支持ssh到本地。这样可以方便远程控制电脑,而无需安装向日葵等软件了。
本地的http的8080端口映射到服务器的8080(这个是在服务端配置的),这样可以把本地的web服务暴漏到公网中。

3.启动客户端frpc

这里使用的是powershell进行启动,我的安装目录是D:\frp\frpc,需要cd到D:\frp\,然后执行下面的命令:

# 这里使用的是powershell进行启动的
 .\frpc -c frpc.ini

如果出现以下信息,说明配置成功了
在这里插入图片描述

5.验证安装ssh服务并验证

尝试使用ssh到服务器的6000端口时,本地提示下面信息:
在这里插入图片描述
说明本地不支持远程的ssh,如果安装了ssh服务,大概是安全软件拦截了,这里是因为没有安装ssh服务。
注意:以管理员身份启动powershell,再执行以下命令

Add-WindowsCapability -Online -Name OpenSSH.Server

运行后,弹出以下界面,这个下载有点慢,需要耐心等待
在这里插入图片描述
出现如下页面说明安装完成了:
在这里插入图片描述
启动ssh服务,并查看ssh状态

# 启动ssh服务
Start-Service sshd
# 停止ssh服务
Stop-Service sshd
# 检查ssh状态
Get-Service sshd

如下status是running则表示正常启动了
在这里插入图片描述
设置ssh的开机启动,这样ssh就可以每次随着电脑的启动而启动了不需要我们手动再进行管理了。

Set-Service -Name sshd -StartupType 'Automatic'

这里设置第一次没有生效,重复操作了几次才生效,不知道为什么,如果这个命令不好使,可以使用windows+R,输入services.msc
找到Open SSH service 设置为开机启动也是一样的。
在这里插入图片描述
不过本地安装ssh作用并不是很大,最好还是使用windows的远程桌面连接,更方便,不过我的是家庭版,不支持远程桌面所以没啥用。

6.验证web服务

前面配置了远端服务器的8080到本地的8080的映射,所以这里通过域名ebbing.xinhengcompany.cn:8080来访问本地的web服务,如下:
在这里插入图片描述
可以看到web页面已经正常打开了,到这里也就实现了内网穿透的web穿透了。
不过还不够,因为每次启动frpc都是使用powershell来进行启动的,这样很麻烦,还需要为他配置一个开机启动的功能。

7.配置frpc的开机启动

下面是一个脚本,可以利用vbscript来实现frpc的后台启动,新建一个fprc.bat ,将以下内容放进去

REM 关闭窗口的命令回显
@echo off
if "%1" == "h" goto begin

REM 使用VBScript重新启动脚本并附加参数 "h" 实现程序的后台运行
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin

REM 切换到 frpc.exe 所在的目录
cd /d C:\frp

REM 启动 frpc.exe,并指定配置文件为 frpc.ini,并在后台运行
start "" /b frpc.exe -c frpc.ini

然后windows+R 打开开机启动,输入shell:startup,将frpc.bat放进去即可:
在这里插入图片描述
在这里插入图片描述
然后重启验证frpc.exe是否正常启动即可。
重启验证失败,上面的脚本可以实现在不重启下的后台启动,但是重启时执行脚本到vb脚本行时报错,搜索一圈没有解决,最后将脚本降级到了开启重启然后最小化,就是下面的脚本了,最后将脚本放到启动菜单下就行了。

REM 关闭命令回显,即在执行命令时不在命令窗口上显示命令本身
@echo off
REM 切换到 frpc.exe 所在的目录
cd /d D:\frp  
REM 启动 frpc.exe,并指定配置文件为 frpc.ini,并最小化窗口
start /min frpc.exe -c frpc.ini  
### 如何使用 `frpc` 配置内网穿透 #### 一、准备工作 为了成功配置并运行 `frpc` 实现内网穿透,需准备如下事项: - **一台具备公网 IP 的服务器**:该服务器上应安装好 `frps` (Fast Reverse Proxy Server),作为服务端。 - **目标设备**:即希望暴露给外网访问的内部网络中的计算机或其他装置,在此案例中为 OpenWRT 路由器。 #### 二、OpenWRT 安装 `frpc` 在 OpenWRT 设备上通过命令行工具 opkg 来获取最新版本的 `frp` 应用程序包[^1]。具体操作如下所示: ```bash opkg update && opkg install frp ``` #### 三、创建与修改 `frpc.ini` 文件 完成软件包部署之后,则需要针对个人需求定制化设置参数来满足特定应用场景的要求。这一步骤主要涉及编辑位于 `/etc/frp/` 下名为 `frpc.ini` 的配置文档。以下是基于 SSH 和 RDP 协议的服务映射实例[^2]: ```ini [common] server_addr = x.x.x.x ; 公网IP地址 authentication_method = token token = pass123456 ; 认证令牌 server_port = 7000 ; 远程服务器监听端口 [Fusion-ssh] type = tcp ; 映射协议类型 local_ip = 127.0.0.1 ; 内部机器的实际IP(本机回环接口) local_port = 22 ; 内部SSH服务默认端口号 remote_port = 20022 ; 对外部开放用于连接到本地SSH服务的新端号 [Fusion-rdp] type = tcp local_ip = 127.0.0.1 local_port = 3389 remote_port = 23389 ``` 请注意替换上述模板里的占位符(如 `x.x.x.x`, `pass123456`),使其匹配实际环境下的相应值。 #### 四、启动 `frpc` 并验证功能正常运作 保存更改后的配置文件后,可以通过下面这条指令开启客户端进程,并将其设为开机自启项以确保重启后仍能自动加载此项服务: ```bash /etc/init.d/frpc start /etc/init.d/frpc enable ``` 最后,可以尝试从互联网上的任意位置利用新分配好的远程端口去建立至指定内部资源的安全会话链接,以此检验整个方案是否按预期工作良好。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

归去来 兮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值