最近 Facebook 破圖的問題 (168.95.1.1 出問題)

最近在 Facebook 上常看到有同事在抱怨破圖,其實是 168.95.1.1 的問題... 在 zsh 下跑一百次查詢可以偵測到對應的問題,不只是 Facebook 的網站,包括 HiNet 自家網站都查不到:

gslin@GSLIN-HOME1404 [~] [01:12/W5] repeat 100 host www.hinet.net 168.95.1.1 | grep REFUSED
Host www.hinet.net not found: 5(REFUSED)
Host www.hinet.net not found: 5(REFUSED)
Host www.hinet.net not found: 5(REFUSED)
Host www.hinet.net not found: 5(REFUSED)
Host www.hinet.net not found: 5(REFUSED)
Host www.hinet.net not found: 5(REFUSED)
Host www.hinet.net not found: 5(REFUSED)

隔壁的 168.95.192.1Google 家的 8.8.8.8 就沒這個問題:

gslin@GSLIN-HOME1404 [~] [01:13/W5] repeat 100 host www.hinet.net 168.95.192.1 | grep REFUSED
gslin@GSLIN-HOME1404 [~] [01:13/W5] repeat 100 host www.hinet.net 8.8.8.8 | grep REFUSED     
gslin@GSLIN-HOME1404 [~] [01:14/W5]

所以 workaround 就呼之欲出了:把 DNS resolver 換成 8.8.8.8

[ 與 [[ 的差異 (Left square bracket)

在寫 shell script 時,[[[ 到底用起來有什麼不一樣?查出來記錄起來:「What is the difference between double and single square brackets in bash?」。

第一高分的答案 (由 Kyle Brandt 回答) 與第二高分的答案 (由 abhiomkar 回答) 都值得看,尤其是 abhiomkar 寫的範例很清楚:

  $ [ a < b ]
 -bash: b: No such file or directory
  $ [[ a < b ]]

對判斷式子裡面的解讀是不一樣的。