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

内网穿透(docker部署frp)

文章目录

  • 内网穿透
    • 实现内网穿透的常见方法
  • frp
    • frp的实现原理
    • frps服务端应用部署
      • 配置文件部署
      • 参数配置
    • frpc客户端部署

内网穿透

内网穿透是指在内部网络(内网)中实现穿透外网(公网)的通信。内网通常是指公司、组织或家庭等内部网络,而外网则是指互联网,也就是公共网络。内网穿透的目的是让位于内网中的设备或应用程序能够访问外部网络中的资源,实现内外网的通信。

实现内网穿透的常见方法

实现内网穿透的方法有很多,以下是一些常见的内网穿透技术:

  1. 虚拟专用网络(VPN):通过建立VPN连接,可以让位于内网的设备访问外网的资源,但这种方法相对复杂,需要配置和管理VPN服务器。
  2. 代理服务器:通过在内外网之间设置代理服务器,可以让位于内网的设备通过代理服务器访问外网资源。这种方法简单易用,但可能会导致网络延迟和数据传输速度变慢。
  3. 端口映射:通过在内外网之间映射特定的端口,可以让位于内网的设备访问外网的资源。这种方法简单易用,但需要关心端口映射的安全问题。
  4. 负载均衡:通过在内外网之间设置负载均衡器,可以将内外网的流量分发到多个服务器上,从而实现内外网的通信。这种方法适用于大型企业和高性能场景,但需要部署和维护负载均衡器。
  5. 隧道技术:通过在内外网之间建立隧道,可以让位于内网的设备访问外网的资源。这种方法类似于VPN,但更加简洁易用。

frp

  • fatedier/frp GitHub 官方仓库

frp是一款免费开源的专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS、Websocket、P2P 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

frp的实现原理

frp是基于C/S模式实现的内网穿透服务代理应用,通过在公网IP上部署服务器端应用,客户端部署在内网上。当访问服务端暴露的应用时,反向代理到内网的服务实现内网穿透的代理。

frps服务端应用部署

在frp中,分为客户端frpc和服务端fprs,frp应用支持以toml配置文件的方式和参数的方式进行服务部署。frp应用通过-c参数指定配置文件进行读取

frps -c frps.toml
frpc -c frpc.toml

配置文件部署

在部署frps时,需要指定绑定端口用于接收客户端连接,默认情况下绑定端口为7000,当需要修改用于客户端连接的端口时,可以修改此配置。在配置文件中通过bindPort参数进行配置

# frps.toml
bindPort = 7000

通过docker compose部署

version: '3.9'
services:frps:image: fatedier/frps:v0.53.2hostname: frpscontainer_name: frpsvolumes:- "./frps.toml:/frps.toml"command:- "-c"- "/frps.toml"ports:- "7000:7000"

参数配置

同样的,frp也支持在启动时直接以参数的方式进行服务部署,通过--bind_port可以设置frps的绑定端口

frps --bind_port 7000

通过docker compose部署

version: '3.9'
services:frps:image: fatedier/frps:v0.53.2hostname: frpscontainer_name: frpscommand:- "--bind_port"- "7000"ports:- "7000:7000"

frpc客户端部署

frpc客户端中,主要配置为

  • 配置frps连接信息
  • 配置内网应用

frpc中需要配置的内容相对较多,推荐以文件的方式进行配置,以下是frpc.toml的简单示例

# 服务端地址
serverAddr = "x.x.x.x"
# 服务端配置的bindPort
serverPort = 7000[[proxies]]
# 代理应用名称,根据自己需要进行配置
name = "ssh"
# 代理类型
type = "tcp"
# 客户端代理应用IP
localIP = "127.0.0.1"
# 客户端代理应用端口
localPort = 8080
# 服务端反向代理端口
remotePort = 7001

如上述示例所示,为客户端frpc代理配置,通过tcp协议的方式将本地8080端口服务代理到serverAddr:7001上,代理后,可以通过serverAddr:7001直接在公网上访问到本地服务。

通过docker compose部署frpc应用:

version: '3.9'
services:frpc:image: fatedier/frpc:v0.53.2hostname: frpccontainer_name: frpcvolumes:- "./frpc.toml:/frpc.toml"command:- "-c"- "/frpc.toml"network_mode: "host"
  • fatedier/frpc镜像在启动时,直接运行frpc命令,frpc命令到默认配置文件默认参数为./frpc.ini文件,所以必须要挂载配置文件到容器内,否则无法直接启动frpc服务
  • 通过frpc进行内网穿透,frpc需要可以直接访问到需要内网穿透代理到应用,所以采用network_mode: host参数将frpc服务到网络设置为宿主机网络,否则容器内无法直接访问宿主机上的应用,网络根据代理应用进行配置
    • 由于docker是基于Linux内核开发的,在Mac、Windows系统上对Docker应用本质是通过虚拟机运行对,所以network_mode: host对应的网络为虚拟机网络,而不是宿主机网络,所以该参数在Mac、Windows系统上不受支持,可以考虑直接以应用的方式在以上系统部署
  • 部署后,内网服务的公网访问方式为serverAddr:remotePortbindPort仅用于frp交互使用,所以在上面的frps通过docker方式中,需要将内网对应的remotePort和宿主机关联配置好
    • 在部署frps指定ports时可以考虑给定范围的方式进行部署

更多frp部署应用方式请参考frp 官方文档

相关文章:

内网穿透(docker部署frp)

文章目录 内网穿透实现内网穿透的常见方法 frpfrp的实现原理frps服务端应用部署配置文件部署参数配置 frpc客户端部署 内网穿透 内网穿透是指在内部网络(内网)中实现穿透外网(公网)的通信。内网通常是指公司、组织或家庭等内部网…...

Java设计模式 | 简介

设计模式的重要性: 软件工程中,设计模式(design pattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。 这个术语由埃里希 伽玛(Erich Gamma)等人在1…...

微信小程序video 点击自动全屏播放

//因为这个地址可能是图片也可能是视频 点击 图片可以预览&#xff0c;点击视频可放大全屏自动播放。 代码如下 <view v-else :class{contentImg: x.picture.length0} style"margin-top: 10px;"v-for"(x1, y1) in x.picture" :key"y"><…...

MySQL基础面试问题(一)

MySQL面试问题的标准回答&#xff1a; 什么是数据库范式&#xff1f;MySQL中常见的范式有哪些&#xff1f; 标准回答&#xff1a;数据库范式是一组规则&#xff0c;用于设计关系型数据库的结构&#xff0c;以减少数据冗余和提高数据的一致性。常见的数据库范式包括第一范式&…...

抖音爬虫批量视频提取功能介绍|抖音评论提取工具

抖音爬虫是指通过编程技术从抖音平台上获取视频数据的程序。在进行抖音爬虫时&#xff0c;需要注意遵守相关法律法规和平台规定&#xff0c;以确保数据的合法获取和使用。 一般来说&#xff0c;抖音爬虫可以实现以下功能之一&#xff1a;批量视频提取。这个功能可以用于自动化地…...

mac真的安装不了vmware吗 mac如何安装crossover crossover序列号从哪里买 购买正版渠道

有些用户可能想在mac上运行一些只能在windows上运行的软件&#xff0c;比如游戏、专业软件等。这时候&#xff0c;就需要用到虚拟机技术&#xff0c;也就是在mac上安装一个可以模拟其他操作系统的软件&#xff0c;比如vmware或者crossover。那么&#xff0c;mac真的安装不了vmw…...

C语言-指针详解速成

1.指针是什么 C语言指针是一种特殊的变量&#xff0c;用于存储内存地址。它可以指向其他变量或者其他数据结构&#xff0c;通过指针可以直接访问或修改存储在指定地址的值。指针可以帮助我们在程序中动态地分配和释放内存&#xff0c;以及进行复杂的数据操作。在C语言中&#…...

C# RabbitMQ使用--动态更新

在使用 RabbitMQ 的 C# 客户端库时&#xff0c;只需要在应用程序中引用 RabbitMQ.Client 包&#xff0c;而不需要单独安装 RabbitMQ 服务器。 RabbitMQ.Client 是一个用于在 C# 中与 RabbitMQ 服务器进行通信的客户端库。通过使用该客户端库&#xff0c;你可以在应用程序中创建…...

Unity资源加密解决方案

据统计&#xff0c;全球范围内超过50%的游戏均使用Unity创作而成&#xff0c;作为游戏开发市场第一大游戏引擎占有者&#xff0c;Unity已经全面覆盖到各个游戏平台。 全球游戏引擎市场占有率 由于体量庞大&#xff0c;Unity游戏已成为受游戏黑灰产攻击的重灾区&#xff0c;因游…...

使用 yarn 的时候,遇到 Error [ERR_REQUIRE_ESM]: require() of ES Module 怎么解决?

晚上回到家&#xff0c;我打开自己的项目&#xff0c;执行&#xff1a; cd HexoPress git pull --rebase yarn install yarn dev拉取在公司 push 的代码&#xff0c;然后更新依赖&#xff0c;最后开始今晚的开发时候&#xff0c;意外发生了&#xff0c;竟然报错了&#xff0c;…...

多维时序 | Matlab实现基于VMD-DBO-BiLSTM、VMD-BiLSTM、BiLSTM的多变量时间序列预测

多维时序 | Matlab实现基于VMD-DBO-BiLSTM、VMD-BiLSTM、BiLSTM的多变量时间序列预测 目录 多维时序 | Matlab实现基于VMD-DBO-BiLSTM、VMD-BiLSTM、BiLSTM的多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab实现基于VMD-DBO-BiLSTM、VMD-BiLSTM、…...

实战营第四节笔记

这节课包含四大部分&#xff0c;为finetune简介、xtuner介绍、使用8GB玩转LLM和动手实践环节。 LoRA和QLoRA是两种很重要的方法&#xff0c;对微调模型、减少内存使用非常有效。 后面是XTuner的介绍。 之后是动手实践。可参考https://github.com/InternLM/tutorial/blob/ma…...

【网络】HTTPS协议原理

目录 一、HTTPS是什么&#xff1f; 二、常见加密方式 2.1、只使用对称加密 2.2、只使用非对称加密 2.3、双方都使用非对称加密 2.4、非对称加密对称加密(中间人攻击情况) 2.5、非对称加密对称加密证书认证 三、数据摘要&&数据指纹 四、CA证书 五、数字签名 六…...

C#常识篇(一)

面向对象的三大特性 继承&#xff1a;子类通过继承父类来获取基础特性&#xff0c;并且能够基于父类进行扩展以及提升代码的复用性。继承具有传递性&#xff0c;例如A继承自B&#xff0c;C继承自A&#xff0c;那么C就间接继承自B。在C#中&#xff0c;每个类仅允许继承一个父类。…...

Linux使用C语言获取进程信息

Linux使用C语言获取进程信息 Author: OnceDay Date: 2024年2月22日 漫漫长路&#xff0c;才刚刚开始… 全系列文章可查看专栏: Linux实践记录_Once_day的博客-CSDN博客 参考文档: Linux proc目录详解_/proc/mounts-CSDN博客Linux下/proc目录介绍 - 知乎 (zhihu.com)Linux内…...

tomcat通过JAVA_OPTS注入自定义变量 —— 筑梦之路

背景说明 tomcat部署的java应用在k8s集群或容器中&#xff0c;想要给tomcat传自定义变量&#xff0c;应该如何实现&#xff1f; 解决方法 1. 在k8s集群或容器环境中通过env或者configmap方式添加自定义的环境变量 比如&#xff1a; my_key: aaaa 2. tomcat下新增脚本&am…...

Linux——简单的Shell程序

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、Shell程序思路二、Shell代码展示 一、Shell程序思路 用下图的时间轴来表示事件的发生次序…...

计算机网络-网络互联与互联网(一)

1.常用网络互联设备&#xff1a; 1层物理层&#xff1a;中继器、集线器2层链路层&#xff1a;网桥、交换机3层网络层&#xff1a;路由器、三层交换机4层以上高层&#xff1a;网关 2.网络互联设备&#xff1a; 中继器Repeater、集线器Hub&#xff08;又叫多端口中继器&#xf…...

Android 解决后台服务麦克风无法录音问题

Android 解决后台无法录音问题 问题分析问题来源解决方案1. 修改清单文件:`AndroidManifest.xml`2. 修改启动服务方式3. 服务启动时创建前台通知并且指定前台服务类型参考文档最后我还有一句话要说我用心为你考虑黄浦江的事情,你心里想的却只有苏州河的勾当 问题分析 安卓9.…...

【计网】TCP的三次握手四次挥手

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;JAVA ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 三次握手&#xff08;Connection Establishment&#xff09; 四次挥手&#xff08;Connection Termination&#xff09; 结语 我…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

华为OD机考-机房布局

import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...

OD 算法题 B卷【正整数到Excel编号之间的转换】

文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的&#xff1a;a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...

SQL Server 触发器调用存储过程实现发送 HTTP 请求

文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...

《Docker》架构

文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器&#xff0c;docker&#xff0c;镜像&#xff0c;k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...