Centos7自己搭建ngrok内网穿透,访问内网MySQL、Redis、web站点

2024-04-06 06:58

本文主要是介绍Centos7自己搭建ngrok内网穿透,访问内网MySQL、Redis、web站点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先我们需要准备一台云服务器,阿里、华为、腾讯都可以,这几家新用户都可以有很大的折扣,可以低价购进一台云服务器。

  1. 环境准备(这个操作需要在有公网IP的云服务器进行)

安装git

yum install -y git

安装go

# 下载gocd /usr/local
wget https://dl.google.com/go/go1.11.2.linux-amd64.tar.gz# 解压
tar -C /usr/local -xzf go1.11.2.linux-amd64.tar.gz# go命令需要软连接到/usr/bin
ln -s /usr/local/go/bin/* /usr/bin# go语言环境配置
yum install mercurial bzr subversion -y# 新建go目录作为项目目录
mkdir -p $HOME/go# cat方法在尾部最佳配置golang的 GOROOT GOPATH
# 需要注意下方的go路径需要换成自己解压后的路径
cat >>$HOME/.bash_profile<<EOF
export GOROOT=/usr/local/go    
export GOPATH=\$HOME/go
export PATH=\$PATH:\$GOROOT/bin
EOF# 配置生效
source $HOME/.bash_profile# 查看环境变量
go env
  1. Ngrok配置(这个操作需要在有公网IP的云服务器进行)
  1. 下载ngrok
cd /usr/local
git clone https://github.com/inconshreveable/ngrok.git
  1. 配置环境变量
export GOPATH=/usr/local/ngrok/# 下面的配置写自己的域名,不需要前缀,例如:baidu.com
export NGROK_DOMAIN="***.com"
  1. 生成证书
cd ngrokopenssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem
openssl genrsa -out server.key 2048
openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr
openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 5000

 

  1. 覆盖原来的证书
cp rootCA.pem assets/client/tls/ngrokroot.crt
cp server.crt assets/server/tls/snakeoil.crt
cp server.key assets/server/tls/snakeoil.key

 

  1. 生成服务端
GOOS=linux GOARCH=amd64 make release-server
# 这里GOOS后面是你的系统windows或linux,我是linux,GOARCH 后面是系统位数64位是amd64,32位是386,这里需要等待好一会儿而且没有进度条~~
# 生成的服务端在/usr/local/ngrok/bin里面
  1. 生成客户端
GOOS=linux GOARCH=amd64 make release-client
#这里GOOS后面是你的系统windows或linux,我是要在Linux上启动客户端,GOARCH 后面是系统位数64位是amd64,32位是386,这里需要等待好一会儿而且没有进度条~~
  1. 启动服务端

A、将ngrokd配置为系统服务

vim /lib/systemd/system/ngrokd.service
[Unit]Description=ngrokd server
After=network.target[Service]Type=simple
ExecStart=/usr/local/bin/ngrokd -domain ngrok.***.com -httpAddr ":801" -httpsAddr ":802" -tunnelAddr ":1443" -log "/var/log/ngrokd.log"
Restart=on-failure[Install]
WantedBy=multi-user.target

B、启动服务

systemctl start ngrokd
systemctl status ngrokd
systemctl enable ngrokd
  1. 启动客户端

登录到内网服务器将编译好的ngrok客户端拷贝到/usr/local/ngrok目录,

  1. 创建ngrok配置文件
vim /usr/local/ngrok/ngrok.yml
server_addr: ***.com:1443 # 这里指定客户端要连接的服务端的域名和端口号,1443是监听的端口,可以在服务端进行更改
trust_host_root_certs: false # 这里指定是否验证服务端的证书,如果是从证书机构获取的证书则可以写为true,如果是自己生成的证书这里写为false
tunnels: # 这个配置项是你要开启的通道的配置ssh: # ssh是这个通道的名称,可以随意命名remote_port: 122 # 该配置项可以申请远程服务器的固定端口,如果不设置该参数,每次在启动客户端的时候服务端都会随机分配一个端口号proto: # 该配置项指明该通道使用哪些协议tcp: 22 # 该配置项指明该通道开启本地tcp协议的22(sshd服务)端口,即将远程的122端口转发到本地22端口mysql:remote_port: 13306proto:tcp: 3306redis:remote_port: 16379proto:tcp: 6379zookeeper:remote_port: 12181proto:tcp: 2181#next:#subdomain: web # 如果是启动http的通道则可以指定该配置项来声明该通道监听的子域名是什么,在访问时应该访问web.ngrok.域名#proto:#http: 80#api:#subdomain: api#proto:#http: 80

 

  1. 启动客户端
vim /lib/systemd/system/ngrok.service
[Unit]Description=ngrok client
After=network.target[Service]Type=simple
ExecStart=/usr/local/bin/ngrok -config "/usr/local/ngrok/ngrok.yml" -log "/var/log/ngrok.log" start-all
Restart=on-failure[Install]
WantedBy=multi-user.target

 

  1. 配置成功

ngrok启动成功

内网的Mysql通过ngrok.***.com:13306这个域名加端口可以在外网访问到了,redis也是如此。

最后附上阿里云的优惠购买地址

https://www.aliyun.com/minisite/goods?userCode=b7rjnvrm

华为云的优惠购买地址

https://reg.huaweicloud.com/registerui/cn/register.html?locale=zh-cn&fromacct=ea777214-758d-4b87-925c-39b724603edd

这篇关于Centos7自己搭建ngrok内网穿透,访问内网MySQL、Redis、web站点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/879299

相关文章

MySQL的JDBC编程详解

《MySQL的JDBC编程详解》:本文主要介绍MySQL的JDBC编程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、前置知识1. 引入依赖2. 认识 url二、JDBC 操作流程1. JDBC 的写操作2. JDBC 的读操作总结前言本文介绍了mysq

java.sql.SQLTransientConnectionException连接超时异常原因及解决方案

《java.sql.SQLTransientConnectionException连接超时异常原因及解决方案》:本文主要介绍java.sql.SQLTransientConnectionExcep... 目录一、引言二、异常信息分析三、可能的原因3.1 连接池配置不合理3.2 数据库负载过高3.3 连接泄漏

Redis 的 SUBSCRIBE命令详解

《Redis的SUBSCRIBE命令详解》Redis的SUBSCRIBE命令用于订阅一个或多个频道,以便接收发送到这些频道的消息,本文给大家介绍Redis的SUBSCRIBE命令,感兴趣的朋友跟随... 目录基本语法工作原理示例消息格式相关命令python 示例Redis 的 SUBSCRIBE 命令用于订

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

sky-take-out项目中Redis的使用示例详解

《sky-take-out项目中Redis的使用示例详解》SpringCache是Spring的缓存抽象层,通过注解简化缓存管理,支持Redis等提供者,适用于方法结果缓存、更新和删除操作,但无法实现... 目录Spring Cache主要特性核心注解1.@Cacheable2.@CachePut3.@Ca

MySQL中On duplicate key update的实现示例

《MySQL中Onduplicatekeyupdate的实现示例》ONDUPLICATEKEYUPDATE是一种MySQL的语法,它在插入新数据时,如果遇到唯一键冲突,则会执行更新操作,而不是抛... 目录1/ ON DUPLICATE KEY UPDATE的简介2/ ON DUPLICATE KEY UP

MySQL分库分表的实践示例

《MySQL分库分表的实践示例》MySQL分库分表适用于数据量大或并发压力高的场景,核心技术包括水平/垂直分片和分库,需应对分布式事务、跨库查询等挑战,通过中间件和解决方案实现,最佳实践为合理策略、备... 目录一、分库分表的触发条件1.1 数据量阈值1.2 并发压力二、分库分表的核心技术模块2.1 水平分

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2