Linux中通过frp实现内网穿透

news/2025/1/13 15:07:54/

1、准备工作

准备一台公网服务器(云服务器),推荐阿里云或者腾讯云都可以

需要下载好frp安装包Linux端的和Windows端的安装包

网址:Releases · fatedier/frp (github.com)icon-default.png?t=O83Ahttps://github.com/fatedier/frp/releases

2、下载frp_0.53.2_linux_arm64.tar.gz和

frp_0.53.2_windows_amd64.zip

3、服务端部署frp

(1)解压缩、移动新目录


[server root ~] # ls frp_0.52.3_linux_amd64.tar.gz
frp_0.52.3_linux_amd64.tar.gz
[server root ~] # tar -xf frp_0.52.3_linux_amd64.tar.gz
[server root ~] # ls frp_0.52.3_linux_amd64
frpc  frpc.toml  frps  frps.toml  LICENSE
[server root ~] # mv frp_0.52.3_linux_amd64/ frp/

(2)服务端配置文件(服务端是frps.toml,客户端是frpc.toml)

bindPort = 7000                 
dashboard_port = 7500			dashboard_user = admin	        
dashboard_password = admin	   
  • [common]:通用设置区块,包含所有服务端配置。
  • bindPort:指定 FRP 服务端监听的端口。客户端将连接到这个端口。
  • dashboard_port:指定 Web 管理仪表板的端口。允许通过浏览器访问仪表板。
  • dashboard_user 和 dashboard_pwd:设置访问 Web 管理仪表板的用户名和密码。

(3)客户端配置文件(以下以Windows为例)

toml
[common]
server_addr = "x.x.x.x"  # 服务器的 IP 地址或者公网IP
server_port = 7000       # 服务端配置中的 bindPort[ssh]
name = "test"
type = "tcp"
localIP = "127.0.0.1"
localPort = 3389         # 如果是Linux系统,这边改成22端口
remote_port = 6000       # 服务器上的端口

  • [common]:通用设置区块,包含所有客户端配置。
  • server_addr 和 server_port:指定 FRP 服务端的地址和端口,客户端通过这些信息连接到 FRP 服务端。
  • [ssh]:一个具体的代理配置,表示将本地的 SSH 服务映射到远程的端口。
  • type:代理类型,可以是 tcpudp 或 http 等。
  • remote_port:FRP 服务端上公开的端口。

4、启动服务端

(1)传统启动

# 先cd到frps所在目录
./frps -c ./frps.toml &

(2)系统服务启动

[server root ~] # vim /etc/systemd/system/frps.service
[Unit]                                           # 服务名称,自定义
Description=Frp Server Service
After=network.target[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/usr/bin/frps -c /etc/frp/frps.toml    #实际的frp目录启动路径[Install]
WantedBy=multi-user.target# 添加执行权限
[server root ~] # chmod +x /etc/systemd/system/frps.service
[server root ~] # ls -l /etc/systemd/system/frps.service
-rwxr-xr-x 1 root root 232 Sep  2 09:03 /etc/systemd/system/frps.service
[server root ~] ## 需要将frp目录下的frps执行程序复制到 /usr/bin/frps 目录下,并添加执行权限
[server root ~] # cp -r frp/frps /usr/bin/
[server root ~] # chmod +x /usr/bin/frps
[server root ~] # ls -l /usr/bin/frps
-rwxr-xr-x 1 root root 16789504 Sep  2 09:02 /usr/bin/frps
[server root ~] #

(3)重新加载系统文件即可

systemctl daemon-reload

[server root ~] # systemctl daemon-reload
[server root ~] # systemctl restart frps.service
[server root ~] # systemctl status frps
● frps.service - Frp Server ServiceLoaded: loaded (/etc/systemd/system/frps.service; disabled; vendor preset: enabled)Active: active (running) since Mon 2024-09-02 09:04:27 HKT; 3s agoMain PID: 1436557 (frps)Tasks: 6 (limit: 4393)Memory: 8.5MCGroup: /system.slice/frps.service└─1436557 /usr/bin/frps -c /etc/frp/frps.tomlSep 02 09:04:27 server systemd[1]: Started Frp Server Service.
Sep 02 09:04:28 server frps[1436557]: WARNING: ini format is deprecated and the support will be removed in the future, ple>
......
Sep 02 09:04:28 server frps[1436557]: 2024/09/02 09:04:28 [I] [root.go:111] frps started successfully
[server root ~] #

5、启动客户端以及配置

(1)Windows文件如下,需要编辑frpc.toml配置文件

serverAddr = "x.x.x.x"    # 服务器的IP或者公网IP
serverPort = 7000         # 服务端的bindPort监听端口7000[[proxies]]               # 标识一个代理规则的开始
name = "test"             # 定义这个代理规则的名称
type = "tcp"              # 指定代理类型
localIP = "127.0.0.1"     # 设置本地内网服务的 IP 地址
localPort = 3389          # 设置本地内网服务的端口号
remotePort = 6000         # 设置 FRP 服务器上公开的端口号(和服务端一样)

(2) 启动编辑Windows cmd脚本,保存为.bat后缀文件,双击执行即可

@echo off

if "%1"=="show" goto begin
start mshta vbscript:createobject("wscript.shell").run("%~f0 show",0)(window.close)&&exit
:begin

cd /d C:\Users\(这里填写存放Windows系统的实际路径)
frpc.exe -c frpc.toml
exit

6、远程测试

Windows远程输入服务端IP+端口

注意:云服务器防火墙需要放行相关端口才能访问。

企业版Windows需要开启允许远程设置:Windows设置→系统→远程桌面开启

家庭版Windows因为不允许开启远程桌面,需要下载RDP软件:GitHub - anhkgg/SuperRDP: Super RDPWrap

软件的具体使用方法安装包里边有详细说明,以上有不懂的或者错误的地方欢迎指出,谢谢~~


http://www.ppmy.cn/news/1562828.html

相关文章

【Linux】Linux命令

目录 ​编辑 系统维护命令 man man:查看 man 手册 sudo passwd 用户名:修改用户密码 su:切换用户 echo ”输出内容“:向终端输出内容,默认换行 date查看当前系统的日期 clear:清屏 df -Th /df -h&…

[SAP ABAP] 使用LOOP AT...ASSIGNING FIELD-SYMBOL 直接更新内表数据

使用 LOOP AT...ASSIGNING FIELD-SYMBOL... 可以直接修改内表中的数据,而不需要先将内表数据复制到相应的工作区,然后再更新回内表中,从而提高性能 针对上述代码进行优化,我们使用LOOP AT...ASSIGNING FIELD-SYMBOL 直接更新内表数…

国产游戏崛起,燕云十六移动端1.9上线,ToDesk云电脑先开玩

游戏爱好者的利好消息出新了!网易大型武侠仙游《燕云十六声》正式官宣,移动端要在1月9日正式上线了!你期待手游版的燕云吗?不妨评论区留言说说你的看法。小编分别花了几个小时在台式机电脑和手机上都试了下,欣赏画面还…

C# 与 Windows API 交互的“秘密武器”:结构体和联合体

一、引言 在 C# 的编程世界里,当我们想要深入挖掘 Windows 系统的底层功能,与 Windows API 打交道时,结构体和联合体就像是两把神奇的钥匙🔑 它们能够帮助我们精准地操控数据,实现一些高级且强大的功能。就好比搭建一…

人工智能-数据分析及特征提取思路

1、概况 基于学生行为数据预测是否涉黄、涉黑等。 2.数据分析 数据分析的意义包括得到数据得直觉、发掘潜在的结构、提取重要的变量、删除异常值、检验潜在的假设和建立初步的模型。 2.1数据质量分析 2.1.1数据值分析 查看数据类型: 首先明确各字段的数据类型…

Jenkins内修改allure报告名称

背景: 最近使用Jenkins搭建自动化测试环境时,使用Jenkins的allure插件生成的报告,一直显示默认ALLURE REPORT,想自定义成与项目关联的名称,如图所示,很明显自定义名称显得高大上些,之前…

【MySQL】第三章 库的操作

系列文章目录 《【MySQL】第一章 MySQL 5.7的安装与卸载》 《【MySQL】第二章 初识数据库》 《【MySQL】第三章 库的操作》 《【MySQL】第四章 表的操作》 《【MySQL】第五章 数据类型》 文章目录 系列文章目录库的增删查改创建数据库删除数据库查看数据库查看数据库查看数据库…

实训云上搭建集群

文章目录 1. 登录实训云1.1 实训云网址1.2 登录实训云 2. 创建网络2.1 网络概述2.2 创建步骤 3. 创建路由器3.1 路由器名称3.1 创建路由器3.3 查看网络拓扑 4. 连接子网5. 创建虚拟网卡5.1 创建原因5.2 查看端口5.3 创建虚拟网卡 6. 管理安全组规则6.1 为什么要管理安全组规则6…