
用虛擬機架個路由器。
情境:
中華電信,撥接,固定 ip: 1.2.3.4 (跟中華電信要)
網域名: iron30.com,已經指向 1.2.3.4 ( 此處不會的,問 AI )
為甚麼第一個做這個?
因為:後面所有的VM,都會需要連到網路,所以我們必須要先有個路由器,後面的建置才能進行下去。
虛擬機用兩張虛擬網卡:
一張接撥接那條實體網路埠,當對外:一張接內網橋接器,當對內。對外只有 1.2.3.4 這一個門牌,所有服務靠通訊埠轉發分流到內網不同機器。iron30.com 和它底下的子網域全部指向同一個 IP,進來之後誰接手是反向代理的事,那是後面的篇章。

做成虛擬機的理由很單純:它從此跟其他機器一樣 —— 可以備份、可以還原、可以先在旁邊開一台試,試壞了刪掉就好。
ssh 連到 proxmox,切換到 /opt/claude-working,執行 claude code:
告訴 claude code :
要在 Proxmox 上用 OpenWrt 建一台軟體路由器。
環境:
對外是中華電信 PPPoE 撥接,固定制,撥上去會拿到固定 IP 1.2.3.4
內網用 192.168.0.0/24,路由器自己是 192.168.0.10
網域 iron30.com 已經指向 1.2.3.4
請幫我:
1. 建 VM:兩張網卡,一張接撥接那條實體網路埠,一張接內網橋接器。
網卡的防火牆選項要關掉。
2. 裝 OpenWrt x86 版,設定 WAN 走 PPPoE、LAN 固定 192.168.0.10。
3. DHCP 發 192.168.0.100 到 192.168.0.150。
4. 關掉 IPv6 —— 要真的關掉。不只是介面上那個停用選項,
PPPoE 的撥接程式自己那一層也會去談 IPv6,那層也要關。
設完去看撥接日誌,確認一次撥接裡沒有任何 IPv6 協商的痕跡,再回報完成。
5. 防火牆:WAN 進來的封包一律拒絕,只留我等一下指定的轉發。
6. LAN 這側的 SSH 留著,你之後要靠它管這台。WAN 那側一律拒絕。
7. 網頁管理介面的帳號密碼設成 admin / admin,測試用。
8. 做完把這台的連線資訊寫進 Proxmox 那台虛擬機的備註欄:
對外固定 IP、內網位址、網頁介面帳號、SSH 埠。
那個欄位不用登入機器就看得到 —— 萬一哪天連不進去,還查得到它被改成什麼。
規則:
整件事你做完,不要把步驟列給我叫我自己去點。
每一項設完都要自己驗證,不要用「應該可以了」回報我。
會讓我斷線的操作(重開路由器、改 WAN 設定)先告訴我,我決定時機。
每做完一步,回報你改了哪個設定、改成什麼。
PPPoE 的帳號密碼我會給你,但不要寫進任何會進版控或備份的檔案。**
建好後的注意事項,首要是確認撥接帳號的屬性。撥接帳號後面那一段,決定你到底有沒有固定 IP。一般家用是 帳號@hinet.net,非固定制,重撥就換一個 IP;固定制是 帳號@ip.hinet.net,重撥會拿回同一個。兩者在設定畫面上長得幾乎一樣,只差幾個字。
LAN 這一側的 SSH 我留著,WAN 那側一律拒絕。這跟「能關的都關掉」的直覺相反,但理由很實際:不留著,AI 就管不動這台機器。
完成後,瀏覽網頁: http://192.168.0.10 , 輸入帳號admin,密碼admin,確定是否搭建完成。 admin/admin 只在管理介面關在 LAN 內時可以這樣用,正式上線後,請改掉 id, password。
接下來檢測:
告訴 claude code :
路由器設好了,幫我從「外面」驗證,不是從內網 curl 自己。
要確認的:
1. 從公網看,1.2.3.4 的 443 有沒有回應?管理介面有沒有不小心對外開著?
2. 我開的通訊埠轉發,是不是只有我列的那幾條?有沒有以前留下來、
後面根本沒有服務在接的死規則?
3. 內網的 DNS 服務會不會回應外面來的查詢?(開放遞迴解析)
重點:不要從內網那台機器 curl 1.2.3.4。
那個封包會在路由器上繞回來,對方看到的來源是內網位址,
所有「只給內網」的規則都會放行,你會得到一個假的通過。
請用真正從外面來的來源去測。
這一段反直覺,但它決定了前面所有設定到底有沒有效:從自己內網去 curl 自己的公網 IP,測不出任何東西。那個封包會在路由器上繞一圈回來,對方看到的來源是內網位址。於是所有「只給內網」的規則、來源白名單、內網優先的過濾,全部放行。你會得到一個假的通過,而且看起來非常像真的。
第3點是你有自己安裝網域服務器 (DNS Server) 才需要,如果沒有可以取消。
真正可用的外部檢測有三種:
第一種,叫 AI 去抓那個網址。它的請求會從別人的機房發出,是真正的網際網路來源,最省事,但只能測網頁,測不了其他通訊埠。
第二種,在路由器上執行測試指令。這時來源就是你的公網 IP,限制是只能跑路由器允許的那幾支程式。
第三種,手機關掉 Wi-Fi 用行動網路。什麼都能測,但要手動。
檢測 ok 後,升級:
告訴 claude code :
幫我把路由器升到最新版。
流程:
1. 先告訴我現在版本、最新版是哪一版、這次修了什麼,
以及那些漏洞對我這台到底適不適用。
2. 升級前把設定備份下來,列出目前所有通訊埠轉發規則,存成一份清單。
3. 升級。過程中連線會中斷,那是正常的。
4. 升完之後逐項核對:版本、撥接有沒有回來、IP 是不是同一個、
通訊埠轉發是不是一條都沒少、我對外的每個網址是不是都還開得起來。
不要問我要不要升就直接升。flash 之前停下來讓我確認。
升級最容易做錯的是看到「重大漏洞」就半夜爬起來升。上一次那個版本,最高風險項是一個遠端執行漏洞,聽起來很可怕 —— 但它需要 IPv6 的位址派發服務才打得到,而這台機器整個 IPv6 都沒開,那條完全碰不到。真正吃到的是底下的加密函式庫和核心。該升,但不必恐慌。先問「這個漏洞對我這台適不適用」,再決定用什麼速度升。
升級後最重要的驗證不是版本號,是通訊埠轉發有沒有少。所以升之前一定要先把規則清單存下來,升完逐條核對。實測那次數量完全一致才算過。版本號對了但少了一條轉發,你要到有人告訴你服務斷了,你才會知道。
會有兩件事看起來像失敗,其實是正常的:1. 更新途中連線中斷 —— 機器在呼叫進行到一半就重開了,本來就會斷。2.上傳檔案後回報的雜湊對不上 —— 有的介面回的是一種雜湊,你拿另一種去比當然不一樣,看檔案大小加上對應的那一種才準。
另外如果 openwrt 新版換了套件管理指令,舊的那套就不能用了,原來寫的自動化腳本會出錯。
升級完成後,基本上這臺路由器就做好了。
路由器做成虛擬機之後,它就跟其他機器一樣了:可以備份、可以還原、可以在旁邊先開一台試。這件事的價值不在省下一台實體設備的錢,在於它從此是一個「可以犯錯」的東西。
明天,做一個 Ubuntu 範本,做一次之後全部 clone。