1. 程式人生 > >路由錯誤導致無法訪問公網部分IP

路由錯誤導致無法訪問公網部分IP

telnet tin 成功 用戶 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

異常情況下是:
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.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 這個網絡,並且和我們服務器在一個網絡內,因此采用廣播進行訪問,而沒有通過網關去訪問,因此出現了網絡無法訪問的情況。

路由錯誤導致無法訪問公網部分IP