Centos自己搭建ngrok內網穿透,訪問內網MySQL、Redis

首先我們需要準備一臺雲服務器,阿里、華為、騰訊都可以,這幾家新用戶都可以有很大的折扣,可以低價購進一臺雲服務器。

1、 環境準備(這個操作需要在有公網IP的雲服務器進行)


Centos自己搭建ngrok內網穿透,訪問內網MySQL、Redis


安裝git

<code>yum install -y git/<code>


Centos自己搭建ngrok內網穿透,訪問內網MySQL、Redis


安裝go

<code># 下載go
cd /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<export GOROOT=/usr/local/go
export GOPATH=\\$HOME/go
export PATH=\\$PATH:\\$GOROOT/bin
EOF
# 配置生效
source $HOME/.bash_profile
# 查看環境變量
go env
/<code>

2、 Ngrok配置(這個操作需要在有公網IP的雲服務器進行)

(1) 下載ngrok

<code>cd /usr/local
git clone https://github.com/inconshreveable/ngrok.git/<code>

(2) 配置環境變量

<code>export GOPATH=/usr/local/ngrok/ 

# 下面的配置寫自己的域名,不需要前綴,例如:baidu.com
export NGROK_DOMAIN="***.com"/<code>


(3) 生成證書

<code>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/<code>


(4) 覆蓋原來的證書

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


(5) 生成服務端

<code>GOOS=linux GOARCH=amd64 make release-server
# 這裡GOOS後面是你的系統windows或linux,我是linux,GOARCH 後面是系統位數64位是amd64,32位是386,這裡需要等待好一會兒而且沒有進度條~~
# 生成的服務端在/usr/local/ngrok/bin裡面/<code>

(6) 生成客戶端

<code>GOOS=linux GOARCH=amd64 make release-client
#這裡GOOS後面是你的系統windows或linux,我是要在Linux上啟動客戶端,GOARCH 後面是系統位數64位是amd64,32位是386,這裡需要等待好一會兒而且沒有進度條~~/<code>

(7) 啟動服務端

A、將ngrokd配置為系統服務

<code>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/<code>

B、啟動服務

<code>systemctl start ngrokd
systemctl status ngrokd
systemctl enable ngrokd/<code>

(8) 啟動客戶端

登錄到內網服務器將編譯好的ngrok客戶端拷貝到/usr/local/ngrok目錄,

A、 創建ngrok配置文件

<code>vim /usr/local/ngrok/ngrok.yml/<code>
<code>server_addr: ***.com:1443 # 這裡指定客戶端要連接的服務端的域名和端口號,1443是監聽的端口,可以在服務端進行更改
trust_host_root_certs: false # 這裡指定是否驗證服務端的證書,如果是從證書機構獲取的證書則可以寫為true,如果是自己生成的證書這裡寫為false
tunnels: # 這個配置項是你要開啟的通道的配置

\tssh: # ssh是這個通道的名稱,可以隨意命名
\t\tremote_port: 122 # 該配置項可以申請遠程服務器的固定端口,如果不設置該參數,每次在啟動客戶端的時候服務端都會隨機分配一個端口號
\t\tproto: # 該配置項指明該通道使用哪些協議
\t\t\ttcp: 22 # 該配置項指明該通道開啟本地tcp協議的22(sshd服務)端口,即將遠程的122端口轉發到本地22端口
\tmysql:
\t\tremote_port: 13306
\t\tproto:
\t\t\ttcp: 3306
\tredis:
\t\tremote_port: 16379
\t\tproto:
\t\t\ttcp: 6379
\tzookeeper:
\t\tremote_port: 12181
\t\tproto:
\t\t\ttcp: 2181
#next:
#subdomain: web # 如果是啟動http的通道則可以指定該配置項來聲明該通道監聽的子域名是什麼,在訪問時應該訪問web.ngrok.域名
#proto:
#http: 80
#api:
#subdomain: api
#proto:
#http: 80
/<code>

B、 啟動客戶端

<code>vim /lib/systemd/system/ngrok.service/<code>


<code>[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/<code>


3、 配置成功

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


分享到:


相關文章: