為了免費的四級域不擇手段


背景

  1. 一般人不會有固定ip實體
  2. 使用ddns依舊可以得到ip實體
  3. 我的ISP不給開80跟443
  4. 我是個資安懶惰鬼(把ddos等等攻擊防護都外包給cloudflare😛)
  5. 我目前不租用VPS

導火線

Cloudflare Tunnel 以及cloudflare 預設的全域SSL證書只頒給二級(domain.tld)跟三級域(sub.domain.tld)
更高的證書就不免費提供了
(Pages and worker似乎是個例外啦)

動機

最近比較想要更趨近於資科宅一點點,但是還不想太深入
加上導火線的關係促使我想研究除了cf tunnel 方法,有沒有其他內網穿透與免費多級域的方案

文獻探究

我不斷參考ivon的新手自架建議指南,對於穿透這件事,除了cloudflare tunnel 是標準內網穿透給大眾的,其他的基本上都是自用型(如tailscale, zerotier等等),再不然就是ddns+端口轉發,但是又礙於背景因素基本上是不可能走ddns與端口轉發(否則我的網址就會需要多加端口,不僅醜而不美觀,也不是標準網頁瀏覽端口)
那...真的就這樣了嗎?

AI諮詢

現在不可免的一定要問AI,不過得出的結論基本就是cloudflare 真香,他是唯一的免費王者
其他大部分是有限制的....
我還不信了
AI是有推薦localtunnel,免費開源,但是也有一些小問題:

解決問題

讓ai計畫嘛,他計畫的蠻複雜的...但我真的很懶,我還不會用cicd還是action之類的功能,也不常用github,但我現在會用cloudflare worker
所以我讓ai幫我寫邏輯代碼,現在我們來一一擊破!

中間頁問題

這個最簡單,我們讓ai設計worker代碼攔截流量,作為中間件向localtunnel增加bypass的header就可以了
(記得把網域或路由指向worker)

容器終止後會被重新配發連結

localtunnel本身就是js套件,因此我們可以套用api來向主機申請配發網域,將端口指向npm,並且因為藉由api申請網域,我們可以攔截到網域值之後再同時用另一個端口+cloudflare tunnel 來回傳取得的網域,並且讓前面設置的worker 去抓取這個網域
這樣就解決了!

npm

Nginx proxy manager
(這裡不是指nodejs package manager喔)
可以管理伺服器的反向代理,可以設置網域代理轉發並設定SSL證書

說真的,以前我是這樣的,老師或者網路上各種教學其實都會告訴你要配置caddy或nginx等等東西,但是我接觸nas之後根本摸不到這層東西,因為都是容器化暴露端口之後,在cloudflare網頁端直接設定代理穿透配置就好,所以壓根沒設置過相關設定(就算是ddns,在dsm裡面也可以直接設定反代)
不過現在倒好,我也是成長學到了npm的實作,因此往後也都可以考慮把端口流量指向worker(npm)來實現

不過當然cloudflare tunnel 還是必不可少:免費worker的流量終究是有限的,所以不可能全部都導至worker上,因此如果只是日常使用,都還是建議直接用cf tunnel 來做就可以了,至於有必要的情況下再把流量導入worker (例如zulip實例,如果沒有配置realm對應acme,預設就會是acme.zulip.domain.tld,就會觸發四級域證書錯誤的問題,這時候就建議一定要把流量導給npm了)

總之,大概就是這樣了沒錯

AI想不到這麼簡單的方法的!但是他還是可以協助你做到一些邏輯瑣事的
反正我也就是實驗玩玩啦ww
如果這對你有幫助那就好了(雖然對很多人而言可能就是個小兒科XDDD或者也沒必要用不到
但有需要蹭到四級域的就可以嘗試看看
或者你繼續用-這樣的方式-來替代.多級域也.可以


← 上一篇:[Twitter.com] 牛逼owo 🎲 隨便一篇 下一篇:問格友 - Linux桌面的oom →