利用阿里云自建NGROK内网穿透

本文详细介绍如何使用阿里云域名解析及ngrok实现外网访问本地计算机,包括环境准备、安装Go、编译ngrok、配置证书、后台运行、本地使用步骤及阿里云设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、说明

        通过阿里云域名解析以及ngrok,将外网映射到本地计算机。

二、安装

        2.1 环境准备

vim /etc/profile export NGROK_DOMAIN="ngrok.yourdomain.com"
yum -y install zlib-devel openssl-devel perl hg cpio expat-devel gettext-devel curl curl-devel perl-ExtUtils-MakeMaker hg wget gcc gcc-c++ git

安装go
wget https://dl.google.com/go/go1.12.linux-amd64.tar.gz
tar -zxvf go1.12.linux-amd64.tar.gz

vim /etc/profile
//添加以下内容:
export PATH=$PATH:/usr/local/go/bin
source /etc/profile
//检测是否安装成功go
go version

下载ngrok源码包
mkdir /ngrok
cd /ngrok
git clone https://github.com/inconshreveable/ngrok.git

cd /ngrok
mkdir cert
cd cert
openssl genrsa -out rootCA.key 2048
openssl 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

覆盖证书
cp rootCA.pem /ngrok/ngrok/assets/client/tls/ngrokroot.crt  #复制rootCA.pem到assets/client/tls/并更名为ngrokroot.crt
cp server.crt /ngrok/ngrok/assets/server/tls/snakeoil.crt #复制server.crt到assets/server/tls/并更名为snakeoil.crt
cp server.key /ngrok/ngrok/assets/server/tls/snakeoil.key #复制server.key到assets/server/tls/并更名为snakeoil.key

编译生成ngrokd
cd /ngrok/ngrok
go env //查看环境
GOOS=linux GOARCH=amd64 make release-server

后台运行
cd /ngrok/ngrok 
setsid ./bin/ngrokd -tlsKey="assets/server/tls/snakeoil.key" -tlsCrt="assets/server/tls/snakeoil.crt" -domain="ngrok.yourdomain.com" -httpAddr=":8081" -httpsAddr=":8082" -tunnelAddr=":8083"

编译客户端
GOOS=windows GOARCH=amd64 make release-client
#编译成功后会在ngrok/bin/下面生成一个windows_amd64目录下面有ngrok.exe

#Linux 平台 32 位系统:GOOS=linux GOARCH=386
#Linux 平台 64 位系统:GOOS=linux GOARCH=amd64
#Windows 平台 32 位系统:GOOS=windows GOARCH=386
#Windows 平台 64 位系统:GOOS=windows GOARCH=amd64
#MAC 平台 32 位系统:GOOS=darwin GOARCH=386
#MAC 平台 64 位系统:GOOS=darwin GOARCH=amd64
#ARM 平台:GOOS=linux GOARCH=arm

到此,ngrok已经安装成功。

2.2 本地使用

(1)将ngrok.exe下载到本地计算机上。

(2)新建ngrok.cfg

server_addr: " ngrok.yourdomain.com:8083"
trust_host_root_certs: false

(3)新建start.bat

ngrok -config=ngrok.cfg -subdomain=test 80

(4)启动,执行start.bat

//出现以下内容表示成功链接:
ngrok

Tunnel Status                 online
Version                       1.7/1.7
Forwarding                    http://test.ngrok.yourdomian.com:8081 -> 127.0.0.1:80
Forwarding                    https://test.ngrok.yourdomain.com:8081 -> 127.0.0.1:80
Web Interface                 127.0.0.1:4040
# Conn                        0
Avg Conn Time                 0.00ms

2.3 阿里云设置

(1)域名解析:

将ngrok.yourdomian.com 映射到外网Ip地址

将test.ngrok.yourdomian.com 映射到外网Ip地址

(2)端口8001,8002,8003都对特定ip开发

(3)若想使用阿里云的免费证书,那么先申请,然后将/ngrok/ngrok/assets/client/tls/ngrokroot.crt 证书替换成阿里云免费ssl证书以pem结尾的,然后修改名字ngrokroot.crt。

/ngrok/ngrok/assets/server/tls/snakeoil.crt 修改为阿里云免费ssl证书以pem结尾的,然后修改名字snakeoil.crt

/ngrok/ngrok/assets/server/tls/snakeoil.key 修改为阿里云免费ssl证书以key结尾的,然后修改名字snakeoil.key

参考文章:https://www.cnblogs.com/irich/p/8708014.html

### 阿里云服务器内网穿透实现方法 #### 一、准备工作 为了实现在阿里云服务器上的内网穿透,需准备一台具有公网IP的阿里云服务器。推荐使用Ubuntu操作系统版本,如Ubuntu 18.04.4 LTS,这有助于简化后续配置过程[^1]。 #### 二、安装依赖环境 在开始之前,确保已更新系统的软件包列表并安装必要的工具: ```bash sudo apt update && sudo apt upgrade -y ``` 接着安装Git和其他可能需要用到的基础库: ```bash sudo apt install git curl wget build-essential -y ``` #### 三、部署Ngrok服务端 下载官方提供的源码压缩包至本地目录,并解压编译: ```bash wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip unzip ngrok-stable-linux-amd64.zip ``` 之后按照官方文档说明完成编译操作,具体命令可参照项目主页指引。 对于想要自定义域名的情况,则还需要额外申请SSL证书来保障通信安全;如果只是用于个人开发调试的话,默认随机分配子域即可满足需求。 #### 四、设置防火墙规则与端口转发 为了让外部网络能够正常访问内部的服务实例,必须开放相应的TCP端口号并通过iptables或其他方式设定好NAT转换表项: 假设要暴露HTTP(S)协议对应的80(443),那么可以执行如下指令开启入站连接许可: ```bash sudo ufw allow http sudo ufw allow https ``` 另外还需前往阿里云控制台的安全组管理页面中添加对应规则允许指定范围内的流量进入虚拟机实例内部。 #### 五、启动Ngrok客户端并与远端隧道建立关联 最后一步就是运行ngrok程序本身了——通过命令行参数告知其监听哪个本地地址以及端口组合,同时指明目标远程主机的信息(即前面提到过的那台具备固定公网出口位置的VPS),从而正式建立起一条完整的双向数据传输通道[^2]。 ```bash ./ngrok tcp 22 ``` 上述例子表示将SSH默认使用的22号端口映射出去供外界调用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值