什麼是 Argo Tunnel

Argo Tunnel 是一個由 Cloudflare 提供的服務,這個服務主要是用來協助網站開發者避開壅塞的網際網路,而是轉由 Cloudflare 的 Datacenter 之間的線路進行資料遞送,這樣就可以大大的減少網站的 Response Time。

另外,因為透過 Argo Tunnel 遞送內容之後,主機將不用再額外開 Port 來接收外部請求,而是透過一個加密的 Tunnel 與 Cloudflare 建立連線,更可以避免暴露 IP 及 Port 多一層安全。

安裝 Argo Tunnel

安裝 cloudflared

在這個連結: cloudflared downloads 中,有安裝 cloudflared 的流程,已 Linux Ubuntu 為例,首先下載.deb amd64/x86-84版本,接著:

~$ sudo dkpg -i cloudflared-stable-linux-amd64.deb

登入 Argo Tunnel

~$ cloudflared tunnel login

A browser window should have opened at the following URL:
https://dash.cloudflare.com/argotunnel?callback=https%3A%2F%2Flogin.cloudflarewarp.com%...

這裡會拿到一個 URL,因為 Server 上沒有瀏覽器,在這裡需要將這個網址複製到自己的電腦中開啟。

開啟之後就會出現這一個頁面:

因為我待會需要用argo.floatflower.me作為我對外的網址,因此我就選floatflower.me

接著就會看到 terminal 顯示:

Leave cloudflared running to download the cert automatically.
You have successfully logged in.
If you wish to copy your credentials to a server, they have been saved to:
/root/.cloudflared/cert.pem

這個指令的結果將會在~/.cloudflared底下生成一個cert.pem

開啟 Argo Tunnel

~$ cloudflared --hostname argo.floatflower.me http://localhost:80

這個指令就是將 localhost:80 與 cloudflare 建立一個 Tunnel,接著我們就可以透過https://argo.floatflower.me,這樣就完成了。

注意:

在這裡使用 http://localhost:80 是為了比較有開 argo tunnel 和沒開 argo tunnel 的 Response Time,因此對應上的 Port 80,而 Cloudflare 官方推薦是將網站開在 Port 8080 並將所有對外的 Port 全部關閉。

結果

我們透過 Bitcatcha 這個服務來協助我們測試網站的 Response Time,首先我們有兩個網站:

  1. non-argo.floatflower.me (直接透過 DNS 指向網站伺服器 IP)
  2. argo.floatflower.me (透過 Argo Tunnel 建立連線)

non-argo.floatflower.me

在沒有 Argo Tunnel 的狀況下,直接將 DNS 指向放在 Digital Ocean 新加坡機房的主機 IP,得到的 Response Time 除了在新加坡之外,大部份地區都非常的慘烈,尤其是 Sal Paulo 以及 US。

argo.floatflower.me

加上 Argo 之後,會發現連 IP 都變了,因為實際上這個 IP 是 Cloudflare 的 IP。加上之後,所有的反應時間都變得非常得快,本來 330ms 的 Sao Paulo 也減低到了剩下 5ms,這個成果非常令人滿意。