成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

ngrok內(nèi)網(wǎng)穿透服務(wù)器搭建及配置(附 frp 配置)

李昌杰 / 3645人閱讀

摘要:作為一個內(nèi)網(wǎng)穿透的小工具,有時可能會時常更改配置等,所以作為本地的一個開機啟動的小服務(wù)即可。設(shè)置開機啟動輸入命令設(shè)置開機啟動開啟查看狀態(tài)停止內(nèi)網(wǎng)穿透配置相對于另一款國內(nèi)大牛做的要顯的更加輕量安全易配置些。

12月18日更新 添加 frp 配置
前言

內(nèi)網(wǎng)穿透,無需多言,用處多多。首先強力推薦一款Sunny大大搭建的ngrok服務(wù)好用的不行,而且有免費選項,感覺平時夠用了。那么,為什么自己還要搭建一個呢?可能剛剛看過兩眼的docker入門,想來嘗試一下吧。恩,也可能是閑的吧┑( ̄Д  ̄)┍


ps: ngrok 2版本已商業(yè)化,開源的只到1.7版本,聽說會有些性能問題。還有一款基于go的開源的內(nèi)網(wǎng)穿透工具frp 在末尾添加了frp 的配置

搭建過程

至于玩法,1)可以將本地的server的端口代理到外網(wǎng)可訪問,便于微信開發(fā)或者暴露內(nèi)網(wǎng)的服務(wù)器等。2)可以代理ssh 連接,比如可以連接家里的樹莓派。

ps:在使用docker-compose 集成Nginx反向代理時 發(fā)現(xiàn)暴露的端口有點多,況且nginx都是服務(wù)端的標(biāo)配了,所以就去掉了。╮( ̄▽ ̄")╭

還是直接上實在的吧(以下命令基于Ubuntu):

準(zhǔn)備

域名

域名可購買略

域名解析設(shè)置

服務(wù)器

所需軟件安裝

克隆源碼

生成證書

編譯生成服務(wù)端軟件 和 客戶端軟件

容器化

生成鏡像

利用docker-compose 集成Nginx反向代理

具體步驟 域名解析設(shè)置

假設(shè)你的域名為: yourset.com

假設(shè)你的ngrok服務(wù)二級訪問域名為:ngrok.yourset.com

添加如下解析:ngrok.yourset.com --->A記錄 your ip

*.ngrok.yourset.com --->CNAME 到 ngrok.yourset.com(可自由配置)

服務(wù)環(huán)境設(shè)置

基于 Ubuntu 16.04

安裝git
$ sudo apt-get update
$ sudo apt-get install git

安裝go lang
$ 下載go1.9.2.linux-amd64.tar.gz(注意對應(yīng)自己的系統(tǒng)下載,具體請參考上方連接)
$ tar -C /usr/local -xzf go1.9.2.linux-amd64.tar.gz
$ vi /root/.bashrc 或者 /home/user/.zsh #根據(jù)你的用戶選取
$ export PATH=$PATH:/usr/local/go/bin #添加環(huán)境變量
$ source /root/.bashrc #更新環(huán)境變量

克隆源碼
    $ cd /usr/local
    $ git clone https://github.com/inconshreveable/ngrok.git
    
引入環(huán)境變量
    $ export GOPATH=/usr/local/ngrok/    #目錄位置
    $ export NGROK_DOMAIN="ngrok.yourset.com"   #你的ngrok服務(wù)二級域名
    
根據(jù)你的域名生成證書
    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 assets/client/tls/ngrokroot.crt
    cp server.crt assets/server/tls/snakeoil.crt
    cp server.key assets/server/tls/snakeoil.key
客戶端版本說明

Linux 平臺 32 位系統(tǒng):GOOS=linux GOARCH=386

Linux 平臺 64 位系統(tǒng):GOOS=linux GOARCH=amd64

Windows 平臺 32 位系統(tǒng):GOOS=windows GOARCH=386

Windows 平臺 64 位系統(tǒng):GOOS=windows GOARCH=amd64

MAC 平臺 32 位系統(tǒng):GOOS=darwin GOARCH=386

MAC 平臺 64 位系統(tǒng):GOOS=darwin GOARCH=amd64

ARM 平臺:GOOS=linux GOARCH=arm

編譯服務(wù)端的 ngrokd(客戶端和服務(wù)端生成的文件均在/usr/local/ngrok/bin下)

$ GOOS=linux GOARCH=amd64 make release-server  #根據(jù)平臺選取

編譯客戶端 ngrok(可生成壓縮包下載到本地然后放到網(wǎng)盤存起來?方便以后使用)

$ GOOS=darwin GOARCH=amd64 make release-client  #mac 64
$ GOOS=windows GOARCH=amd64 make release-client  #win64
$ GOOS=linux GOARCH=amd64 make release-client  #linux64
$ GOOS=linux GOARCH=arm make release-client  #arm平臺如樹莓派
開啟服務(wù)端(設(shè)置端口是請注意端口是否打開,以及防火墻配置)
    $ /usr/local/ngrok/bin/ngrokd -domain="ngrok.yourset.com" -httpAddr=":2443" -httpsAddr=":3443" -tunnelAddr=":4443"
    參數(shù)說明:
        -domain 訪問ngrok是所設(shè)置的服務(wù)地址生成證書時那個
        -httpAddr http協(xié)議端口 默認為80
        -httpsAddr https協(xié)議端口 默認為443 (可配置https證書)
        -tunnelAddr 通道端口 默認4443
啟動客戶端-使用命令行參數(shù)(以mac為例)

將客戶端放到自己喜歡的位置并在當(dāng)前目錄下創(chuàng)建配置文件

$ vi ngrok.yml

寫入如下內(nèi)容

server_addr: "ngrok.yourset.com:4443"
trust_host_root_certs: false

啟動客戶端命令

$ ./ngrok -config=./ngrok.yml -proto=http -subdomain=test 8080 #啟動http轉(zhuǎn)發(fā)
$ ./ngrok -config=./ngrok.yml -proto=tpc 22  #啟動tcp轉(zhuǎn)發(fā) 本地22端口,遠程隨機暴露大端口

參數(shù)說明:

trust_host_root_certs #是否信任系統(tǒng)根證書,如果是帶自簽名證書編譯的 ngrok 客戶端,這個值應(yīng)該設(shè)置為 false;如果使用 CA 證書,或者用戶添加了根證書,這個值應(yīng)該設(shè)置為 true
-proto     #轉(zhuǎn)發(fā)協(xié)議 不指定默認是 http+https
-subdomain #訪問本地時的三級域名 不指定就會隨機生成 tcp不支持此參數(shù)
8080       #本地服務(wù)的端口號
-config    #指定配置位置,默認為$HOME/.ngrok2/ngrok.yml
    
啟動客戶端-使用配置文件

在ngrok中寫入如下內(nèi)容:

server_addr: "ngrok.yourset.com:4443"
trust_host_root_certs: false
tunnels:
  web:
    proto:
      http: "3000"
  web2:
    proto:
      http: "8080"
  tcp:
    proto:
      tcp: "3022"
    remote_port: 4444
  tcp2:
    proto:
      tcp: "22"
    remote_port: 4445

啟動單個服務(wù)如

$ ./ngrok -config=./ngrok.yml start web  #啟動web服務(wù) 使用的前綴域名為web
$ ./ngrok -config=./ngrok.yml start tcp  #啟動tcp服務(wù) 使用遠程端口3022

啟動多個服務(wù):

$ ./ngrok -config=./ngrok.yml start web tcp  #同時啟動兩個服務(wù)
$ ./ngrok -config=./ngrok.yml start-all  #啟動所有服務(wù)

### docker 配置 和 Nginx配置
基本搭建到上面基本就能用了,但是對于暴露80端口的問題這時就需要使用Nginx做一個端口的反向代理。
而加入使用的vps更換了話,就要重新再來搭建一遍,想想用docker的話,那不就很方便嗎。

此次更新去掉了docker的配置,當(dāng)初,剛學(xué)會點docker 便為了docker而docker,并沒有考慮是否合適當(dāng)前的場景。ngrok 作為一個內(nèi)網(wǎng)穿透的小工具,有時可能會時常更改配置等,所以作為本地的一個開機啟動的小服務(wù)即可。
設(shè)置開機啟動
vim /usr/lib/systemd/system/ngrok.service

## 輸入:

[Unit]
Description=ngrok
After=network.target

[Service]
TimeoutStartSec=30
ExecStart=/usr/local/ngrok/bin/ngrokd -domain="ngrok.yourset.com" -httpAddr=":2443" -httpsAddr=":3443" -tunnelAddr=":4443"
ExecStop=/bin/kill $MAINPID

[Install]
WantedBy=multi-user.target

## 命令

$ sudo systemctl enable ngrok  # 設(shè)置開機啟動
$ sudo systemctl start ngrok   # 開啟ngrok
$ sudo systemctl status ngrok  # 查看狀態(tài)
$ sudo systemctl stop ngrok    # 停止
frp 內(nèi)網(wǎng)穿透配置

相對于 ngrok 另一款國內(nèi)大牛做的 frp要顯的更加輕量安全易配置些。

中文文檔講解的也是十分全面,以下是我的相關(guān)配置

服務(wù)器端:

將文件下載解壓后的 frps 和 frps.ini 放到當(dāng)前目錄
編輯 frps.ini 文件

[common]
bind_addr = 0.0.0.0 (yourip)
bind_port = 7000 (frp通信端口)

dashboard_port = 8020 (web端查看端口 可省略)

vhost_http_port = 8021 (http 端口)

# dashboard user and pwd for basic auth protect, if not set, both default value is admin
dashboard_user = yourusername
dashboard_pwd = yourpass
privilege_token = yourtoken

配置開機啟動:

[Unit]
Description=frps
After=network.target

[Service]
TimeoutStartSec=30
ExecStart=/home/user/tool/frps/frps -c /etc/frp/frps.ini
ExecStop=/bin/kill $MAINPID

[Install]
WantedBy=multi-user.target

$ sudo systemctl enable frps  # 設(shè)置開機啟動
$ sudo systemctl start frps   # 開啟ngrok
$ sudo systemctl status frps  # 查看狀態(tài)
$ sudo systemctl stop frps    # 停止

同理設(shè)置客戶端 添加自動啟動即可通過域名或者ip 從外網(wǎng)訪問或鏈接內(nèi)網(wǎng) frp 正處于開發(fā)階段有很多實用的功能等大家去發(fā)現(xiàn)。

后記

對比frp ngrok 的搭建要繁瑣不少,但 ngrok 在的優(yōu)勢在于 方便本地調(diào)試,因為在開啟本地服務(wù)的同時,也會開啟一個本地的webserver 來監(jiān)聽 請求的相應(yīng) 如 get 和 post 的具體數(shù)據(jù) 以及服務(wù)端返回的數(shù)據(jù)。對于本地調(diào)試來說是十分方便的。而 frp 對于代理本地端的服務(wù),ssh等還是十分出色的,比如我調(diào)試的時候使用ngrok,而家里用來折騰的樹莓派 就使用了frp。最后祝大家愉快的玩耍~

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/26840.html

相關(guān)文章

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<