【服务部署】常用内网穿透方案

news2024/12/23 20:46:29

一、前言

由于一些开发及使用需求,需要将内网机器端口映射到公网,达到公网访问内网环境的目的
本文主要介绍几种常用的内网穿透方案

  • ssh远程端口转发
    • 部署简单,无需额外安装软件包
  • frp反向代理
    • 功能配置丰富,部署相对复杂,需要额外安装软件包

二、ssh远程端口转发

1、说明

整体流程示意如下,内网机器通过ssh隧道与公网机器连接在一起,当用户访问公网机器指定端口时,公网机器把数据通过管道传输到内网机器,从而实现公网访问内网环境的目的

在这里插入图片描述

示例在内网机器上建立ssh连接,将公网机器8080端口绑定到内网机器80端口,所有发送给公网机器8080端口的数据,都会通过ssh隧道转发给内网机器80端口进行最终处理

2、配置
2.1、公网机器配置
  • 配置sshd,开启GatewayPorts配置,允许端口转发
sed -i "s|#GatewayPorts no|GatewayPorts yes|" /etc/ssh/sshd_config
systemctl restart sshd
  • 关闭防火墙或者开放监听端口访问
2.2、内网机器配置

内网机器执行命令,配置ssh端口转发:ssh -NTf -R {remote-ip}:{remote-port}:{local-ip}:{local-port} root@{remote-ip} -p {remote-ssh-port}

  • -N:表示只连接远程主机,不打开远程shell
  • -T:表示不为这个连接分配TTY
  • -f:表示连接成功后,转入后台运行
  • -R:表示将端口绑定到远程服务器,反向代理
  • -p:默认为22端口,当远程服务器ssh端口非22端口时,需要单独指定
内网机器
[root@node253 ~]# ssh -NTf -R 8080:192.168.122.253:80 root@107.172.217.97 -p 22
[root@node253 ~]# lsof -i:80
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   1143 root    7u  IPv4  28235      0t0  TCP *:http (LISTEN)
[root@node253 ~]# curl 127.0.0.1:80
<!DOCTYPE html><html><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge,chrome=1"><meta name=renderer content=webkit><meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"><title></title><link rel="shortcut icon" href=./favicon.ico><link href=./statics/css/app.46205092776a9bbb475848bede343ea8.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./statics/js/manifest.b09c107ad7fca7006ebf.js></script><script type=text/javascript src=./statics/js/vendor.52b14d12c6e40d435cf2.js></script><script type=text/javascript src=./statics/js/app.9c4b7074a0a0c7993553.js></script></body><script></script></html>

公网机器
[root@node78 ~]# lsof -i:8080
COMMAND  PID USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
sshd    5070 root    8u  IPv4 253167552      0t0  TCP *:multiling-http (LISTEN)
[root@node78 ~]# curl 107.172.217.97:8080
<!DOCTYPE html><html><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge,chrome=1"><meta name=renderer content=webkit><meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"><title></title><link rel="shortcut icon" href=./favicon.ico><link href=./statics/css/app.46205092776a9bbb475848bede343ea8.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./statics/js/manifest.b09c107ad7fca7006ebf.js></script><script type=text/javascript src=./statics/js/vendor.52b14d12c6e40d435cf2.js></script><script type=text/javascript src=./statics/js/app.9c4b7074a0a0c7993553.js></script></body><script></script></html>

注:内网机器网络不稳定时,ssh连接可能会被断开,需要再次发起ssh连接操作。如网络恶劣,可改用autossh进行连接(当ssh连接中断时,自动发起重连)

软件安装:

sudo yum install wget gcc make
wget http://www.harding.motd.ca/autossh/autossh-1.4e.tgz
tar -xf autossh-1.4e.tgz
cd autossh-1.4e
./configure
make
sudo make install

三、frp反向代理

1、说明

参考官方文档:gofrp.org

软件包github地址:fatedier/frp

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

节点类型节点IP地址角色
公网机器66.66.67.227frps
内网机器107.172.217.97frpc
2、部署配置

需要将内网机器7480端口映射到公网机器8080端口提供访问

2.1、frps部署

公网机器执行以下操作部署frps

[root@node97 ~]# wget https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_amd64.tar.gz
[root@node97 ~]# tar -zxvf frp_0.38.0_linux_amd64.tar.gz
[root@node97 ~]# cd frp_0.38.0_linux_amd64
[root@node97 frp_0.38.0_linux_amd64]# cat frps.ini 
[common]
bind_port = 7000
[root@node97 frp_0.38.0_linux_amd64]# ./frps -c frps.ini

注:如需长时间运行,可搭配screen 一起使用

2.2、frpc部署

内网机器执行以下操作部署frpc

[root@node227 ~]# wget https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_amd64.tar.gz
[root@node227 ~]# tar -zxvf frp_0.38.0_linux_amd64.tar.gz
[root@node227 ~]# cd frp_0.38.0_linux_amd64
[root@node227 frp_0.38.0_linux_amd64]# cat frpc.ini 
[common]
server_addr = 107.172.217.95
server_port = 7000

[radosgw]
type = tcp
local_ip = 66.66.67.227
local_port = 7480
remote_port = 8080
[root@node227 frp_0.38.0_linux_amd64]# ./frpc -c frpc.ini 
  • server_addr:frps节点IP地址
  • server_port:frps节点通信端口,默认为7000
  • type:代理类型,如tcp、udp、http、https等
  • local_ip:frpc节点IP地址
  • local_port:frpc节点服务端口
  • remote_port:frps节点监听端口,当frps节点remote_port 被访问时,相关流量会被转到到frpc节点local_ip对应端口local_port

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1274315.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

git 出现 failed to push some refs to ‘xxx‘

初始化仓库 推送代码 git push -u origin “master” git 出现 failed to push some refs to ‘xxx’ 错误 出错截图&#xff1a; 原因&#xff1a; 本地init创建的仓库&#xff0c;主分支叫main&#xff0c;而这里推的分支是 master 刚刚初始化的仓库没有 main分支 所以推不上…

【散列函数的构造方法(直接定址法 ==除留余数法==),散列表的查找(1.开放地址法,2.链地址法(拉链法))】

文章目录 散列函数的构造方法直接定址法除留余数法 散列表的查找1.开放地址法线性探测法二次探测法伪随机探测法 2.链地址法&#xff08;拉链法&#xff09; 散列表的查找效率 散列函数的构造方法 散列存储 选取某个函数&#xff0c;依该函数按关键字计算元素的存储位置。 Loc…

IntelliJ IDEA安装使用教程

IntelliJ IDEA是一个流行的Java 集成开发环境&#xff08;IDE&#xff09;&#xff0c;由JetBrains公司开发。它是一款全功能的IDE&#xff0c;支持多种编程语言&#xff0c;如Java、Kotlin、Groovy、Scala、Python、JavaScript、HTML、CSS等等。IntelliJ IDEA 提供了高效的代码…

智慧垃圾分拣站:科技改变城市环境,创造更美好的未来

随着城市化进程的不断加快&#xff0c;垃圾处理问题日益凸显。为了更好地解决垃圾分类问题&#xff0c;越来越多的城市开始推广智慧垃圾分拣站&#xff0c;利用创新科技实现高效垃圾分类处理。 山海鲸使用三维建模技术&#xff0c;建立了一个智慧垃圾分拣站数字孪生模型&#x…

Linux重置MySql密码(简洁版)

关闭验证 /etc/my.cnf-->[mysqld]-->skip-grant-tables 重启MySql service mysql restart 登陆MySql mysql -u root 刷新权限 FLUSH PRIVILEGES; 更新密码 ALTER USER rootlocalhost IDENTIFIED BY 123456; 退出MySql exit 打开验证 /etc/my.cnf-->[mysqld]-->skip…

C语言中一些有关字符串的常见函数的使用及模拟实现(2)

在编程的过程中&#xff0c;我们经常要处理字符和字符串&#xff0c;为了⽅便操作字符和字符串&#xff0c;C语⾔标准库中提供了\n⼀系列库函数&#xff0c;接下来我们就学习⼀下这些函数。 在上一篇博客中已经讲解了strlen&#xff0c;strcpy&#xff0c;strcmp&#xff0c;st…

java+springboot实验室管理系统的设计与实现ssm+jsp

课题研究内容&#xff1a; &#xff08;1&#xff09; 系统需求分析&#xff08;构成模块&#xff0c;系统流程&#xff0c;功能结构图&#xff0c;系统需求&#xff09; &#xff08;2&#xff09; 实验室课程安排功能模块&#xff08;课程的录入和调补&#xff09; &#xff…

浅聊langchain-chatchat

个人的一点经验和总结&#xff0c;希望能帮助到大家。有不对的地方请留言和指正&#xff01; langchain-GLM是什么 langchain-GLM是一个本地知识库应用解决方案&#xff0c;支持以cli、web、api方式提供以本地知识库或在线资源为知识素材的对话服务&#xff0c;对中英文场景对…

如何通过降低设备六大损失帮助企业改善OEE

在各个行业中&#xff0c;改善设备综合效率OEE&#xff08;Overall Equipment Efficiency&#xff09;是企业实现高效生产和竞争优势的关键。然而&#xff0c;设备的六大损失常常影响着企业的OEE指标。本文将探讨如何通过降低这六大损失来帮助企业改善OEE&#xff0c;提高生产效…

GCN01——Ubuntu中设置vivado编辑器为vscode

确定vscode位置 在命令行中输入 which code得到文件地址 进入文件夹后可看到&#xff0c;这是个链接文件&#xff0c;不过无所谓&#xff0c;就用这个地址就行 设置Text Editor 打开setting选择右侧text editor 这里说明了如何进行设置 将自己的地址加进去就行 /usr/share…

分布式架构demo

1、外层创建pom 版本管理器 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.15</version><relativePath/> <!-- lookup parent from repository…

VIR-SLAM代码分析3——VIR_VINS详解之estimator.cpp/.h

前言 续接上一篇&#xff0c;本本篇接着介绍VIR-SLAM中estimator.cpp/.h文件的函数&#xff0c;尤其是和UWB相关的相比于VINS改动过的函数&#xff0c;仍然以具体功能情况代码注释的形式进行介绍。 重点函数介绍 优化函数&#xff0c;代码是先优化&#xff0c;后边缘化。 …

Linux 系统渗透提权-Server2204

B-3:Linux 系统渗透提权 任务环境说明: 服务器场景:Server2204(关闭链接) 用户名:hacker 密码:123456 1.使用渗透机对服务器信息收集,并将服务器中 SSH 服务端口号作为 flag 提 交; Flag:2283/tcp

【Android】解决安卓中并不存在ActivityMainBinding

安卓中并不存在ActivityMainBinding这个类&#xff0c;这个类是在XML布局的最外层加入就会自动生成。但是你在最后绑定主布局时会报错获取不到根节点getRoot(). 最好的办法就是&#xff0c;删除原来的最外层节点&#xff0c;再重新添加&#xff0c;感觉是因为复制时并没有让系…

如何让嵌入式开发板使用主机的网络

配置网络 1.开发板配置 将开发板和主机用网线连接 安装 net-tools&#xff0c;使用 ifconfig 命令 或者使用 ip 命令 su root ip a 发现一个 eth0的网口 ip link set xxx up 有多个网口时可以用该命令启用某一个网口 vim /etc/netplan/00-installer-config.yaml写入以下…

看一看什么是AI PC:人工智能电脑

大家好啊&#xff0c;我是董董灿。 今天在一个群聊里&#xff0c;聊到了关于 AI PC (人工智能电脑)的话题。 之前看到过关于 AI PC 的新闻&#xff0c;说的是联想集团董事长兼CEO杨元庆在一次演讲中提到了 AI PC 的概念&#xff0c;并且绘声绘色的描绘了AI PC 的发展前景。 下…

传统算法: Pygame 实现快速排序

使用 Pygame 模块实现了快速排序的动画演示。首先,它生成一个包含随机整数的数组,并通过 Pygame 在屏幕上绘制这个数组的条形图。接着,通过快速排序算法对数组进行排序,动画效果可视化每一步的排序过程。在排序的过程中,程序选择一个基准元素(pivot),将数组分成两部分,…

知识图谱最简单的demo实现

一、简介 知识图谱整个建立过程可以分为以下几点&#xff1a; #mermaid-svg-zJuLB8k8EgBQF8M0 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-zJuLB8k8EgBQF8M0 .error-icon{fill:#552222;}#mermaid-svg-zJuLB8k8E…

Java实现简单的王者荣耀游戏

一、创建新项目 首先创建一个新的项目&#xff0c;并命名为wangzherongyao。 其次在飞翔的鸟项目下创建一个名为img的文件夹用来存放游戏相关图片。详细如下图&#xff1a; 二、游戏代码 1、创建怪物类 1.bear&#xff1a; package beast;import wangzherogyao.GameFrame;…

代码随想录算法训练营第三十七天 _ 贪心算法_738.单调自增的数字、968.监督二叉树

学习目标&#xff1a; 60天训练营打卡计划&#xff01; 学习内容&#xff1a; 738.单调自增的数字 听不懂的时候就到该动手了。必须要从后向前操作&#xff0c;才能把压力逐级传给最前面的这一位。入如&#xff1a;322 class Solution {// java中的String不能修改&#xf…