CentOS下搭建Ngrok内网穿透服务

CentOS下搭建Ngrok内网穿透服务

作为一个程序员,没有公网IP怎么行呢?这里就来个内网穿透工具吧。
鉴于Ngrok存在小Bug,现已补充Frp内网穿透搭建教程(个人建议使用Frp)。

1.准备

首先你需要一个服务器,我的是腾讯云主机。

进行重装系统(为了避免不必要麻烦,非必须),选择CentOS。
在这里插入图片描述
然后设置域名指向你的服务器IP。

我的是使用了二级域名,即 ngrok.kioye.cn和 *.ngrok.kioye.cn 都使用A记录指向139.199.210.123

在这里插入图片描述

2.开始安装

# 安装依赖
yum -y install openssl-devel wget gcc gcc-c++
# 安装git
yum install git -y
# 安装go
yum install -y mercurial bzr subversion golang
# 查看go版本
go version
# 拉取ngrok源码
git clone https://github.com/inconshreveable/ngrok.git
# 生成证书
cd ngrok

export NGROK_DOMAIN="ngrok.kioye.cn"
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 device.key 2048
openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000

# 将新生成的证书替换掉旧的
\cp -rf rootCA.pem assets/client/tls/ngrokroot.crt
\cp -rf device.crt assets/server/tls/snakeoil.crt
\cp -rf device.key assets/server/tls/snakeoil.key

# 编译生成ngrokd服务端,运行在当前系统CentOS
GOOS=linux GOARCH=amd64 make release-server

到此,服务端已经生成完毕。可以将可执行文件bin/ngrokd拷贝出来。

# 服务端启动测试
./bin/ngrokd -domain="ngrok.kioye.cn" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":4443"
# 创建快捷启动脚本
vi start-ngrokd.sh
# 内容如下:
#!/bin/sh
# 注意你的路径可能和我不同!
/root/ngrok/bin/ngrokd -domain="ngrok.kioye.cn" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":4443"

# 设置文件权限
chmod 755 start-ngrokd.sh

启动没问题后,我们将其添加到自启动列表。

vi /etc/init.d/ngrok
# 内容如下:
#!/bin/sh
### BEGIN INIT INFO
# Provides:          ngrok
# Required-Start:    
# Required-Stop:     
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start or stop the ngrok Proxy.
### END INIT INFO

# 注意你的路径可能和我的不同!!
ngrok_path=/root/ngrok/
case "$1" in
        start)
                echo "start ngrok service.."
                sh ${ngrok_path}/start-ngrokd.sh
                ;;
        *)
        exit 1
        ;;
esac


# ngrok脚本文件 给权限
chmod 755 /etc/init.d/ngrok

# 添加启动服务 ngrok
chkconfig --add  ngrok
# 尝试启动
service ngrok start

服务端设置完成。
接下来生成客户端文件。

# 编译生成ngrok客户端,运行在k2p路由器(arm平台)
GOOS=linux GOARCH=arm make release-client
# 生成的可执行文件为:bin/linux_arm/ngrok

# 编译生成ngrok客户端,分别运行在Linux平台32和64位系统
GOOS=linux GOARCH=386 make release-client
GOOS=linux GOARCH=amd64 make release-client   
# 生成的可执行文件分别为:bin/linux_386/ngrok
#                     bin/ngrok

# 编译生成ngrok客户端,分别为运行在Windows平台32和64位系统
GOOS=windows GOARCH=386   make release-client
GOOS=windows GOARCH=amd64 make release-client
# 生成的可执行文件分别为:bin/windows_386/ngrok.exe
#                     bin/windows_amd64/ngrok.exe

# 编译生成ngrok客户端,运行在MacOs平台
GOOS=darwin GOARCH=amd64 make release-client
# 生成的可执行文件为:bin/darwin_amd64/ngrok

到此,客户端可执行文件也已经生成。
以 MacOs下客户端使用为例,其他平台启动方式都是类似的,就不重复了。

# 将bin/darwin_amd64/ngrok文件拷贝到MacOs
# 然后在ngrok文件下创建ngrok.cfg配置文件
vi ngrok.cfg
# 内容如下:

server_addr: "ngrok.kioye.cn:4443"
trust_host_root_certs: false
tunnels:
  http:
    subdomain: "www"
    proto:
      http: "80"
      
  https:
    subdomain: "www"
    proto:
      https: "443"

  ssh:
    remote_port: 2222
    proto:
      tcp: "22"
      
# 保存后,使用如下命令启动:
./ngrok -config ngrok.cfg start http https ssh

如下图,可以看到已经连接成功!

在这里插入图片描述

追加一下k2p路由器的设置自启动(我的是官改版本)。
首先将arm平台版文件(ngrok和ngrok.cfg)拷贝到k2p路由器/opt/ngrok/
然后登陆路由器 http://192.168.2.1 设置功能-高级设置-启动任务加上:
sleep 2 && cd /opt/ngrok/ && ./ngrok -config ngrok.cfg start http https ssh 2>&1 &

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值