天天看點

路由錯誤導緻無法通路公網部分IP

一,問題描述

公司一個服務正常更新,最後啟動失敗,日志提示mybatis連接配接錯誤,重新釋出後也是同樣錯誤。

二,排查過程

在确定資料庫正常後,請開發一起排查。開發說這個是個連結庫的問題,之前遇到過,多試幾次就可,然後重新開機3次後,還是不行;然後開發再次看日志,說這個服務重新開機過程中要通路一個我們存放在七牛的檔案,并加載到帶記憶體中,以便修複mybatis錯誤,然後給了一個位址,我在這個機器上wget了下,确認無法下載下傳這個檔案。

測試了其中兩台伺服器都無法通路這個檔案;伺服器通路ping telnet其他公網伺服器都正常;就是七牛這個位址異常;由于之前修改dns,是以把dns配置換預設配置,結果還是無法通路;但是dns可以正常解析,隻是telnet 和ping 無法成功。

三,第三方介入

把問題現象上報給isp和七牛;isp回報可以在我們伺服器網關(伺服器配置公網ip)正常通路到這個位址;七牛回報說資料請求傳回已經到達isp内網了。

四,再次排查dns

然後isp建議修改dns 為 114.114.114.114 ,修改後伺服器通路正常了!!!但是我們我們内部服務是使用的内部dns進行域名解析的,是以修改這個位址不行(配置3個dns,第三個dns為 114這個也出現解析成功,但是無法通路的問)。

難道是我們内部dns問題? 不應該啊,之前測試ping的時候,确認可以正常解析,隻是ping不同,應該是網絡問題;登入到配置同樣dns的其他伺服器,發現可以正常通路,确認dns伺服器是ok的。

五,問題确認

該服務部署了3台伺服器,前2台都異常,于是看看剩下一台是不是也有異常,結果剩下1台伺服器是正常的!!! 再一次說明dns是正常的。于是比較三台伺服器網絡配置:1,網關一樣;2,網卡配置一樣。但是route -n 發現路由不一樣。

正常情況下是:

destination gateway genmask flags metric ref use iface

0.0.0.0 72.111.111.177 0.0.0.0 ug 100 0 0 em2

72.111.111.176 0.0.0.0 255.255.255.240 u 0 0 0 em2

異常情況下是:

72.0.0.0 0.0.0.0 255.255.255.240 u 0 0 0 em2

同時dns伺服器解析出來的七牛的域名都是 72 開頭的。确認是路由配置錯誤(72.111.111.176 為網絡号),于是手動删除錯誤路由,添加正确路由,服務通路正常。

五,原因分析

由于七牛根據使用者來源,傳回一個裡使用者最近的一個位址給使用者,是以傳回了一個和我們伺服器在一個大網段 72開頭的 72.xxx.xxx.xxx的位址。由于我們路由配置問,系統認為 72.xxx.xxx.xxx 屬于 72.0.0.0 這個網絡,并且和我們伺服器在一個網絡内,是以采用廣播進行通路,而沒有通過網關去通路,是以出現了網絡無法通路的情況。

繼續閱讀