網域接 VPS 跟接虛擬主機最大的不同,在於你要自己對很多細節負責,包括 IP、Web Server、SSL、對外 port 與測試方式。這篇會把這條流程串起來,不會只停在「新增一筆 A 記錄」。
你如果不想每次都只是照著別人的畫面一步一步跟著按,卻不知道自己到底改了什麼,這篇會比較適合你。重點不是讓你背流程,而是讓你下次遇到類似情況時,還知道該怎麼自己判斷。
你會學到什麼
- 完成 VPS 常見的網域指向流程。
- 理解 DNS 指向成功不代表網站服務一定正常。
- 設定反向 DNS (rDNS) 讓你的 VPS IP 對應到網域。
- 了解在 VPS 上跑 Mail Server 時需要的 DNS 設定。
- 知道切換後要驗哪些層。
什麼情況最適合先看這篇
- 正在處理網域、解析、Cloudflare 或郵件紀錄,想一次把觀念和排錯順好的人
- 你現在正要處理「網域指向 VPS 主機」這類操作
- 你希望做完之後不只功能能用,連驗證與排錯也有概念
開始前先確認
- 確認 VPS 的 Web Server 已可對外回應。
- 手邊準備好正確 IP 與網站設定。
- 正式切換前先測試站點內容。
先提醒你一件事
DNS 問題常常不是設定全錯,而是你同時改了太多地方,最後分不清楚是哪一步造成的。
詳細教學與操作步驟
事前準備
在設定之前,請先準備以下資訊:
- VPS 的 IPv4 位址: 可在購買後的開通信件或客戶中心「我的服務」中找到。
- VPS 的 IPv6 位址(如有提供): 同樣可在開通信件中找到。
- 已在 Cloudflare 設定好的網域: 如尚未設定,請參考 網域指向主機教學 中的 Cloudflare 設定步驟。
VPS 網域指向完整架構圖
新增 A 記錄(IPv4)
- 登入 Cloudflare Dashboard,選擇你的網域。
- 點選左側「DNS」→「Records」。
- 點選「Add record」,填寫:
- Type: A
- Name:
@(根網域)或你想要的子網域名稱(例如app) - IPv4 address: 你的 VPS IPv4 位址
- Proxy status: 依據用途選擇(見下方說明)
- TTL: Auto
- 點選「Save」。
新增 AAAA 記錄(IPv6)
如果你的 VPS 有提供 IPv6 位址,建議一併新增 AAAA 記錄:
- 點選「Add record」,填寫:
- Type: AAAA
- Name:
@(與 A 記錄相同) - IPv6 address: 你的 VPS IPv6 位址(例如
2402:4920:27::102) - Proxy status: 與 A 記錄保持一致
- 點選「Save」。
新增 www 記錄
別忘了處理 www 子網域,大部分人習慣在網址前面加 www:
# 方式一:A 記錄(與根網域相同 IP)
www A 203.0.113.10
# 方式二:CNAME(指向根網域,推薦)
www CNAME example.com
Proxy 狀態選擇建議
VPS 的用途比虛擬主機更多樣,Proxy 狀態需要根據你的使用情境來決定:
| VPS 用途 | 建議 Proxy 狀態 | 原因 |
|---|---|---|
| 純網站(HTTP/HTTPS) | Proxied(橘色雲朵) | 享有 CDN 加速與 DDoS 防護 |
| SSH 遠端連線 | DNS only(灰色雲朵) | Cloudflare 不代理 SSH 流量 |
| 郵件伺服器 | DNS only(灰色雲朵) | 郵件協定不支援 Proxy |
| 遊戲伺服器 | DNS only(灰色雲朵) | 遊戲使用非 HTTP 協定 |
| 混合用途 | DNS only(灰色雲朵) | 確保所有服務都能正常運作 |
提示: 如果你的 VPS 同時跑網站和其他服務,可以用子網域來區分。例如根網域 example.com 開啟 Proxy 供網站使用,另設 ssh.example.com 為 DNS only 供 SSH 連線。
設定萬用字元記錄(Wildcard)
如果你想讓所有子網域都指向同一台 VPS,可以新增萬用字元記錄:
- 點選「Add record」,填寫:
- Type: A
- Name:
* - IPv4 address: 你的 VPS IP
- Proxy status: DNS only(灰色雲朵)
- 點選「Save」。
注意: 免費方案的萬用字元記錄不支援 Proxied 模式,只能使用 DNS only。
反向 DNS (rDNS / PTR 記錄) 設定
反向 DNS 跟一般 DNS 做的事情相反:一般 DNS 是「網域 → IP」,反向 DNS 是「IP → 網域」。
為什麼需要反向 DNS?
- Email 送信必要條件:很多郵件伺服器會檢查寄件 IP 的反向 DNS。如果你的 VPS IP 沒有設定 rDNS,或 rDNS 指向的不是你的網域,寄出的信很容易被標為垃圾郵件或直接拒收。
- 可信度:正確的 rDNS 設定代表你有合法管理這個 IP 的權限。
- 除錯方便:在看 log 或 traceroute 時,有 rDNS 的 IP 會顯示網域名稱,比較好辨識。
如何設定反向 DNS?
反向 DNS 不是在 Cloudflare 或域名商設定的,而是要在你的 VPS 供應商那邊設定:
- 登入侃瑞科技 客戶中心。
- 找到你的 VPS 服務。
- 在 VPS 管理面板中找到「Reverse DNS」或「PTR Record」設定。
- 將你的 VPS IP(例如
203.0.113.10)的 PTR 記錄設定為你的網域(例如mail.example.com)。
驗證反向 DNS:
# 用 dig 反查
dig -x 203.0.113.10
# 用 nslookup 反查
nslookup 203.0.113.10
# 預期結果應該顯示你設定的網域名稱
注意事項:
- rDNS 記錄的網域必須有對應的 A 記錄指回同一個 IP,這叫做「Forward-confirmed reverse DNS (FCrDNS)」。
- 一個 IP 通常只能設定一個 PTR 記錄。
- IPv6 也可以設定反向 DNS,但格式比較長。
VPS 上的 Mail Server DNS 設定
如果你打算在 VPS 上自己架設 Mail Server(例如 Postfix + Dovecot),除了基本的 A 記錄外,還需要以下 DNS 設定:
必要的 DNS 記錄:
| 記錄類型 | 名稱 | 值 | 用途 |
|---|---|---|---|
| A | mail | VPS IP | 郵件伺服器位址 |
| MX | @ | mail.example.com(優先順序 10) | 指定郵件伺服器 |
| TXT | @ | v=spf1 ip4:VPS-IP -all | SPF 驗證 |
| TXT | _dmarc | v=DMARC1; p=quarantine; ... | DMARC 政策 |
| TXT | default._domainkey | DKIM 公鑰 | DKIM 簽章驗證 |
| PTR | VPS IP | mail.example.com | 反向 DNS |
完整的 Mail Server DNS 設定範例:
# A 記錄 - 網站
@ A 203.0.113.10
www CNAME example.com
# A 記錄 - 郵件伺服器(必須灰色雲朵)
mail A 203.0.113.10 (DNS only)
# MX 記錄
@ MX 10 mail.example.com
# SPF
@ TXT "v=spf1 ip4:203.0.113.10 -all"
# DKIM(從 Mail Server 產生的公鑰)
default._domainkey TXT "v=DKIM1; k=rsa; p=MIGfMA0G..."
# DMARC
_dmarc TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com"
重要提醒:
mail子網域的 A 記錄不能開啟 Cloudflare Proxy(必須灰色雲朵),否則郵件協定會被擋。- 自架 Mail Server 的維護成本很高,包括安全更新、垃圾郵件過濾、黑名單監控等。如果只是需要企業信箱,建議使用 Google Workspace 或 Microsoft 365,會省很多事。
- 確認 VPS 的 port 25(SMTP)沒有被 VPS 供應商封鎖。部分雲端供應商預設會封鎖 port 25 以防止垃圾郵件。
VPS 防火牆與 DNS 的關係
設定 DNS 指向 VPS 後,別忘了確認 VPS 的防火牆有開放必要的 port:
| port | 服務 | 說明 |
|---|---|---|
| 80 | HTTP | 網站(必開) |
| 443 | HTTPS | 網站 SSL(必開) |
| 22 | SSH | 遠端管理(建議限制來源 IP) |
| 25 | SMTP | 寄送郵件 |
| 465 | SMTPS | 加密 SMTP |
| 587 | Submission | 郵件提交(推薦) |
| 993 | IMAPS | 加密收信 |
# 使用 ufw 防火牆範例
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 22/tcp
sudo ufw allow 25/tcp
sudo ufw allow 587/tcp
sudo ufw allow 993/tcp
驗證 DNS 設定
設定完成後,使用以下指令確認記錄是否生效:
使用 nslookup:
nslookup example.com
nslookup -type=AAAA example.com
nslookup -type=MX example.com
使用 dig(更詳細):
dig example.com A
dig example.com AAAA
dig example.com MX
dig -x 203.0.113.10 # 反向 DNS 查詢
確認回傳的 IP 位址與你設定的一致即代表成功。如果結果不正確,請等待 DNS 傳播或檢查記錄是否有誤。
做完後怎麼確認自己真的有設對
- 至少用
dig、nslookup或線上工具再驗一次,區分是設定錯、快取,還是 propagation。 - 重新看一次你剛剛改過的設定值、網址、帳號或紀錄,確認沒有填錯對象。
- 如果這篇操作會影響正式網站或正式信箱,建議再從不同網路或不同裝置測一次。
- 如果有設定 Mail Server,用 mail-tester.com 測試郵件健康度。
這一題最常踩的坑
- A 記錄指對了,但主機服務根本沒開。
- 忘了處理
www,導致一個能開一個不能開。 - 還沒測完就先接 Cloudflare 或開 SSL,排錯變太複雜。
- 要跑 Mail Server 但沒設反向 DNS,寄出的信全進垃圾桶。
- VPS 防火牆沒開 port 80/443,DNS 指對了但網站還是連不到。
如果你要往下一步走
如果你 VPS 還沒建好網站環境,可以回頭看 Nginx 與 PHP 教學。 如果你接下來要把網站正式上線,也可以直接銜接侃瑞的 主機方案 或 VPS 方案。