日常之終端prompt的"%m"顯示為"bogon"
簡述
打開終端時,提示符經常顯示為"@bogon",也偶爾顯示為"@localhost",很奇怪。
常見的繞過方式為修改dns為google dns,或者使用 scutil 修改主機名,又或刪除 PS1 中的 "@%m"。
細節
該現象的一般解釋為,設備使用私有地址,且系統未正常配置反向DNS解析設置。中譯中為,設備在局域網內使用私有地址,DNS服務器錯誤地對私有地址的反向查詢請求返回了bogon結果。
那么如何驗證呢?
% dig -x 192.168.1.100 +short
< bogon.
那,偶爾出現localhost,又為什么呢?
% dig -x 192.168.1.100 +short
< bogon.
% dig -x 192.168.1.100 +short
< localhost.
啊,隨機返回的嗎?是的,linedns.bta.net.cn202.106.196.115#53 是這么做的。
有更離譜的嗎?有的,路由器192.168.1.1#53 對于 192.168.1.100 返回 192.168.1.100,果然還是要設置一個公共DNS。
哦,那公共DNS對于私有地址,符合RFC的行為是什么呢?返回NXDOMAIN。
% dig -x 192.168.1.100 @114.114.114.114
; <<>> DiG 9.10.6 <<>> -x 192.168.1.100 @114.114.114.114
;; global options: +cmd
;; connection timed out; no servers could be reached
timed out; no servers could be reached
% dig -x 192.168.1.100 @8.8.8.8
; <<>> DiG 9.10.6 <<>> -x 192.168.1.100 @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 9511
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
% dig -x 192.168.1.100 @223.5.5.5
; <<>> DiG 9.10.6 <<>> -x 192.168.1.100 @223.5.5.5
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 64933
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
咦,這不是常見繞過方式的第一條嗎?是的,就是如此,公共DNS行為是符合RFC的,除了個別服務商。
結論
繞過方式一,將DNS修改為符合RFC的公共DNS。

浙公網安備 33010602011771號