当前位置: 首页 > news >正文

Windows和Linux使用FRP实现内网穿透

需求说明

我的需求是需要在公司远程访问家里的电脑和需要访问一下家里的web测试。

那么就需要使用内网穿透

架构大概就是:需要一台有公网的服务器安装frps作为内网穿透的服务端,在家里的电脑安装frpc作为客户端,服务端转发客户端的端口,然后访问公网+转发的端口,即可访问家里的电脑。

frp下载

frp是golang写的开源软件,代码发布在github,所以直接在github下载相关代码即可。

地址:https://github.com/fatedier/frp/releases

根据自己需求下载版本

服务端和客户端都在一个包里,解压下来即可

部署服务端 frps

我会把Windows和linux两种方式都写上,共大家参考。

Windows安装方式

Windows server 和 Windows 普通版本的安装方法一致

解压下来后,大概是有一下几个文件:

  • frpc.exe
  • frpc.ini
  • frps.exe
  • frps.ini
  • LICENSE

部署

在服务端我们仅需要frps.exe和frps.ini两个文件就好了

创建一个安装目录 : C:\frps

把frps.exe和frps.ini两个文件放入 C:\frps

修改frps.ini文件:

[common]
bind_port = 7000

临时运行:

PS C:\frps> .\frps.exe -c .\frps.ini
2022/08/10 16:43:41 [I] [root.go:209] frps uses config file: .\frps.ini
2022/08/10 16:43:41 [I] [service.go:194] frps tcp listen on 0.0.0.0:7000
2022/08/10 16:43:41 [I] [root.go:218] frps started successfully

加入入站规则

控制面板\系统和安全\Windows Defender 防火墙 选择 高级设置 进入 高级安全 Windows Defender 防火墙

点击入站规则 -> 新建规则 -> 程序 -> 此程序路径(%SystemDrive%\frps\frps.exe) -> 允许连接 -> 配置文件(默认全选) -> 设置名称(frps.exe) -> 完成

linux安装方式

创建安装目录,然后把 程序和配置文件拷贝进去

sudo mkdir -p /usr/local/frps
sudo cp frps frps.ini /usr/local/frps

修改frps.ini文件:

[common]
bind_port = 7000

运行:

$ sudo /usr/local/frps/frps -c /usr/local/frps/frps.ini 
2022/08/10 17:03:38 [I] [root.go:209] frps uses config file: /usr/local/frps/frps.ini
2022/08/10 17:03:38 [I] [service.go:194] frps tcp listen on 0.0.0.0:7000
2022/08/10 17:03:38 [I] [root.go:218] frps started successfully

通过防火墙, 7000为通讯端口,6000为代理端口,到时候只需要IP:6000就可以访问我们需要的应用了

firewall-cmd --zone=public --add-port=7000/tcp --permanent
firewall-cmd --zone=public --add-port=6000/tcp --permanent
firewall-cmd --reload

部署客户端 frpc

Windows安装方式

Windows server 和 Windows 普通版本的安装方法一致

部署

在服务端我们仅需要frpc.exe和frpc.ini两个文件就好了

创建一个安装目录 : C:\frpc

把frpc.exe和frpc.ini两个文件放入 C:\frpc

修改frpc.ini文件:

server_addr = x.x.x.x 把 x.x.x.x 替换成公网IP

[common]
server_addr = x.x.x.x
server_port = 7000

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

运行:

PS C:\frpc> .\frpc.exe -c .\frpc.ini
2022/08/10 17:47:02 [I] [service.go:349] [70ff33af6b36ab57] login to server success, get run id [70ff33af6b36ab57], server udp port [0]
2022/08/10 17:47:02 [I] [proxy_manager.go:144] [70ff33af6b36ab57] proxy added: [ssh]
2022/08/10 17:47:02 [I] [control.go:181] [70ff33af6b36ab57] [ssh] start proxy success

加入入站规则

控制面板\系统和安全\Windows Defender 防火墙 选择 高级设置 进入 高级安全 Windows Defender 防火墙

点击入站规则 -> 新建规则 -> 程序 -> 此程序路径(%SystemDrive%\frpc\frpc.exe) -> 允许连接 -> 配置文件(默认全选) -> 设置名称(frps.exe) -> 完成

linux安装方式

创建安装目录,然后把 程序和配置文件拷贝进去

sudo mkdir -p /usr/local/frpc
sudo cp frpc frpc.ini /usr/local/frpc

修改frpc.ini文件:

server_addr = x.x.x.x 把 x.x.x.x 替换成公网IP

[common]
server_addr = x.x.x.x
server_port = 7000

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

运行:

$ sudo  ./frpc -c frpc.ini 
2022/08/10 17:41:35 [I] [service.go:349] [0f5cc898110af7a1] login to server success, get run id [0f5cc898110af7a1], server udp port [0]
2022/08/10 17:41:35 [I] [proxy_manager.go:144] [0f5cc898110af7a1] proxy added: [ssh]
2022/08/10 17:41:35 [I] [control.go:181] [0f5cc898110af7a1] [ssh] start proxy success

通过防火墙

firewall-cmd --zone=public --add-port=7000/tcp --permanent
firewall-cmd --zone=public --add-port=6000/tcp --permanent
firewall-cmd --reload

验证是否成功

  1. 通过 SSH 访问内网机器,假设用户名为 test:

    ssh -oPort=6000 test@x.x.x.x
    

    frp 会将请求 x.x.x.x:6000 的流量转发到内网机器的 22 端口。

相关文章:

  • c++代码如何实现在win/linux下创建编译及部署后台服务,并管理其他服务
  • UI 自动化测试应不应该投入?有没有前途?怎样做最明智?
  • 股票量化交易有什么优势?
  • 元宇宙电商-NFG系统,是如何用数字藏品平台,促进新营销的?
  • thunderbird102编译-环境搭建(1)
  • curl用法:查看响应时间
  • 房地产基础知识!!!
  • 写一个简单食用的拦截器
  • 算法竞赛进阶指南 0x68 二分图的匹配
  • 【无标题】数字ic设计|ic芯片设计全流程
  • Stable Diffusion搭建全过程记录,生成自己的专属艺术照
  • 【iOS自动化测试】第二章:环境安装
  • 源码安装LAMT架构
  • 重要文件即时搞定,不用插电就能打印,汉印MT800移动便携打印机上手
  • MySQL数据库性能分析之explain使用
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • [译]如何构建服务器端web组件,为何要构建?
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • export和import的用法总结
  • Gradle 5.0 正式版发布
  • HTML5新特性总结
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • Java,console输出实时的转向GUI textbox
  • JavaScript设计模式之工厂模式
  • Mysql5.6主从复制
  • Objective-C 中关联引用的概念
  • Python连接Oracle
  • rabbitmq延迟消息示例
  • vue-cli在webpack的配置文件探究
  • webpack4 一点通
  • 基于web的全景—— Pannellum小试
  • 技术:超级实用的电脑小技巧
  • 开源地图数据可视化库——mapnik
  • 排序算法学习笔记
  • 前端代码风格自动化系列(二)之Commitlint
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 如何进阶一名有竞争力的程序员?
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 通信类
  • 为什么要用IPython/Jupyter?
  • 阿里云移动端播放器高级功能介绍
  • ​linux启动进程的方式
  • ​力扣解法汇总946-验证栈序列
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (1)Nginx简介和安装教程
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (31)对象的克隆
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (二)丶RabbitMQ的六大核心
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (数据结构)顺序表的定义
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)chrome浏览器收藏夹(书签)的导出与导入