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

一、前言

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

  • 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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

frp 配置内网访问

frp介绍 frp 是一个开源、简洁易用、高性能的内网穿透软件&#xff0c;支持 tcp, udp, http, https 等协议。frp 项目官网是 https://github.com/fatedier/frp 下载地址&#xff1a; https://github.com/fatedier/frp/releases frp工作原理 服务端运行&#xff0c;监听一个…

键盘敲入一个字母,操作系统发生了什么?

一、设备控制器 我们的电脑设备可以接非常多的输入输出设备&#xff0c;比如鼠标键盘网卡硬盘打印机等&#xff0c;每个设备的用法和功能都不相同&#xff0c;那操作系统是如何把这些输入输出设备统一管理的呢&#xff1f; 为了屏蔽设备之间的差异&#xff0c;每个设备都有一…

前端项目环境的搭建

一、下载并且安装Node&#xff08;不安装node&#xff0c;就安装nvm。nvm安装教程&#xff09;&#xff1a; 1.官网下载Node&#xff1a;https://nodejs.org/en/ 2.测试nodejs安装是否成功&#xff1a; 在windows powerShell中输入node -v 和 npm -v&#xff0c;看到版本号就…

【23-24 秋学期】NNDL 作业9 RNN - SRN

简单循环网络&#xff08;Simple Recurrent Network&#xff0c;SRN&#xff09;只有一个隐藏层的神经网络&#xff0e; 目录 1. 实现SRN &#xff08;1&#xff09;使用Numpy &#xff08;2&#xff09;在1的基础上&#xff0c;增加激活函数tanh &#xff08;3&#xff0…

rabbitMQ镜像队列的使用

在rabbitMQ集群中&#xff0c;默认发送消息时&#xff0c;队列默认时在一个节点上存在的。 我们以node01 node02 node03三节点集群为例&#xff0c;在node01声明队列发送消息后&#xff0c;发现&#xff1a; 测试队列只在节点node01上出现。 我们手动停止node01后&#xff0c…

#HarmonyOS:软件安装window和mac预览Hello World

Window软件地址 https://developer.harmonyos.com/cn/develop/deveco-studio#download 安装的建议 这个界面这样选&#xff0c;其他界面全部按照默认路径往下走&#xff01;&#xff01;&#xff01; 等待安装… 安装环境错误处理 一般就是本地node配置异常导致&#xff…

Nginx基线检查

扩展知识: Nginx主配置文件:/etc/nginx/nginx.conf 这是Nginx的主要配置文件,用于配置全局的设置、HTTP块、事件处理、邮件等内容。 打开并编辑配置文件 vim /etc/nginx/nginx.conf 一、关于禁止显示服务器版本号和操作系统版本信息: 简介: 在错误页面和响应头中显示…

SAP_ABAP_编程基础_逻辑流控制_比较运算符 / 比较字符串和数字串 / 比较二进制位结构 / 编程分支和循环

SAP ABAP 顾问&#xff08;开发工程师&#xff09;能力模型_Terry谈企业数字化的博客-CSDN博客文章浏览阅读470次。目标&#xff1a;基于对SAP abap 顾问能力模型的梳理&#xff0c;给一年左右经验的abaper 快速成长为三年经验提供超级燃料&#xff01;https://blog.csdn.net/j…

html/css中用float实现的盒子案例

运行效果&#xff1a; 代码部分&#xff1a; <!doctype html> <html> <head> <meta charset"utf-8"> <title>无标题文档</title> <style type"text/css">.father{width:300px; height:400px; background:gray;…

云轴科技ZStack助力龙芯打造IT产业新生态

11月28日&#xff0c;2023龙芯产品发布暨用户大会在国家会议中心启幕。大会以“到中流击水”为主题&#xff0c;现场发布新一代通用处理器龙芯3A6000、打印机主控芯片龙芯2P0500重磅成果&#xff0c;并对外公布龙芯处理器核IP及龙芯自主指令系统架构授权计划。作为龙芯的卓越行…

element-ui表格滚动效果,el-table滚动条样式重置

项目首页需要展示一个表格滚动区域&#xff0c;特此来记录一下 HTML <div class"table-box" mouseenter"mouseenter" mouseleave"mouseleave"><el-table :data"tableList" border height"400px" v-loading"…

spring日志输出到elasticsearch

1.maven <!--日志elasticsearch--><dependency><groupId>com.agido</groupId><artifactId>logback-elasticsearch-appender</artifactId><version>3.0.8</version></dependency><dependency><groupId>net.l…

单机zk安装与zk四字命令

一、下载 Apache ZooKeeper可以在 Linux 系统中使用 wget 命令直接下载&#xff0c;官网地址 Apache ZooKeeper 二、解压 tar -zxvf apache-zookeeper-3.8.3-bin.tar.gz 进去解压的目录中&#xff0c; 进入到 zk 解压目录的 conf 目录&#xff0c;复制 zoo_sample.cfg 文件&a…

leetCode 93.复原 IP 地址 + 回溯算法 + 图解 + 笔记

93. 复原 IP 地址 - 力扣&#xff08;LeetCode&#xff09; 有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 . 分隔。 例如&#xff1a;"0.1.2.201" 和 "192.168.1.1…

基于AT89C51单片机的电子闹钟设计

1&#xff0e;设计任务 利用AT89C51单片机为核心控制元件,设计一个电子闹钟&#xff0c;设计的系统实用性强、操作简单&#xff0c;实现了智能化、数字化。 &#xff08;1&#xff09;按开始键自动进入时间显示&#xff0c;开始为0&#xff0c;按K1键进入更改时间&#xff0c…

代码随想录算法训练营 ---第五十一天

1.第一题&#xff1a; 简介&#xff1a; 本题相较于前几题状态复杂了起来&#xff0c;因为多了一个冷冻期。本题讲解可去代码随想录看&#xff0c;这里差不多只是加了些自己的理解。 动规五部曲&#xff0c;分析如下&#xff1a; 确定dp数组以及下标的含义 dp[i][j]&#x…

数据库应用:MongoDB 文档与索引管理

目录 一、理论 1.MongoDB文档管理 2.MongoDB索引管理 二、实验 1.MongoDB文档管理 2.MongoDB索引管理&#xff08;索引添加与删除&#xff09; 3.MongoDB索引管理&#xff08;全文索引&#xff09; 4.MongoDB索引管理&#xff08;多列索引&#xff09; 5.MongoDB索引管…

【办公软件】Outlook启动一直显示“正在启动”的解决方法

早上打开电脑Outlook2016以后&#xff0c;半个多小时了&#xff0c;一直显示这个界面&#xff1a; 解决办法 按WIN R键打开“运行”&#xff0c;输入如下命令&#xff1a; outlook.exe /safe 然后点击“确定” 这样就进入了Outlook的安全模式。 点击“文件”->“选项”-…

【智能家居】三、添加语音识别模块的串口读取功能点

语音识别模块SU-03T 串口通信线程控制代码 inputCommand.h&#xff08;输入控制指令&#xff09;voiceControl.c&#xff08;语音控制模块指令&#xff09;main.c&#xff08;主函数&#xff09;编译运行结果 语音识别模块SU-03T AI智能语音识别模块离线语音控制模块语音识别…

Oracle 单表插入/多表插入(Single Table Insert/Multi-table Insert)

数据库应用中&#xff0c;我们经常需要向表中插入数据&#xff0c;insert语句是最常用的数据插入方式&#xff0c;根据目标表的数量&#xff0c;可以分为单表插入和多表插入。 目录 一、 单表插入&#xff08;Single Table Insert&#xff09; 二、 多表插入&#xff08;Multi-…