搭建ngrok服务-实现内网穿透

1.基础环境

# 安装 gcc
yum -y install gcc
yum -y install gcc-c++

# 安装 golang , 下载地址在https://studygolang.com/dl中找的,想换版本可以在这里找
wget https://studygolang.com/dl/golang/go1.8.linux-amd64.tar.gz
tar -zxvf go1.8.linux-amd64.tar.gz

vi /etc/profile   #文件中加上环境变量
export GOROOT=你的go解压地址(如:/root/go)
export PATH=$PATH:$GOROOT/bin
source /etc/profile   #使环境生效(或者重启:reboot)
 
 
go version   #查看go是否安装成功
 

2.下载源码

#安装git 用于下载ngrok代码
 
yum -y install git
 
#克隆代码,文件夹命名为 ngrok-server,也可以填写,默认就是ngrok
 
git clone https://github.com/inconshreveable/ngrok.git ngrok-server

3.ngrok配置

执行一下命令。使用ngrok.com官方服务时,我们使用的是官方的SSL证书。自建ngrokd服务,如果不想买SSL证书,我们需要生成自己的自签名证书,并编译一个携带该证书的ngrok客户端。
证书生成过程需要一个NGROK_BASE_DOMAIN。 填写我们的域名地址

cd ngrok-server    #进入安装根目录
 
NGROK_DOMAIN="ngrok.你的域名.com"
 
openssl genrsa -out rootCA.key 2048
 
openssl req -new -x509 -nodes -key rootCA.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -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 -days 10000 -out server.crt

4.复制证书

经过以上步骤,证书已经生成,下面复制证书到默认读取目录下

#复制rootCA.pem到assets/client/tls/并更名为ngrokroot.crt
cp rootCA.pem assets/client/tls/ngrokroot.crt

#复制server.crt到assets/server/tls/并更名为snakeoil.crt
cp server.crt assets/server/tls/snakeoil.crt

#复制server.key到assets/server/tls/并更名为snakeoil.key
cp server.key assets/server/tls/snakeoil.key

上面会让你提示是否覆盖,输入y即可。如果不想每次都提示,可以使用如下命令,这是一个骚操作。
cp前面加上一个\,然后加上-rf即可没有提示,直接覆盖。

\cp -rf rootCA.pem assets/client/tls/ngrokroot.crt
\cp -rf server.crt assets/server/tls/snakeoil.crt
\cp -rf server.key assets/server/tls/snakeoil.key

5.https配置

网站配置SSL证书(https),使网站可以通过https访问

我们申请的是Let's Encrypt通配符SSL证书,因为他是免费的

1.获取 Certbot 客户端
下载 Certbot 客户端 ,并且添加可执行权限

cd /usr/local/
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
./certbot-auto certonly  -d "*.ngrok.你的域名.com" -d "ngrok.你的域名.com" --manual --preferred-challenges dns-01  --server https://acme-v02.api.letsencrypt.org/directory
img

执行到上图最后一步时,先暂时不要回车。申请通配符证书是要经过DNS认证的,接下来需要按照提示在域名后台添加对应的DNS TXT记录。等个10分钟左右

确认生效后,回车继续执行,最后会输出如下内容:

image-20201217111709001.png

出现这个就代表成功了

更换证书

cd /root/ngrok-server
cp /etc/letsencrypt/live/ngrok.你的域名.com/privkey.pem /root/ngrok-server/assets/server/tls/snakeoil.key
cp /etc/letsencrypt/live/ngrok.你的域名.com/fullchain.pem /root/ngrok-server/assets/server/tls/snakeoil.crt
cp /etc/letsencrypt/live/ngrok.你的域名.com/fullchain.pem /root/ngrok-server/assets/client/tls/ngrokroot.crt

6.生成程序

生成客户端和服务器端

#win服务端
GOOS=windows GOARCH=386 make release-server
 
#win客户端
GOOS=windows GOARCH=386 make release-client
 
#linux服务端
GOOS=linux GOARCH=386 make release-server
 
#linux客户端
GOOS=linux GOARCH=386 make release-client

我只用到linux服务器端和win客户端,我只需要执行如下即可。
根据自己需要生成

#linux服务端
GOOS=linux GOARCH=386 make release-server
 
#win客户端
GOOS=windows GOARCH=386 make release-client

第一次生成需要点时间,因为golang编译需要下载一些插件。

编译后的软件在bin目录下

image-20201201141505946.png

httpAddr,httpsAddr为访问服务端端口,可以设置为80和443,访问的时候不用加端口号.

tunnelAddr为给客户端提供的连接端口默认4443可自行修改,这里改为8092

前台运行


sudo /root/ngrok-server/bin/linux_386/ngrokd -tlsKey="/root/ngrok-server/assets/server/tls/snakeoil.key" -tlsCrt="/root/ngrok-server/assets/server/tls/snakeoil.crt"  -domain="ngrok.你的域名.com"  -httpAddr=":8090" -httpsAddr=":8091" -tunnelAddr=":8092"
 

后台运行

使用服务模式

将以下代码保存为ngrokd.service文件,放在/etc/systemd/system/目录

注意替换路径 root/ngrok-server/bin/linux_386/ 为ngrok服务端目录

#/etc/systemd/system/ngrokd.service

[Unit]
Description=ngrok
After=network.target

 
[Service]
ExecStart=/root/ngrok-server/bin/linux_386/ngrokd  -tlsKey="/root/ngrok-server/assets/server/tls/snakeoil.key" -tlsCrt="/root/ngrok-server/assets/server/tls/snakeoil.crt"  -domain="ngrok.你的域名.com"  -httpAddr=":8090" -httpsAddr=":8091" -tunnelAddr=":8092"
LimitNOFILE=1048576
LimitNPROC=1048576
Restart=always
RestartSec=10
StartLimitInterval=0

[Install]
WantedBy=multi-user.target
systemctl enable ngrokd.service     #开机启动ngrokd服务
systemctl start  ngrokd.service     #启动ngrokd服务

阿里云需要配置安全组规则:

image-20201216225136308.png

7.客户端

下载bin/windows_386目录下的ngrok.exe文件


image-20201216230930207.png

本地文件


image-20201216231018914.png

http/https

ngrok.cfg

server_addr: ngrok.你的域名.com:8092
trust_host_root_certs: false

start.bat

@echo OFF
color 0b
Title Ngrok启动程序 By webwang
Mode con cols=109 lines=30
:START
ECHO.
Echo                  ==========================================================================
ECHO.
Echo                                         Ngrok启动
ECHO.
Echo                                         作者: webwang
ECHO.
Echo                  ==========================================================================
Echo.
echo.
echo.
:TUNNEL
Echo           输入需要启动的域名前缀,如“webwang” 请勿使用“www”,即分配给你的穿透域名为:“webwang.ngrok.你的域名.com”
ECHO.
ECHO.
ECHO.
set /p clientid=   请输入域名前缀:
echo.
set /p port=   请输入内网端口:
echo.
ngrok -config=ngrok.cfg  -proto=http  -subdomain=%clientid% %port%
# https使用
# ngrok -config=ngrok.cfg  -proto=https  -subdomain=%clientid% %port%

运行start.bat

tcp

start.bat

start ngrok.exe  -proto=tcp -config=tcp.cfg start vnc ssh

ngrok.cfg

server_addr: ngrok.你的域名.com:8092
trust_host_root_certs: false
tunnels:
    ssh:# 名称
        remote_port: 33333 #服务器分配tcp转发端口,不填写由服务器随机分配
        proto:
            tcp: 33333 #映射本地的端口
    vnc:# 名称
        remote_port: 33339
        proto:
            tcp: 33339

注意:tcp需要开放对应的端口

8.注意事项

1.服务器的安全组一定要配置。

2.关闭防火墙。

3.域名泛解析 *.ngrok.你的域名.com

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,588评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,456评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,146评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,387评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,481评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,510评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,522评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,296评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,745评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,039评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,202评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,901评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,538评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,165评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,415评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,081评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,085评论 2 352

推荐阅读更多精彩内容