dig 指令:Linux DNS 查詢與 +short、+trace 輸出解讀
想確認網域的 DNS 記錄,連 DNS 伺服器的回應標頭都原樣看到時,就用 dig 指令。在 AlmaLinux 9 與 Debian 12 伺服器上依類型查詢 example.com 的記錄,並更換所詢問的 DNS 伺服器後發現,只看回應標頭的 status 和 flags,就能分辨名稱不存在、DNS 伺服器無法給出答案,以及由管理記錄的伺服器直接回答這三種情況。
以下輸出是在 AlmaLinux 9.8 伺服器(root 帳號)與 Debian 12 伺服器(一般帳號)上執行的結果。伺服器設定的 DNS 伺服器位址已換成範例值 192.0.2.53,dig 的版本號碼也換成了範例值。
1️⃣ dig 指令用法
基本形式是 [dig @伺服器 名稱 類型],伺服器和類型可以省略。依官方手冊,不寫伺服器時會詢問 /etc/resolv.conf 中設定的 DNS 伺服器,不寫類型時會查詢 A 記錄。
dig example.com; <<>> DiG 9.16.20-RH <<>> example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62441
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;example.com. IN A
;; ANSWER SECTION:
example.com. 62 IN A 104.20.23.154
example.com. 62 IN A 172.66.147.243
;; Query time: 1 msec
;; SERVER: 192.0.2.53#53(192.0.2.53)
;; WHEN: Thu Oct 29 00:09:18 UTC 2026
;; MSG SIZE rcvd: 72以分號開頭的行是說明行,沒有分號的行才是實際收到的記錄。各區段要看的內容如下。
| 輸出 | 查看的資訊 |
|---|---|
| ; <<>> DiG 9.16.20-RH <<>> example.com | 執行的 dig 版本與輸入的引數 |
| ->>HEADER<<- … status: NOERROR, id: 62441 | 回應碼(status)與查詢編號(id) |
| flags: qr rd ra | 回應標頭的旗標 — 回應的伺服器是否做了遞迴查詢、是否為管理記錄的伺服器 |
| QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 | 各區段的記錄數 |
| OPT PSEUDOSECTION · EDNS … udp: 4096 | EDNS 擴充資訊與可經 UDP 接收的回應大小(位元組) |
| QUESTION SECTION | 送出的問題 — 名稱、類別(IN)、記錄類型 |
| ANSWER SECTION | 收到的記錄 — 依序為名稱、TTL(秒)、類別、類型、值 |
| Query time: 1 msec | 收到回應所花的時間 |
| SERVER: 192.0.2.53#53(192.0.2.53) | 回應的 DNS 伺服器位址與連接埠號碼 |
| WHEN · MSG SIZE rcvd: 72 | 查詢時間與收到的回應大小(位元組) |
flags 行的 qr 表示回應,rd 表示要求遞迴查詢,ra 表示支援遞迴查詢(RFC 1035)。只有 ra 而沒有 aa,表示這個回應不是由管理記錄的伺服器送出,而是由執行遞迴查詢的 DNS 伺服器送出。
ANSWER 區段的 62 是 TTL,也就是這筆記錄還能留在快取中的剩餘時間(秒)。緊接著向 8.8.8.8 查詢同一名稱時得到 300,可見數字會因各 DNS 伺服器存入快取的時間點而不同。
若改用 nslookup 指令做同樣的查詢,回應碼和 TTL 就不會出現在預設輸出中。兩個指令的輸出差異如下。
| 比較 | dig | nslookup |
|---|---|---|
| 回應碼 | 一律出現在 HEADER 行的 status | 只有出錯時以 server can't find 行出現 |
| TTL | 出現在 ANSWER 的每一筆記錄行 | 要加 -debug 才會出現 |
| 回應的 DNS 伺服器 | 最下方的 SERVER 行 | 最上方的 Server · Address 行 |
| NXDOMAIN 的結束碼 | 0 | 1 |
已安裝的 dig 版本用 -v 確認。AlmaLinux 9 伺服器是 9.16,Debian 12 伺服器是 9.18。
dig -vDiG 9.16.20-RH2️⃣ 用 dig 查詢記錄
在名稱後面寫上記錄類型,就只查詢該記錄。各類型存放的值與本文的查詢結果如下。
| 類型 | 存放的值 | 查詢結果 |
|---|---|---|
| A | IPv4 位址 | example.com → 104.20.23.154 等 2 筆 |
| AAAA | IPv6 位址 | example.com → 2606:4700:10::6814:179a 等 2 筆 |
| MX | 郵件伺服器與優先順序 | example.com → 0 . (不收郵件) |
| NS | 管理記錄的名稱伺服器 | example.com → hera · elliott.ns.cloudflare.com. |
| TXT | 沒有固定格式的文字值(SPF 等) | example.com → v=spf1 -all 等 2 筆 |
| CNAME | 其他名稱的別名 | www.github.com → github.com. |
| SOA | 區域的主要名稱伺服器與時間值 | example.com → elliott.ns.cloudflare.com. … |
| PTR | IP 位址對應的名稱(反向) | -x 8.8.8.8 → dns.google. |
郵件伺服器用 MX 記錄確認。查詢 example.com 的 MX 時,ANSWER 區段只出現一行 [0 .]。
dig example.com MX; <<>> DiG 9.16.20-RH <<>> example.com MX
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34433
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;example.com. IN MX
;; ANSWER SECTION:
example.com. 300 IN MX 0 .
;; Query time: 5 msec
;; SERVER: 192.0.2.53#53(192.0.2.53)
;; WHEN: Thu Oct 29 00:09:23 UTC 2026
;; MSG SIZE rcvd: 550 是優先順序,在郵件伺服器名稱位置只有一個點的 MX 稱為 Null MX,表示這個網域不收郵件(RFC 7505)。類型用小寫 mx 也得到相同結果。
只想看記錄行時,加上 [+noall +answer]。依官方手冊,+noall 會關閉所有輸出區段,+answer 則只重新開啟 ANSWER 區段。
dig example.com NS +noall +answerexample.com. 12192 IN NS hera.ns.cloudflare.com.
example.com. 12192 IN NS elliott.ns.cloudflare.com.example.com 有兩台名稱伺服器。這兩台就是直接管理 example.com 記錄的權威名稱伺服器。
dig example.com TXT +noall +answerexample.com. 300 IN TXT "v=spf1 -all"
example.com. 300 IN TXT "_k2n1y4vw3qtb4skdx9e7dxt97qrmmq9"TXT 記錄可以放沒有固定格式的文字值。v=spf1 -all 是表示沒有任何伺服器可以用這個網域名稱寄信的 SPF 值。
dig www.github.com CNAME +noall +answerwww.github.com. 291 IN CNAME github.com.www.github.com 是 github.com 的別名(CNAME)。不寫類型查詢同一名稱時,CNAME 行之後接著出現 github.com 的 A 記錄。
SOA 記錄加上 +multiline 後,每個數字旁都會附上名稱與時間的註解,比較好讀。
dig example.com SOA +multiline +noall +answerexample.com. 1765 IN SOA elliott.ns.cloudflare.com. dns.cloudflare.com. (
2418004112 ; serial
10000 ; refresh (2 hours 46 minutes 40 seconds)
2400 ; retry (40 minutes)
604800 ; expire (1 week)
1800 ; minimum (30 minutes)
)serial 是每次修改記錄就會遞增的序號,refresh、retry、expire 是次要名稱伺服器與主要伺服器同步記錄時使用的時間值。minimum 是不存在的名稱或記錄之回應可留在快取中的時間。
只需要值時,加上 +short。A 記錄只剩 IP 位址,MX 只剩優先順序與郵件伺服器名稱。
dig +short example.com172.66.147.243
104.20.23.154dig google.com MX +short10 smtp.google.com.在 [+noall +answer] 後面再加 +stats,會一併顯示查詢時間與回應伺服器的行。Debian 12 伺服器的 dig 9.18 在 SERVER 行末尾加上了送出查詢的方式 (UDP),AlmaLinux 9 伺服器的 dig 9.16 則沒有這個標示。
dig example.com +noall +answer +statsexample.com. 235 IN A 172.66.147.243
example.com. 235 IN A 104.20.23.154
;; Query time: 0 msec
;; SERVER: 192.0.2.53#53(192.0.2.53) (UDP)
;; WHEN: Thu Oct 29 00:10:26 UTC 2026
;; MSG SIZE rcvd: 723️⃣ dig 指定 DNS 伺服器與反向查詢
在名稱前寫上 @ 和 DNS 伺服器,就會改問該伺服器,而不是伺服器上設定的 DNS 伺服器。詢問 8.8.8.8 時,SERVER 行變成 8.8.8.8,flags 多了 ad。
dig @8.8.8.8 example.com; <<>> DiG 9.16.20-RH <<>> @8.8.8.8 example.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61431
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;example.com. IN A
;; ANSWER SECTION:
example.com. 300 IN A 104.20.23.154
example.com. 300 IN A 172.66.147.243
;; Query time: 30 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Thu Oct 29 00:09:29 UTC 2026
;; MSG SIZE rcvd: 72ad 是表示回應的伺服器已驗證 DNSSEC 簽章、判斷回應中的記錄可信的旗標(RFC 4035)。伺服器上設定的 DNS 伺服器的回應中沒有 ad。
把 NS 查詢得到的名稱伺服器寫在 @ 後面,就是直接詢問管理 example.com 記錄的伺服器。
dig @elliott.ns.cloudflare.com example.com; <<>> DiG 9.16.20-RH <<>> @elliott.ns.cloudflare.com example.com
; (6 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61828
;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;example.com. IN A
;; ANSWER SECTION:
example.com. 300 IN A 172.66.147.243
example.com. 300 IN A 104.20.23.154
;; Query time: 4 msec
;; SERVER: 2606:4700:58::a29f:2ce4#53(2606:4700:58::a29f:2ce4)
;; WHEN: Thu Oct 29 00:09:29 UTC 2026
;; MSG SIZE rcvd: 72這次 flags 出現了 aa,可以確認是權威名稱伺服器直接回答。這台伺服器不支援經由其他伺服器尋找名稱的遞迴查詢,所以 ra 不見了,並多了 [WARNING: recursion requested but not available] 這一行。
(6 servers found) 表示名稱伺服器的名稱解析成三個 IPv4 位址和三個 IPv6 位址。SERVER 行顯示的是其中送出答案的 IPv6 位址。
在 -x 後面寫上 IP 位址,就會查詢 PTR 記錄,找出該位址對應的名稱。
dig -x 8.8.8.8 +noall +answer8.8.8.8.in-addr.arpa. 300 IN PTR dns.google.dig 查詢的是把 8.8.8.8 倒過來寫再加上 in-addr.arpa 的名稱,得到的 PTR 值 dns.google. 就是 8.8.8.8 的名稱。
4️⃣ dig +trace 委派路徑
加上 +trace 後,dig 會從根名稱伺服器開始依序詢問,逐步輸出名稱被委派給哪一台伺服器。依官方手冊,+trace 也會要求 DNSSEC 簽章行,所以另外加了 +nodnssec,只看委派路徑。
dig +trace +nodnssec example.com; <<>> DiG 9.16.20-RH <<>> +trace +nodnssec example.com
;; global options: +cmd
. 86333 IN NS j.root-servers.net.
. 86333 IN NS g.root-servers.net.
. 86333 IN NS b.root-servers.net.
. 86333 IN NS e.root-servers.net.
. 86333 IN NS k.root-servers.net.
. 86333 IN NS f.root-servers.net.
. 86333 IN NS l.root-servers.net.
. 86333 IN NS m.root-servers.net.
. 86333 IN NS h.root-servers.net.
. 86333 IN NS c.root-servers.net.
. 86333 IN NS d.root-servers.net.
. 86333 IN NS a.root-servers.net.
. 86333 IN NS i.root-servers.net.
;; Received 239 bytes from 192.0.2.53#53(192.0.2.53) in 1 ms
com. 172800 IN NS a.gtld-servers.net.
com. 172800 IN NS b.gtld-servers.net.
com. 172800 IN NS c.gtld-servers.net.
com. 172800 IN NS d.gtld-servers.net.
com. 172800 IN NS e.gtld-servers.net.
com. 172800 IN NS f.gtld-servers.net.
com. 172800 IN NS g.gtld-servers.net.
com. 172800 IN NS h.gtld-servers.net.
com. 172800 IN NS i.gtld-servers.net.
com. 172800 IN NS j.gtld-servers.net.
com. 172800 IN NS k.gtld-servers.net.
com. 172800 IN NS l.gtld-servers.net.
com. 172800 IN NS m.gtld-servers.net.
;; Received 836 bytes from 2001:7fd::1#53(k.root-servers.net) in 30 ms
example.com. 172800 IN NS hera.ns.cloudflare.com.
example.com. 172800 IN NS elliott.ns.cloudflare.com.
;; Received 359 bytes from 2001:503:d414::30#53(f.gtld-servers.net) in 66 ms
example.com. 300 IN A 104.20.23.154
example.com. 300 IN A 172.66.147.243
;; Received 72 bytes from 108.162.195.228#53(elliott.ns.cloudflare.com) in 3 ms每個步驟最後的 [Received … from] 行會顯示送出該回應的伺服器。四個步驟中詢問的伺服器與收到的內容如下。
| 等級 | 詢問的伺服器 | 收到的內容 |
|---|---|---|
| 1 | 伺服器上設定的 DNS 伺服器(192.0.2.53) | 根(.)名稱伺服器 13 台 |
| 2 | k.root-servers.net | .com 名稱伺服器 13 台(gtld-servers.net) |
| 3 | f.gtld-servers.net | example.com 名稱伺服器 2 台 |
| 4 | elliott.ns.cloudflare.com | example.com 的 A 記錄 2 筆 |
+trace 的輸出就像掛號信的貨態追蹤紀錄。
最後一步的 A 記錄是 example.com 的名稱伺服器直接送出的值,因此是沒有經過快取的最新值。剛更換名稱伺服器時,先在第 3 步確認 .com 伺服器是否已回應新的名稱伺服器。
5️⃣ dig 回應錯誤與選項
🔲 回應錯誤
查詢不存在的名稱時,status 會顯示 NXDOMAIN。.invalid 是保留起來不會實際使用的頂級網域,因此用來確認這個回應。
dig example.invalid; <<>> DiG 9.16.20-RH <<>> example.invalid
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 23779
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;example.invalid. IN A
;; AUTHORITY SECTION:
invalid. 10800 IN SOA localhost. nobody.invalid. 1 3600 1200 604800 10800
;; Query time: 1 msec
;; SERVER: 192.0.2.53#53(192.0.2.53)
;; WHEN: Thu Oct 29 00:09:33 UTC 2026
;; MSG SIZE rcvd: 96ANSWER 為 0,AUTHORITY 區段中有該區域的 SOA 記錄。SOA 最後的數字 10800 是這個回應可留在快取中的時間(秒)。
no-such-host.example.com 不是以 NXDOMAIN 結束,而是 status 為 NOERROR、ANSWER 為 0。這是沒有錯誤碼、只是沒有記錄的回應,所以要同時確認 status 和 ANSWER 數。
dig no-such-host.example.com; <<>> DiG 9.16.20-RH <<>> no-such-host.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31671
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;no-such-host.example.com. IN A
;; AUTHORITY SECTION:
example.com. 1800 IN SOA elliott.ns.cloudflare.com. dns.cloudflare.com. 2418004112 10000 2400 604800 1800
;; Query time: 7 msec
;; SERVER: 192.0.2.53#53(192.0.2.53)
;; WHEN: Thu Oct 29 00:09:33 UTC 2026
;; MSG SIZE rcvd: 115SERVFAIL 是表示 DNS 伺服器無法產生答案的回應碼(RFC 1035)。向 8.8.8.8 查詢用來測試 DNSSEC 驗證失敗的公開網域 dnssec-failed.org 時,出現了 SERVFAIL 以及 EDE 行。
dig @8.8.8.8 dnssec-failed.org; <<>> DiG 9.16.20-RH <<>> @8.8.8.8 dnssec-failed.org
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 57521
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
; EDE: 9 (DNSKEY Missing): (No DNSKEY matches DS RRs of dnssec-failed.org)
;; QUESTION SECTION:
;dnssec-failed.org. IN A
;; Query time: 333 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Thu Oct 29 00:09:41 UTC 2026
;; MSG SIZE rcvd: 97EDE 是補充錯誤原因的延伸錯誤碼(RFC 8914)。9 (DNSKEY Missing) 表示找不到與上層區域 DS 記錄相符的 DNSKEY,8.8.8.8 對無法驗證簽章的名稱回傳 SERVFAIL,而不是位址。
DNS 伺服器沒有回應時,輸出會在沒有 status 行的情況下以 [connection timed out; no servers could be reached] 結束。以 [+timeout=2 +tries=1] 詢問文件範例用位址 192.0.2.1 時,2 秒後出現了這一行。
dig @192.0.2.1 example.com +timeout=2 +tries=1; <<>> DiG 9.16.20-RH <<>> @192.0.2.1 example.com +timeout=2 +tries=1
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached不加選項詢問同一位址時,15 秒後出現同一行。這是因為官方手冊的預設值是每個回應等 5 秒、嘗試 3 次。Debian 12 伺服器的 dig 9.18 先出現 [communications error to 192.0.2.1#53: timed out] 行,最後一行是 [no servers could be reached]。
在指令稿中依結束碼區分結果時,要考慮 NXDOMAIN 也是 0。用 +short 查詢 example.invalid 後輸出結束碼,得到空結果和 0;沒有回應的 192.0.2.1 查詢則是 9。
dig +short example.invalid; echo $?0各種回應錯誤在輸出中要看的行與接下來要確認的事項如下。
| 輸出 | 說明 | 接下來要確認的項目 |
|---|---|---|
| status: NXDOMAIN | 該名稱不存在 | 網域的拼寫與註冊狀態、用 +trace 看委派路徑 |
| status: NOERROR · ANSWER: 0 | 回應中沒有該類型的記錄 | 記錄類型與名稱伺服器的記錄設定 |
| status: SERVFAIL | DNS 伺服器無法產生答案 | EDE 行、其他 DNS 伺服器(@8.8.8.8 · @1.1.1.1)的回應 |
| connection timed out | DNS 伺服器沒有回應 | DNS 伺服器位址與擋住 53 號連接埠的防火牆 |
🔲 dig 指令選項
📌 主要選項:本文實際執行的結果
| 選項 | 作用 | 本文看到的結果 | |
|---|---|---|---|
| @伺服器 | 改問指定的伺服器,而不是伺服器上設定的 DNS 伺服器 | @8.8.8.8 時 SERVER 行變成 8.8.8.8、flags 多了 ad,詢問權威名稱伺服器時出現 aa | |
| 類型 | 只查詢名稱後面寫的記錄類型 | example.com MX 得到一行 [0 .],小寫 mx 也是相同結果 | |
| -x 位址 | 查詢 IP 位址的 PTR 記錄 | -x 8.8.8.8 得到 dns.google. | |
| -v | 輸出版本 | AlmaLinux 9 伺服器是 9.16,Debian 12 伺服器是 9.18 | |
| -r | 不讀取家目錄中的 .digrc | 即使 .digrc 中寫了 +short,加上 -r 後記錄行仍完整出現 | |
| +short | 只輸出記錄的值 | A 得到兩個 IP 位址,google.com MX 得到 10 smtp.google.com. | |
| +noall +answer | 關閉所有輸出區段,只重新開啟 ANSWER | example.com NS 只剩兩行名稱伺服器 | |
| +multiline | 把 SOA 等較長的記錄分成多行並附上註解 | serial、refresh 等名稱與時間以註解附在每個數字旁 | |
| +stats | 一併輸出查詢時間與回應伺服器的行 | Debian 12 伺服器的 dig 9.18 在 SERVER 行末尾出現 (UDP) | |
| +trace | 從根名稱伺服器依序詢問並輸出委派路徑 | 四個步驟中每一步最後的 [Received … from] 行都會顯示回應的伺服器 | |
| +nodnssec | 不要求 DNSSEC 簽章記錄 | 與 +trace 一起使用,只留下委派路徑 | |
| +timeout=秒 | 等待單一回應的時間,預設 5 秒 | 以 +timeout=2 +tries=1 詢問 192.0.2.1 時 2 秒後出現 [connection timed out],不加選項則是 15 秒 | |
| +tries=次數 | 送出查詢的次數,預設 3 次 | 與 +timeout=2 一起設為 1 時,只詢問一次,2 秒後結束 | |
| +tcp | 改用 TCP 而不是 UDP 送出查詢 | Debian 12 伺服器的 dig 9.18 中 SERVER 行末尾從 (UDP) 變成 (TCP),記錄相同 |
📎 其他選項:依官方手冊
| 選項 | 作用 | |
|---|---|---|
| -4 | 只用 IPv4 查詢 | |
| -6 | 只用 IPv6 查詢 | |
| -t 類型 | 指定要查詢的記錄類型 | |
| -q 名稱 | 指定要查詢的名稱,避免與其他引數混淆時使用 | |
| -p 連接埠 | 改用指定的連接埠查詢,而不是 53 號 | |
| -b 位址 | 指定送出查詢的來源 IP 位址 | |
| -f 檔案 | 依序執行檔案中每行寫一筆的查詢 | |
| +norecurse | 關閉遞迴查詢要求(RD)後查詢 | |
| +dnssec | 一併要求 DNSSEC 記錄 | |
| +nssearch | 找出權威名稱伺服器,輸出每台伺服器持有的 SOA 記錄 | |
| +nocmd | 輸出時省略開頭的版本與選項說明行 | |
| +nocomments | 輸出時省略回應標頭與區段名稱等說明行 | |
| +ttlunits | 以 s、m、h、d、w 單位輸出 TTL | |
| +retry=次數 | 不含第一次查詢的重送次數,預設 2 |
🔲 dig 指令模擬器
在下方模擬器中,可以切換記錄類型、DNS 伺服器和輸出選項,親自輸入 dig 試試看。
🔢 FAQ & 推薦內容
ℹ️ 聯盟行銷說明
本站內容包含聯盟行銷連結。訪客透過這些連結購買商品或服務時,本站會從賣家獲得佣金。在這個過程中,購買者支付的金額(遇到活動折扣時金額會降低↓)並不會因此提高。刊登的價格、折扣與庫存資訊以撰寫當時為準,可能與實際情況不同,購買前請向賣家做最後確認。商品的挑選與評價依本站自訂的標準撰寫,是否支付佣金不會影響介紹順序或評價內容。