之前朋友買了一台 Vultr 的主機,據說是蠻穩定的,而且重點是日本的機房 ping 大約只有 50ms 左右,一切聽起來都比小蛙用的遠在 LA,ping 隨便都 150ms 起跳來的強,但是價位也相對偏高,今天遇到了一個奇怪的狀況,這邊記錄一下解決方法。

今天接到朋友的求助,php curl 貌似有問題,朋友自己也不確定問題在哪裡,只知道 API 放在遠振一切正常,但是移到 vultr 就有問題,大約幾十個 request 會遇到一個等待到 timeout 的情況,當時小蛙人在外面,大概聽了問題,還不清楚確切的原因,因為 php curl 的對象是自己 … 是自己還會等到 timeout?

一開始看 code,釐清所有的功能之後,感覺上沒有什麼問題,於是想說在 command line 直接下 curl 看看狀況,雖然不一定會跟 php 下 curl 完全一樣的情況,但至少試試看不吃虧 ~ 下了 curl -v https://xxxxxxxxx 後,詭異的事情來了,竟然等了很久都沒反應,甚至有時候還會出現 timeout 或是名稱無法解析的問題,連 ping 自己的 hostname 都 ping 不到,這是什麼好笑的狀況 …

後來小蛙在 /etc/hosts 上加入了 domain 對應之後,curl 自己的 API 至少沒問題了,看起來可以大聲說打完收工了。不久之後,小蛙又接到朋友電話,說有某個 domain curl 等到 timeout,該 domain 是外部的,有了上面的經驗後,小蛙第一次時間就 ping 該 domain,喔買尬 … 名稱無法解析,那試試看 ping wazai.net,ㄜ ~ 名稱無法解析,看來是 DNS 的問題了!

於是上網查了一下 ubuntu 的 DNS 設定編輯 ,使用 Google 的 8.8.8.8 跟 8.8.4.4 就好了,換上之後一切正常。

vim /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4

小蛙在查資料的過程中看到有些人問,每次重開機之後這個設定檔都會恢復預設值該怎麼辦,其他人提出的解法感覺很複雜,小蛙也懶得測試,於是跟朋友要了 vultr 的帳密,也許可以直接透過網站直接設定就好,切換到 Network 設定部份,果然找到設定的方法:

小蛙設定上去後 reboot,花惹發 … 又跑回原本的設定 108.61.10.10,嗯 ~ 只好使出比較下三濫的手法了,修改 .bashrc,可能有更正統或正規的作法,但 … 趕時間,又剛好想到這個方法,就 ~ 先這樣子吧!常常聽到 sed 跟 awk 是神兵級的,但小蛙一直不知道怎麼用,通常都是想到什麼功能好像有,去查一下正確用法來套,於是找到 sed 搜尋並刪除整行資料 這篇,設定完重開機,就可以看到效果了!

vim .bashrc
sed -i '/108.61.10.10/d' /etc/resolv.conf

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *