標籤彙整: signal

Signal 服務中斷,僅 AWS 一個資料區域故障

10/20 15:11(UTC+8),AWS 在 N. Virginia(us-east-1)的資料中心的 DynamoDB 服務無法連線,導致該區許多與 DynamoDB 相關連的服務無法使用。Snapchat、Slack、Perplexity、Canva …… 等一些網路服務因此也受到影響,其中 Signal 也因為這個事件而無法使用。

比較讓我意外的是 Signal 沒有其他區域的備援系統,而第一時間也沒有看到官方提出任何公告目前的狀況如何,最後只能到 reddit 上看看有沒有人提到是什麼狀況。才確認是 AWS 的問題,而僅是一個資料中心的問題。

覺得 Signal 在這次事件後應該要好好思考一下服務韌性的問題,Signal 的使用者可能都有其服務在線 100% 的需求,臨時要找一個替代的服務可能還沒辦法那麼快找到。或許要重新思考去中心化的通訊服務如:Matrix,既能達成端到端加密,也能達成服務的可靠性(也不太一定)。

之前,大家會把 Signal 當作注重隱私、安全的替代品,現在是不是要開始幫 Signal 找他的替代品了?

Signal Proxy

Signal 首頁截圖

什麼是 Signal?Signal 是一個注重隱私的即時通訊應用程式,提供端對端加密功能,讓使用者在發送訊息或視訊通話時,都能確保通訊的內容是安全加密。

也因為如此,Signal 在一些國家是無法正常使用,但 Signal 基金會提供一個代理伺服器的功能,透過任何人協助建立代理伺服器來協助無法使用的用戶轉介、建立連線。

Signal-TLS-Proxy

官方提供一個 Docker 版本的代理伺服器,需要一個網址、可以開啟 80、443 連線埠的主機。初次啟用的時候要取得 SSL 憑證:

./init-certificate.sh  # 取得憑證
docker compose up --detach  # 啟用代理伺服器

如何設定

在這篇文章中有提到,Signal 應用程式有設定解析 signal.tube 網域,所以可以透過像這樣的網址分享給其他人:

或是手動在應用程式中設定:

  • iOS:點左上角頭像 > 設定 > 隱私權 > 進階 > 代理伺服器 > (點擊後設定)
  • Android:點頭像 > 設定 > 資料與儲存 > 代理伺服器 > (使用設定)

分享

官方給予的建議是留下 #SignalProxy 的標籤,讓大家透過搜尋或是社群媒體的標籤搜尋,找到你有提供代理伺服器的服務,並請對方私訊取得伺服器的連結資訊。但後來大家覺得這樣太麻煩,要處理的訊息會很多,索性就直接把伺服器的資訊直接放置在公開找得到的地方,提供給大家使用。

我自己也有架設一台 Signal 代理伺服器,如同上面的網址。本來一開始伺服器是架設在新加坡(DigitalOcean)的地區,後來發現還真的越來越多人有需求而使用。稍微好奇是哪裡來的連線,就透過 DNS 被查詢的來源區域發現幾乎都是來自烏克蘭、俄羅斯的連線查詢。但直覺告訴我,新加坡的主機離他們實在太遠了,所以我就把這台伺服器移到阿姆斯特丹(DigitalOcean),離大部分的使用者較近的地區。

來自 Cloudflare 的 DNS 查詢次數,一天也有 15K 的查詢紀錄。

雖然 DNS 查詢數量看起來很多,但實際主機 CPU 使用量都不高,傳輸的容量也都沒有超過 DigitalOcean 所附的每月 500GB 傳輸用量,一台最小的機器約每月 $4 美金,也還可以接受的費用。

由於這一台算是第一次架設還不太清楚究竟會有多少人使用,曾經也作過不同地區用同一個網域網址來分散連線,但後來發現一台就足夠用了,只是比較靠近人多的地方的區域。之後可能會找離亞洲地區近一點的地方架設,要不然連去阿姆斯特丹也覺得有點延遲感很重!