2012-11-23 38 views
1

我有一個關於具有兩個網卡的Linux機器上的流量路由的問題。其中一個網卡的是在我們的DMZ網(10.1.9.0/24),另一種是在我們本地網(10.1.0.0./21):apache2 web代理服務器上的多個網卡

default via `10.1.4.1` dev eth0 
default via `10.1.9.1` dev eth1 metric 100 
`10.1.0.0/21` dev eth0 proto kernel scope link src `10.1.0.132` 
`10.1.9.0/24` dev eth1 proto kernel scope link src `10.1.9.25` 

我們使用的服務器作爲Web代理。 dmz接口(eth1)從我們的一個外部互聯網地址獲取流量。因此,在我們的主防火牆/路由器上存在NAT規則,將請求轉換爲10.1.9.25。這工作正常,請求被接受和迴應。 在這種情況下,連接在eth1上建立,響應也在eth1上。

問題: 當我們想從我們的本地網絡訪問網絡服務器時,防火牆將外部IP轉換爲DMZ ip。可以從本地網絡內建立DMZ服務器的連接,但不能以其他方式建立連接。在這種情況下,連接從本地網絡實例化爲DMZ,但Web服務器無法響應。

sudo tcpdump -i eth1 port 443 and src host 10.1.1.154 
10:09:35.626450 IP 10.1.1.154.48870 > 10.1.9.25.https: Flags [S], seq 2491947547, win 14600, options [mss 1460,sackOK,TS val 2066949 ecr 0,nop,wscale 4], length 0 
10:09:35.825619 IP 10.1.1.154.48871 > 10.1.9.25.https: Flags [S], seq 1827990665, win 14600, options [mss 1460,sackOK,TS val 2067011 ecr 0,nop,wscale 4], length 0 
10:09:36.575239 IP 10.1.1.154.48870 > 10.1.9.25.https: Flags [S], seq 2491947547, win 14600, options [mss 1460,sackOK,TS val 2067199 ecr 0,nop,wscale 4], length 0 
10:09:36.823264 IP 10.1.1.154.48871 > 10.1.9.25.https: Flags [S], seq 1827990665, win 14600, options [mss 1460,sackOK,TS val 2067261 ecr 0,nop,wscale 4], length 0 
10:09:38.579373 IP 10.1.1.154.48870 > 10.1.9.25.https: Flags [S], seq 2491947547, win 14600, options [mss 1460,sackOK,TS val 2067700 ecr 0,nop,wscale 4], length 0 
10:09:38.827290 IP 10.1.1.154.48871 > 10.1.9.25.https: Flags [S], seq 1827990665, win 14600, options [mss 1460,sackOK,TS val 2067762 ecr 0,nop,wscale 4], length 0 

SSH是一樣的,接口接收連接,但沒有響應。我不確定問題出在哪裏(在服務器或防火牆/路由器設置上)。我們在DMZ中的其他服務器工作正常,系統管理員在這裏說網絡配置是相同的。

任何人都可以幫助我診斷這個問題嗎?

回答

0

你的問題是在這裏

default via `10.1.4.1` dev eth0 
default via `10.1.9.1` dev eth1 metric 100 
`10.1.0.0/21` dev eth0 proto kernel scope link src `10.1.0.132` 
`10.1.9.0/24` dev eth1 proto kernel scope link src `10.1.9.25` 

IP不能在同一個路由表中使用多個默認路由......想想看,如果你從ping通的外殼,它應該使用哪個界面4.2.2.2?

Linux Advanced Routing and Traffic Control Howto有一些技巧,你可以用它來實現多個路由表,但是這常常使事情複雜得多,你會希望保持。

最簡單的解決方案是選擇一個接口,您可以將所有內部公司網絡聚合成一個超網,併爲其分配一個路由...例如,此路由涵蓋了所有不直接連接到該網絡的10.xxx網絡Linux機器......

route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.1.0.132 

然後從eth0

+0

感謝默認爲您輸入邁克,我會嘗試這個星期一,我不是跟物理服務器,你知道如何與路由搞亂可以完全如果你犯了一個錯誤,拿走主機的訪問權限:-)不會忘記信用你! –

+0

嗨邁克。我試過你的解決方案,但它似乎沒有任何區別。我的新路由表:http://pastebin.com/raw.php?i = fxk8eGg4 –