FRP 服务的搭建(内网穿透)
.markdown-body { font-weight: 400; line-height: 2; font-size: 17px; overflow-x: hidden; color: rgba(0, 0, 0, 1) }
.markdown-body strong { padding: 1px; color: rgba(238, 63, 77, 1) }
.markdown-body em { padding: 0 2px; color: rgba(243, 59, 31, 1) }
.markdown-body h1, .markdown-body h2, .markdown-body h3, .markdown-body h4, .markdown-body h5, .markdown-body h6 { position: relative; margin-top: 30px; margin-bottom: 20px; line-height: 1.5; font-weight: 700 }
.markdown-body h1 { text-align: center; padding-bottom: 5px; font-size: 32px; color: rgba(172, 31, 24, 1) }
.markdown-body h1:after { content: ""; display: block; margin: 4px auto 0; width: 100px; height: 2px; border-bottom: 2px solid rgba(243, 59, 31, 1) }
.markdown-body h2 { font-size: 28px; border-bottom: 1px solid rgba(243, 59, 31, 1) }
.markdown-body h2:before { content: "# " !important; color: rgba(243, 59, 31, 1) }
.markdown-body h3 { font-size: 24px; padding-left: 9px; border-left: 6px solid rgba(243, 59, 31, 1) }
.markdown-body h4 { font-size: 20px }
.markdown-body img { max-width: 100% }
.markdown-body hr { border-top: 1px solid rgba(187, 187, 187, 1); border-right: none; border-bottom: none; border-left: none; margin: 16px 0 }
.markdown-body code { overflow-x: auto; background-color: rgba(249, 241, 219, 1); color: rgba(238, 39, 70, 1); border-radius: 2px; font-size: 16px; padding: 1px 2px }
.markdown-body code, .markdown-body pre { font-family: -apple-system, -apple-system-body, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, PingFang SC, 思源黑体 CN, 思源黑体, JetBrains Mono, Fira Code, Menlo, Ubuntu Mono, Consolas, sans-serif }
.markdown-body pre { overflow: auto; position: relative; line-height: 1.75 }
.markdown-body pre>code { margin: 12px 0 !important; border-radius: 3px; font-size: 15px; padding: 16px 12px; word-break: normal; display: block; overflow-x: auto; color: rgba(51, 51, 51, 1); background: rgba(247, 247, 247, 1) }
.markdown-body a { text-decoration: none; color: rgba(23, 129, 181, 1); padding: 0 2px; border-bottom: 1px solid rgba(23, 129, 181, 1) }
.markdown-body a:active, .markdown-body a:hover { border-bottom: 2px solid rgba(243, 59, 31, 1); color: rgba(172, 31, 24, 1) }
.markdown-body blockquote { color: rgba(61, 61, 61, 1); background-color: rgba(255, 249, 249, 1); padding: 6px 16px; margin: 16px 0; border-left: 3px solid rgba(240, 124, 130, 1) }
.markdown-body blockquote:after { display: block; content: "" }
.markdown-body blockquote>p { margin: 6px 0 }
.markdown-body ol, .markdown-body ul { padding-left: 30px }
.markdown-body ol li, .markdown-body ul li { margin-bottom: 6px }
.markdown-body ol li .task-list-item, .markdown-body ul li .task-list-item { list-style: none }
.markdown-body ol li .task-list-item ol, .markdown-body ol li .task-list-item ul, .markdown-body ol ol, .markdown-body ol ul, .markdown-body ul li .task-list-item ol, .markdown-body ul li .task-list-item ul, .markdown-body ul ol, .markdown-body ul ul { margin-top: 6px }
.markdown-body ol li { padding-left: 6px }
.markdown-body ::marker { color: rgba(243, 59, 31, 1) }
.markdown-body .contains-task-list { padding-left: 0 }
.markdown-body .task-list-item { list-style: none }
.markdown-body .task-list-item input[type="checkbox"] { position: relative }
.markdown-body .task-list-item input[type="checkbox"]:before { content: ""; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: rgba(255, 255, 255, 1); border: 1px solid rgba(240, 124, 130, 1); border-radius: 3px; box-sizing: border-box; z-index: 1 }
.markdown-body .task-list-item input[type="checkbox"]:checked:after { content: "✓"; position: absolute; top: -5px; left: 0; right: 0; bottom: 0; width: 0; height: 0; color: rgba(243, 59, 31, 1); font-size: 16px; font-weight: 700; z-index: 2 }
.markdown-body table { display: inline-block !important; font-size: 14px; width: auto; max-width: 100%; overflow: auto; border-spacing: 0; border-collapse: collapse }
.markdown-body table thead { background: rgba(255, 249, 249, 1); color: rgba(0, 0, 0, 1); text-align: left; font-size: 15px }
.markdown-body table tr:nth-child(2n) { background-color: rgba(252, 252, 252, 1) }
.markdown-body table tr:hover { background-color: rgba(255, 249, 249, 1) }
.markdown-body table td, .markdown-body table th { padding: 12px 7px; line-height: 24px; border: 1px solid rgba(249, 241, 219, 1) }
.markdown-body table td { min-width: 120px }
@media (max-width: 720px) { .markdown-body h1 { font-size: 24px } .markdown-body h2 { font-size: 20px } .markdown-body h3 { font-size: 18px } }.markdown-body pre, .markdown-body pre>code.hljs { background: rgba(255, 255, 255, 1); color: rgba(0, 0, 0, 1) }
.xml .hljs-meta { color: rgba(192, 192, 192, 1) }
.hljs-comment, .hljs-quote { color: rgba(0, 116, 0, 1) }
.hljs-attribute, .hljs-keyword, .hljs-literal, .hljs-name, .hljs-selector-tag, .hljs-tag { color: rgba(170, 13, 145, 1) }
.hljs-template-variable, .hljs-variable { color: rgba(63, 110, 116, 1) }
.hljs-code, .hljs-meta-string, .hljs-string { color: rgba(196, 26, 22, 1) }
.hljs-link, .hljs-regexp { color: rgba(14, 14, 255, 1) }
.hljs-bullet, .hljs-number, .hljs-symbol, .hljs-title { color: rgba(28, 0, 207, 1) }
.hljs-meta, .hljs-section { color: rgba(100, 56, 32, 1) }
.hljs-built_in, .hljs-builtin-name, .hljs-class .hljs-title, .hljs-params, .hljs-type { color: rgba(92, 38, 153, 1) }
.hljs-attr { color: rgba(131, 108, 40, 1) }
.hljs-subst { color: rgba(0, 0, 0, 1) }
.hljs-formula { background-color: rgba(238, 238, 238, 1); font-style: italic }
.hljs-addition { background-color: rgba(186, 238, 186, 1) }
.hljs-deletion { background-color: rgba(255, 200, 189, 1) }
.hljs-selector-class, .hljs-selector-id { color: rgba(155, 112, 63, 1) }
.hljs-doctag, .hljs-strong { font-weight: 700 }
.hljs-emphasis { font-style: italic }
FRP 服务搭建
(基于Ubuntu+LXD下的FRP内网穿透,实现ssh与远程控制)
Ubuntu下实现frp服务的大致流程:
- 下载frp软件;
- 配置frps.ini;
- 启动frps服务;
- 配置frpc.ini;
- 启动frpc服务;
- 配置frp服务器的自启动服务;
- 配置frp客户端的自启动服务。
步骤1:Ubuntu下从GitHub下载最新版的frp软件包:
- 使用wget命令从frp的GitHub官网上下载:wget github.com/fatedier/fr…
- 解压frp文件到/home下:sudo tar -zxvf frp_0.49.0_linux_amd64.tar.gz -C /home
- 重命名frp文件目录名为nat:
sudo mv frp_0.49.0_linux_amd64/ nat/
步骤2:了解frps与frpc的区别:
- Frp服务需要在服务器端配置frps.ini文件,然后启动./frps服务。在客户机端配置frpc.ini文件,然后启动./frpc服务(要先启动服务器,再启动客户端,顺序不能改变);
- frps*类文件是服务器端必须的文件;
- frpc*类文件是客户机端必须的文件。
步骤3:配置frps.ini以及启动frp服务端:
- 在服务器端执行步骤 1;
- 查看nat的目录结构:
- 配置frps.ini: sudo vim frps.ini,并写入下图命令:
- bind_port=7000 代表frp服务的通信端口;
- dashboard_port=7501 代表frp WEB后台端口;
- dashboard_user=admin 代表frp WEB登录用户名;
- dashboard_pwd=admin 代表frp WEB登录密码;
- enable_prometheus=true 代表开启frp进程监控;
- authentication_method=token 代表frp服务使用token进行用户身份验证;
- token=202211054037 代表token的验证字符。
- Frp服务器端开启frp服务(nat目录下):./frps -c ./frps.ini
显示frps started successfully 证明frp客户端启动成功
步骤4:配置frpc.ini以及启动frp客户端:
- 在服务器端执行步骤1;
- 查看nat的目录结构:
- 配置frpc.ini: sudo vim frpc.ini,并写入下图命令:
- server_addr = 192.168.5.75 代表frp服务器的地址;
- server_port = 7000 代表frp的通信端口,服务器和客户端之间要设置的一样;
- token=202211054037 代表token的验证字符,需要和服务器端设置的一致;
- [ssh-tf] 代表客户机ssh进程名,不同客户机上frpc.ini的名字要设置的不一样;
- type = tcp
- local_ip = 127.0.0.1 代表客户机,如果设置frp多层代理,需要更改此地址;
- local_port = 22 代表客户机ssh进程的端口;
- remote_port = 60501 代表客户机22端口要和服务器60501端口相连;
- [mstsc-tf] 代表客户机mstsc进程名;
- type = tcp
- local_ip = 127.0.0.1 代表是客户机自身和服务器相连;
- local_port = 3389 代表客户机mstsc进程的端口号;
- remote_port = 60511 代表客户机mstsc进程要和服务器的60511端口相连;
- Frp客户端开启frp服务(nat目录下):./frpc -c ./frpc.ini
显示frpc started successfully 证明frp客户端启动成功,则Frp服务已搭建完毕
步骤5:分别在frp服务器端以及frp客户端设置frp开机自启服务
此时Frp服务只是一次性的,当终端关闭以后,Frp服务也就下线了。因此我们有必要设置frp的开机自启服务。
1. 服务器端的frp自启服务设置;
- 新建frps.service文件:sudo vi /etc/systemd/system/frps.service
- 写入frps.service配置:
- 将frps自启服务托管给systemctl:systemctl enable frps
- 开启frps服务:systemctl start frps
2.客户端的frp自启服务设置;
新建frpc.service文件:sudo vi /etc/systemd/system/frpc.service
写入frpc.service配置:
将frpc自启服务托管给systemctl:systemctl enable frpc
开启frpc服务:systemctl start frpc
此时Frp服务搭建完成。
可能出现的问题:
- 如果使用的云主机作为frps,注意打开云主机的端口,否则frp服务无法启动;
- 服务器端打开了相关端口后,客户端如果开启防火墙(ufw),需要允许相关端口(ssh是22端口,mstsc是3389端口)通过;sudo ufw allow 22
结束
FRP 服务的搭建(内网穿透)的更多相关文章
- linux之frp服务部署(内网穿透)
frp服务部署(内网穿透) 目的 更快的进行内网穿透调试以及云端开发测试 服务器为CentOS 7,客户端为win11 frp介绍 frp 是一个开源项目, 采用 C/S 模式,将服务端部署在具有公网 ...
- 0001_20190327_使用frp搭建内网穿透
1. 环境 a) 公网服务器为阿里云的ECS Windows 2008 R2服务器, 有公网IP地址; 这个作为frp的服务器 b) 内网是开发服务器, Cento ...
- 借助FRP反向代理实现内网穿透
一.frp 是什么? frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP.UDP.HTTP.HTTPS 等多种协议.可以将内网服务以安全.便捷的方式通过具有公网 IP 节点的中转暴露到公 ...
- frp + nginx 配置多人共用的http 内网穿透服务
来源:简书 https://www.jianshu.com/p/c9d7527d607b 一. 前言 frp 是一个用Go语言开发的,可用于内网穿透的高性能的反向代理应用,支持 tcp, udp ...
- 四、frp内网穿透服务端frps.ini各配置参数详解
[必须]标识头[common]是不可或缺的部分 [必须]服务器IPbind_addr = 0.0.0.00.0.0.0为服务器全局所有IP可用,假如你的服务器有多个IP则可以这样做,或者填写为指定其中 ...
- 分享一个内网穿透工具frp
首先简单介绍一下内网穿透: 内网穿透:通过公网,访问局域网里的IP地址与端口,这需要将局域网里的电脑端口映射到公网的端口上:这就需要用到反向代理,即在公网服务器上必须运行一个服务程序,然后在局域网中需 ...
- frp 内网穿透访问内网Web服务
ps:最近想要通过域名(公网)访问或者测试在本地搭建的 web 服务(不想在公网IP服务器上再部署个服务,也不想通过teamview等工具远程卡到爆!), 由于本地机器没有公网 IP,无法将域名解析到 ...
- Frp内网穿透搭建,家庭主机对外提供接口,支持ssh访问
Frp内网穿透搭建,家庭主机对外提供接口,支持ssh访问 1.使用场景: 需求1.家中服务器 ubuntu 主机,跑接口服务,需要对外暴漏, 需求2.同时需要在外网ssh远程 关键词: frp内网 ...
- 基于frp的内网穿透实例4-为本地的web服务实现HTTPS访问
原文地址:https://wuter.cn/1932.html/ 一.想要实现的功能 目前已经实现将本地的web服务暴露到公网,现想要实现https访问.(前提:已经有相应的证书文件,如果没有就去申请 ...
- frp内网穿透学习
前言 因为自己在内网,但是目标站在外网,这时候可以通过内网穿透工具,将接收到的请求转发到内网,实现在内网的msf可以控制外网的靶机. 也看了一些Ngrok,花生壳的,发现Ngrok.cc这个看文章说有 ...
随机推荐
- ETL多流数据合并的使用技巧
在ETLCloud中,多流数据合并是指将来自不同源的数据流实时或批量地合并到一个统一的数据流或数据集.这对于确保数据一致性.减少数据冗余和提高查询效率至关重要.通过合并多流数据,可以实现对多源数据的综 ...
- API开发平台,专注API高效开发平台
为什么要选择RestCloud API开发平台? API开发平台是RestCloud团队研发的基于微服务架构的专注API高效开发的专业化平台,与传统的API开发模式相比,具有更轻量级,开发速度更快,功 ...
- 题解:[蓝桥杯 2024 省 C] 商品库存管理
本文转载自我在洛谷上P10903的题解. 前置知识:前缀和与差分 前缀和 简单而言,给定数组 $a_1,a_2,a_3,\cdots,a_n$,现在想要快速求出 $a_l,a_{l+1},a_{l+2 ...
- 8种品牌PLC单片机实现Modbus TCP以太网通信协议客户端视频教程
8种品牌PLC单片机实现Modbus TCP以太网通信协议客户端视频教程一.罗克韦尔AB Micro850系列PLC实现Modbus TCP以太网通信协议客户端视频教程:罗克韦尔AB Micro850 ...
- Web前端入门第 82 问:JavaScript cookie 有大小限制吗?溢出会怎样?
面试时候经常会被问及 Cookie 大小限制,但一直没尝试写一些 demo 测试下溢出极限值会怎样~~ 本文就来看看各种极限情况! 英文 测试代码: (() => { const maxSize ...
- PGSQL 批量更新
概述 在我们的平常业务中,经常需要批量更新数据,例如:现阶段需要更新 1000 个包裹的上网时间,每个包裹的上网时间是不一样的,假如我们一个一个包裹更新,则需要与数据库进行 1000 次的交互,很大的 ...
- RPC框架的优化
服务注册 消费者如何知道提供者的调用地址呢? 我们需要注册中心来保存服务提供者的地址.消费者要调用服务时,只需从注册中心获取对应服务的提供者地址即可.注册中心可以使用redis. 负载均衡 如果有多个 ...
- [题解]UVA10902 Pick-up Sticks
UVA10902 Pick-up Sticks 题意简述 多测.给定坐标系上依次给定\(n\)根木棍的起始和终止坐标,按顺序放置这些木棍,询问最终处在最上层的木棍有哪些. \(n\le 100000\ ...
- BIERv6测试解析— 如何使用仪表进行转发性能测试
什么是BIERv6 BIERv6(Bit Index Explicit Replication IPv6 encapsulation)是一种新型组播方案. BIERv6使用比特串封装目的节点集合,无需 ...
- Onvif/RTSP摄像头直播中云台控制
LiveNVR支持预置位控制,包括转到指定预置位,设置指定预置位,删除指定预置位 预置位在安防领域有较为普遍的应用,可以进行很多既定位置的跳转,很方便 之前我们说过如何用Onvif协议进行设备的发现, ...