七叶笔记 » golang编程 » Centos自己搭建ngrok内网穿透,访问内网MySQL、Redis

Centos自己搭建ngrok内网穿透,访问内网MySQL、Redis

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

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

安装git

 yum install -y git  

安装go

 # 下载go
cd /usr/local
wget 
# 解压
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  

2、 Ngrok配置(这个操作需要在有公网IP的云服务器进行)

(1) 下载ngrok

 cd /usr/local
git clone   

(2) 配置环境变量

 export GOPATH=/usr/local/ngrok/
# 下面的配置写自己的域名,不需要前缀,例如:baidu.com
export NGROK_DOMAIN="***.com"  

(3) 生成证书

 cd ngrok
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  

(4) 覆盖原来的证书

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

(5) 生成服务端

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

(6) 生成客户端

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

(7) 启动服务端

A、将ngrokd配置为系统服务

 vim /lib/systemd/system/ngrokd.srevice
# 以下是文档内容
[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  

(8) 启动客户端

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

A、 创建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: 13306
proto:
tcp: 3306
redis:
remote_port: 16379
proto:
tcp: 6379
zookeeper:
remote_port: 12181
proto:
tcp: 2181
#next:
#subdomain: web # 如果是启动http的通道则可以指定该配置项来声明该通道监听的子域名是什么,在访问时应该访问web.ngrok.域名
#proto:
#http: 80
#api:
#subdomain: api
#proto:
#http: 80
  

B、 启动客户端

 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  

3、 配置成功

ngrok启动成功

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

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

华为云的优惠购买地址

相关文章