日常之终端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。

posted @ 2025-05-04 00:06  UPeRVv  阅读(23)  评论(0)    收藏  举报