P322 智財局 ・ 卡米爾維運固定 IP 出口 ・ 建置實錄與驗收|2026-07-27 19:00–23:30 · 建置者 CYC
結論:出口主機建置完成並驗證通過,Mac 端已可用 ── 待兩平台加入白名單即全面生效
行動辦公也能滿足「限制 IP 連線」的資安要求:人在任何網路,連平台的來源 IP 永遠是同一個。
一句話:智財局要求平台只接受指定 IP 連線,但我們同仁多是行動辦公(手機熱點、在外連線),本來就沒有固定 IP。這次在 GCP 台灣機房自建了一台 WireGuard 出口主機,讓連往指定平台的流量都從同一個固定位址出去,其餘上網完全不受影響。
🎯 要解決什麼問題
需求來源:智財局資訊室要求 tipo.botrun.ai(美波)與 tipo-agent.botrun.ai(波特玩)限縮來源 IP,只接受本局與卡米爾的位址連線(p322_tipo#7)。
衝突點:限縮上線後,卡米爾夥伴用行動網路、在外辦公、出差在國外,來源 IP 每次都不一樣,一律會被擋在門外。
本次解法:自建一個「永遠不變的出口」。人在哪裡不重要,連平台的流量統一從這個固定位址出去;其他所有上網照走自己的網路。
衝突點:限縮上線後,卡米爾夥伴用行動網路、在外辦公、出差在國外,來源 IP 每次都不一樣,一律會被擋在門外。
本次解法:自建一個「永遠不變的出口」。人在哪裡不重要,連平台的流量統一從這個固定位址出去;其他所有上網照走自己的網路。
🧭 架構:只有平台流量走公司出口
你的 Mac / iPhone
(家中 Wi-Fi、手機熱點、出差飯店、國外…)
│
├──── 連 tipo / tipo-agent 的流量 ──→ 〔GCP 台灣機房 · 固定 IP〕──→ 平台(白名單放行)
│
└──── 其他所有上網(私人瀏覽、串流、購物)──→ 直接走你自己的網路
(不經過公司主機)
這叫 split-tunnel(分流模式):把「公私分離」做在架構層,不靠自律。私人流量從來不經過公司的任何設備,所以隧道整天開著也沒有代價——實際設定上就讓它自動啟用,使用者不必記得開關。
🧱 建置成果
全部建在 P322 專案既有的 GCP 專案內,但放進獨立的虛擬網路,與正式主機的網段完全隔離。
| 資源 | 內容 | 用意 |
|---|---|---|
虛擬私有雲網路wireguard-net | 自訂模式、子網段 10.99.0.0/24 | 與正式主機網段(10.140.0.x)天生不相通,出口主機萬一被攻破也進不了正式環境 |
固定外部 IPwireguard-static-ip | asia-east1(台灣彰化)靜態保留位址 | 全案交付物。主機重開、重建、換可用區,這個位址都不變,白名單永遠不用改 |
主機wireguard-server | e2-micro/Ubuntu 24.04 LTS/約 US$8 月 | 只跑 WireGuard,是可拋棄的消耗品;30 分鐘可重建 |
防火牆規則wireguard-allow-51820 | 只開 UDP 51820,對準標記 wireguard 的主機 | 攻擊面只有一個 UDP 埠 |
| 客戶端金鑰 | cyc-macbookpro(已建) | 一人一裝置一把金鑰,可單獨停權、可稽核 |



防火牆的部分只新增一條規則、不動任何既有規則:來源不限、但只開 UDP 51820,而且只對貼了 wireguard 標記的那台主機生效——換句話說,這條規則的作用範圍就是我們自己那台機器。
✅ 驗收
| # | 檢查項目 | 怎麼驗 | 結果 |
|---|---|---|---|
| CP1 | 伺服器運作 | 主機上查 WireGuard 狀態 | 🟢 通過(wg0 介面存在、監聽 51820) |
| CP2 | 隧道握手 | 客戶端連上後查伺服器是否收到 | 🟢 通過(handshake 成立、雙向皆有流量) |
| CP4 | 分流正確 | 隧道開啟時查詢自己的對外 IP | 🟢 通過(顯示個人網路位址,證明私人流量沒繞道) |
| CP3 | 平台放行 | 開隧道連兩平台 | ⏸ 待白名單(p322_tipo#8/#9) |
| CP5 | 關閉即被拒 | 關隧道再連同一平台 | ⏸ 待白名單 |
| CP6 | 重開機 IP 不變 | 主機停止再啟動後比對 | ⏸ 待辦(IP 為靜態保留,理論上必然不變) |
CP1/CP2 的實際輸出(位址已部分遮蔽):
$ sudo wg show interface: wg0 listening port: 51820 peer: (公開金鑰略) endpoint: (個人網路位址略) allowed ips: 10.66.66.2/32 latest handshake: 28 seconds ago transfer: 692 B received, 604 B sent
CP4 的意義值得多說一句:隧道開著的時候查「我的 IP」,顯示的是你自己網路的位址而不是公司出口——這正是分流模式的證明,代表私人瀏覽完全沒有經過公司設備。這與一般 VPN 的預期相反,驗收時別誤判成失敗。
🧠 四個關鍵決策
決策建在既有專案,但放進獨立虛擬網路▸
取捨
原本打算另開專案徹底分家,實地發現該專案是正式環境(裡面有平台的入口位址)後一度翻案。最終判斷:平台尚未對客戶正式啟用、屬草創期,且組織扁平,就地建置可接受——但必須用獨立虛擬網路把內網隔開,並訂出行為守則。
守則
自建資源一律
wireguard- 開頭;名字不是這個開頭的一律只看不碰;破壞性按鈕(釋出位址/刪除/停止)按下前先唸出該列名稱確認。清單頁與詳細頁都是唯讀,看不會壞事。決策維持 e2-micro,不用免費方案▸
比較
GCP 免費層(US$0)只限美國機房:連線多 130–150ms 延遲,而且白名單裡會出現一個美國位址,對政府客戶的觀感與說明成本都是負擔。Spot VM(US$2)會被 Google 無預警回收,「穩定」不成立。
結論
US$8/月 ≈ 台幣 250 元,買的是「台灣位址+隨時在線+不會被回收」。這台主機是進出政府案平台的唯一門票,不在門票上省咖啡錢。(穩定運行一個月後可申請一年期承諾折扣,降到約 US$4.5,那才是無代價的省法。)
決策分流模式,且讓它自動啟用▸
問題
「我會忘記打開怎麼辦?」
解答
分流模式下隧道開著沒有任何代價:私人流量不經過公司主機、不影響速度、不產生額外流量費。既然開著沒代價,就不該要求使用者記得開關——設定成連上網路即自動啟用即可。
唯一要知道的副作用:主機若故障,症狀會是「只有那兩個平台連不上、其他網路都正常」,這個症狀本身就是最好的診斷提示。
唯一要知道的副作用:主機若故障,症狀會是「只有那兩個平台連不上、其他網路都正常」,這個症狀本身就是最好的診斷提示。
決策不做快照;真正該備份的是客戶端設定檔▸
理由
這台主機上沒有任何不可再生的資料(作業系統+WireGuard+金鑰,30 分鐘可重建),而真正的資產——固定 IP——是獨立於主機的資源,主機砍掉重建位址照樣不變。快照要保護的東西在這裡不存在,排程還要花錢與維護。
真正該備份的是客戶端的 .conf 設定檔(存密碼管理器)——它在使用者手上,不在主機上。
真正該備份的是客戶端的 .conf 設定檔(存密碼管理器)——它在使用者手上,不在主機上。
⚠️ 給後人的六個地雷
這些都是這次首度實作實際踩到的,原始手冊沒有寫。完整教學(含 31 張逐步截圖)在 p322_tipo_timeless/fixed-ip/。
地雷安裝腳本猜的對外位址是錯的(最容易整套白做)▸
現象
腳本第一題
IPv4 or IPv6 public address 會自動帶入主機看到的內網位址(10.99.0.2)。因為雲端主機自己看不到外部位址——外部位址掛在網路層做轉送,這是雲端通例,不是設定錯誤。後果與修法
照按 Enter 的話,客戶端設定檔裡的連線目標會是一個外面根本連不到的內網位址,整套設定形同白做。必須手動刪掉、改填固定 IP。

地雷腳本的連線埠是隨機的,和防火牆規則對不上▸
現象
安裝腳本不是用慣例的 51820,而是隨機產生一個埠號(本次給了 50867)。但防火牆規則只開了 51820,兩邊不一致=封包全被擋,而且症狀是「什麼都設好了就是連不上」,很難聯想到原因。
一行驗證
裝完立刻檢查客戶端設定檔的連線目標,必須是「固定 IP:51820」;兩個值有一個不對就要修。
地雷中文輸入法讓選單完全沒反應(卡關十分鐘)▸
現象
腳本選單打「4」卻一直重複提問,像當機。原因是中文輸入法打出來的是全形數字,腳本只認半形,收到就當無效輸入。方向鍵也不吃(會產生逃脫字元)。
對策
操作終端機選單前先切成英文輸入法;卡住時按 Ctrl+C 離開。更可靠的做法是繞過選單、直接下指令修改設定檔——對非工程師反而更穩。

地雷「啟用了卻沒有握手」是正常的,不是故障▸
說明
分流模式下,WireGuard 只在真的有封包要走隧道時才握手。沒有連平台就沒有流量要走,隧道會靜靜待命。全流量模式才會一啟用就握手——用錯的心智模型驗收,會誤判成失敗。
觸發法
對隧道內的伺服器位址送幾個封包(ping),再回頭查伺服器狀態,握手與流量就會出現。
地雷兩個看似無關的選項會害你多繞路▸
① 作業系統別選 Minimal 版
精簡版砍掉了下載工具,安裝腳本的第一行指令就會失敗,得先自己補裝。省下的空間對這個用途毫無意義。
② 設定檔不在文件寫的位置
網路上多數教學說設定檔在系統管理員家目錄,實際上這版腳本放在執行者自己的家目錄。找不到檔案時別急著重裝,先確認路徑。
地雷中文版介面的名詞和英文教學對不上▸
說明
雲端主控台中文版把「VPC 網路」翻成「虛擬私有雲網路」、「保留靜態位址」寫成「預留外部 IP」、「區域性」寫成「單一地區」。照英文教學操作的人會在選單裡找不到路。
寫教學的鐵律
手把手文件裡的按鈕名、選單名,必須和操作者實際看到的畫面文字一字不差——用詞對不上就是教學的 bug。這次的教學是邊做邊照截圖校正出來的。
📌 下一步
| 項目 | 負責 | 狀態 |
|---|---|---|
| 把固定 IP 加入美波 tipo.botrun.ai 白名單(p322_tipo#8) | panda | 已發單,截止 7/29 |
| 把固定 IP 加入波特玩 tipo-agent.botrun.ai 白名單(p322_tipo#9) | seba | 已發單,截止 7/29 |
| 白名單生效後補驗 CP3/CP5(開隧道可登入、關隧道被拒) | CYC | 待前兩項完成 |
| 建立 iPhone 金鑰、金鑰登記表、預算警示 | CYC | 已寫成接關筆記 |
本文的定位:這是一次「非工程師依教學親手完成雲端基礎建設」的實作紀錄。價值不只在那個固定位址,更在於把可複製的方法與六個地雷留成文件——同一套流程可以直接套用在其他需要限制 IP 連線的機關案子上。完整教學文件(含逐步截圖與可貼上的指令)在
安全性說明:本頁不揭露固定位址的完整數值、金鑰、個人網路位址;需要完整資訊請看內部 issue p322_tipo#8/#9。
p322_tipo_timeless/fixed-ip/。安全性說明:本頁不揭露固定位址的完整數值、金鑰、個人網路位址;需要完整資訊請看內部 issue p322_tipo#8/#9。