新聞中心
最近在給客戶做解決方案的時候遇到這么一個場景也給自己埋了個坑這里記錄一下。
具體需求如下
現(xiàn)在客戶國內(nèi)服務(wù)器和國外的防火墻已經(jīng)內(nèi)網(wǎng)打通
客戶在國內(nèi)有臺WEB服務(wù)器要通過國外的一臺防火墻訪問外網(wǎng)
需要從國外防火墻上能夠回源到國內(nèi)的WEB服務(wù)器即能夠通過防火墻訪問到WEB服務(wù)的80端口
國內(nèi)WEB服務(wù)器有自己的公網(wǎng)地址需要能夠進(jìn)行管理
因?yàn)橐婚_始客戶沒有提出第3條要回源的需求當(dāng)時給客戶設(shè)計(jì)的方案是
把客戶國內(nèi)機(jī)器的默認(rèn)路由扔給國外的防火墻
國外防火墻上做SNAT把來自內(nèi)網(wǎng)網(wǎng)段的流量映射出去。
3. 在國內(nèi)機(jī)器上添加靜態(tài)路由把客戶的管理網(wǎng)段扔給國內(nèi)的網(wǎng)關(guān)。
大致拓?fù)鋱D如下
這里有一點(diǎn)因?yàn)闊o法確定客戶國內(nèi)的管理地址網(wǎng)段所以在國內(nèi)WEB服務(wù)器C上刷了一個全國路由表的靜態(tài)路由默認(rèn)路由優(yōu)先級低于靜態(tài)路由所以國內(nèi)用戶訪問C的時候還是通過國內(nèi)的網(wǎng)關(guān)出TCP連接能夠正常建立。
然而這時候客戶又提出需要從國外服務(wù)器上進(jìn)行回源測試一下回源的質(zhì)量也就是要通過防火墻訪問到WEB服務(wù)的80端口。我心想這個簡單呀在防火墻上做一個DNAT映射把訪問防火墻80端口的映射給WEB服務(wù)器的80端口上。于是說干就干.....做完配置之后進(jìn)行測試瞬間懵逼了我在辦公網(wǎng)國內(nèi)地址測試防火墻的80端口死活不通一直報錯"TIMEOUT"直接測試國內(nèi)服務(wù)器的外網(wǎng)地址的80端口和內(nèi)網(wǎng)地址的80端口是OK的也就是說web服務(wù)訪問正常但為什么我訪問防火墻的80端口不行呢
于是進(jìn)行各種測試折騰半天發(fā)現(xiàn)一個現(xiàn)象能從國外正常訪問防火墻80端口而國內(nèi)不可以。抓包的時候發(fā)現(xiàn)WEB服務(wù)器已經(jīng)收到了我的http請求而且已經(jīng)進(jìn)行了回包但是服務(wù)器的回包并沒有和我正常建立連接??船F(xiàn)象應(yīng)該是斷在了TCP的第二次和第三次握手中間。
這時候才恍然大悟?yàn)槭裁碩CP連接沒有建立呢因?yàn)槲沂菄鴥?nèi)地址發(fā)起的防火墻80訪問通過防火墻請求到后端WEB服務(wù)器的時候因?yàn)榉?wù)器上有國內(nèi)的路由回包的時候是從國內(nèi)網(wǎng)關(guān)出的而不是從防火墻出了導(dǎo)致回包的源地址變成了國內(nèi)網(wǎng)關(guān)地址所以TCP連接建立不起來了。通俗解釋就是A發(fā)出請求訪問B結(jié)果D給做出了回應(yīng)A認(rèn)為不是他想要的所以不認(rèn)了TCP連接建立不起來。圖解如下
為了解決這個問題總結(jié)一句話就是需要解決源進(jìn)源出的問題從哪個口進(jìn)來的流量讓他從哪個口出去。因?yàn)閃EB服務(wù)器C相當(dāng)于有兩個網(wǎng)關(guān)出口就需要在C上控制流量的走向。于是這里想到了可以通過iproute2或iptables來實(shí)現(xiàn)我這里其實(shí)本質(zhì)上還是路由的控制所以用iproute2來實(shí)現(xiàn)顯得更為合理而且性能效果上會更好。
簡單介紹下iproute2:
iproute2是linux下管理控制TCP/IP網(wǎng)絡(luò)和流量控制的新一代工具包旨在替代老派的工具鏈net-tools即大家比較熟悉的ifconfigarproutenetstat等命令。兩套工具本質(zhì)的區(qū)別,是net-tools是通過procfs(/proc)和ioctl系統(tǒng)調(diào)用去訪問和改變內(nèi)核網(wǎng)絡(luò)配置而iproute2則通過netlink套接字接口與內(nèi)核通訊。
我這里的解決辦法如下:
假設(shè)我的國內(nèi)WEB服務(wù)器的外網(wǎng)地址是192.168.1.254/30GW:192.168.1.253。
內(nèi)網(wǎng)地址192.168.10.2 Default GW192.168.10.1
保持默認(rèn)路由10.1不變還是通過國外防火墻出網(wǎng)。
在WEB服務(wù)器上新建路由表"china",添加策略如下
3. 刪除之前添加的全國路由表。
4. 可以把路由策略寫進(jìn)網(wǎng)卡或者rc.local配置文件里保證開機(jī)后依然生效。
最后:附一個iproute2的51cto上翻譯的參考鏈接地址:
http://os.51cto.com/art/201409/450886.htm
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
新聞名稱:Linux源進(jìn)源出與iproute2-創(chuàng)新互聯(lián)
標(biāo)題URL:http://fisionsoft.com.cn/article/decjec.html