Linux源進源出與iproute2

  最近在給客戶做解決方案的時候遇到這麼一個場景也給自己埋了個坑這裏記錄一下。

具體需求如下

  1. 現在客戶國內服務器和國外的防火牆已經內網打通

  2. 客戶在國內有臺WEB服務器要通過國外的一臺防火牆訪問外網

  3. 需要從國外防火牆上能夠回源到國內的WEB服務器即能夠通過防火牆訪問到WEB服務的80端口

  4. 國內WEB服務器有自己的公網地址需要能夠進行管理

 因爲一開始客戶沒有提出第3條要回源的需求當時給客戶設計的方案是

  1. 把客戶國內機器的默認路由扔給國外的防火牆

  2. 國外防火牆上做SNAT把來自內網網段的流量映射出去。

3. 在國內機器上添加靜態路由把客戶的管理網段扔給國內的網關。

大致拓撲圖如下

wKiom1lB7ZuTBTltAACc-cCSLSk613.png-wh_50

  這裏有一點因爲無法確定客戶國內的管理地址網段所以在國內WEB服務器C上刷了一個全國路由表的靜態路由默認路由優先級低於靜態路由所以國內用戶訪問C的時候還是通過國內的網關出TCP連接能夠正常建立。

  然而這時候客戶又提出需要從國外服務器上進行回源測試一下回源的質量也就是要通過防火牆訪問到WEB服務的80端口。我心想這個簡單呀在防火牆上做一個DNAT映射把訪問防火牆80端口的映射給WEB服務器的80端口上。於是說幹就幹.....做完配置之後進行測試瞬間懵逼了我在辦公網國內地址測試防火牆的80端口死活不通一直報錯"TIMEOUT"直接測試國內服務器的外網地址的80端口和內網地址的80端口是OK的也就是說web服務訪問正常但爲什麼我訪問防火牆的80端口不行呢

  於是進行各種測試折騰半天發現一個現象能從國外正常訪問防火牆80端口而國內不可以。抓包的時候發現WEB服務器已經收到了我的http請求而且已經進行了回包但是服務器的回包並沒有和我正常建立連接。看現象應該是斷在了TCP的第二次和第三次握手中間。

wKioL1lB8s_yQ1HPAAEa0P5l1jQ276.png-wh_50

  這時候才恍然大悟爲什麼TCP連接沒有建立呢因爲我是國內地址發起的防火牆80訪問通過防火牆請求到後端WEB服務器的時候因爲服務器上有國內的路由回包的時候是從國內網關出的而不是從防火牆出了導致回包的源地址變成了國內網關地址所以TCP連接建立不起來了。通俗解釋就是A發出請求訪問B結果D給做出了迴應A認爲不是他想要的所以不認了TCP連接建立不起來。圖解如下

wKiom1lB9OWBGurWAADt2ql7BbA493.png-wh_50

  爲了解決這個問題總結一句話就是需要解決源進源出的問題從哪個口進來的流量讓他從哪個口出去。因爲WEB服務器C相當於有兩個網關出口就需要在C上控制流量的走向。於是這裏想到了可以通過iproute2或iptables來實現我這裏其實本質上還是路由的控制所以用iproute2來實現顯得更爲合理而且性能效果上會更好。

  簡單介紹下iproute2:

iproute2linux下管理控制TCP/IP網絡和流量控制的新一代工具包旨在替代老派的工具鏈net-tools即大家比較熟悉的ifconfigarproutenetstat等命令。兩套工具本質的區別,是net-tools是通過procfs(/proc)ioctl系統調用去訪問和改變內核網絡配置而iproute2則通過netlink套接字接口與內核通訊。

  我這裏的解決辦法如下:

假設我的國內WEB服務器的外網地址是192.168.1.254/30GW:192.168.1.253。

內網地址192.168.10.2 Default GW192.168.10.1

  1. 保持默認路由10.1不變還是通過國外防火牆出網。

  2. 在WEB服務器上新建路由表"china",添加策略如下

# echo "1 china" >> cat /etc/iproute2/rt_tables
# ip route add 192.168.1.252/30 dev em1 src 192.168.1.254 table china
# ip route add default via 192.168.1.253 dev em1 table china
# ip rule add from 192.168.1.254 table china

3. 刪除之前添加的全國路由表。

4. 可以把路由策略寫進網卡或者rc.local配置文件裏保證開機後依然生效。

最後:附一個iproute2的51cto上翻譯的參考鏈接地址:

http://os.51cto.com/art/201409/450886.htm

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章