iT邦幫忙

0

不同預設閘道(Getway)時,檔案無法以php上傳

  • 分享至 

  • xImage

昨天發現了一個問題,一直覺得很困惑,
希望如果有對網路架構較熟的大大們可以予以指教,感謝~~

目前有的對外getway有192.168.1.1與192.168.1.2兩部router,
當主機使用.1.1,client也使用.1.1為getway時,以php上傳檔案均正常無誤。
但是當主機使用.1.1,client使用.1.2為getway時,以php上檔案時就會失敗。

原先不知道是getway的問題,一直以為是其它如檔案權限、apache設定或php.ini設定的問題,
不過,我想既然同getway可以上應該不是設定或code的問題了。

為什麼不同getway時就會出現這樣的問題呢??

mumu5284 iT邦新手 4 級 ‧ 2008-07-03 08:14:26 檢舉
真的蠻奇怪的~同網段卻設了2個gateway?怎麼會這樣設呢!
tibandyli iT邦新手 2 級 ‧ 2008-08-22 13:39:01 檢舉
因為不同的gateway可以供不同的設備對外服務使用
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
32
brianc
iT邦研究生 1 級 ‧ 2008-07-02 15:44:44
最佳解答

先檢查一下client用192.168.1.2時是否可以ping的到192.168.1.1那台主機?

tibandyli iT邦新手 2 級 ‧ 2008-07-03 09:49:01 檢舉

感謝回覆~~
結果是可以,而且web服務也正常...這樣會造成什麼問題嗎?

28
kaiin323
iT邦高手 1 級 ‧ 2008-07-02 17:45:28

實在覺得很困惑,
既然client跟主機在同一網段那何必需要gateway呢?

28
zeonfrankcha
iT邦新手 4 級 ‧ 2008-07-02 18:10:16

可以再把使用的Gateway設備是什麼也PO上來嗎
這樣才能把問題再釐清

tibandyli iT邦新手 2 級 ‧ 2008-07-03 09:50:44 檢舉

感謝回覆,是load balance設備
目前使用居易Vigor 2900系列產品

28
leetungchi
iT邦新手 5 級 ‧ 2008-07-02 18:10:47

從192.168.1.2連線進來時,主機也必須從192.168.1.2做回應.
所以你要設定 routing table

30
gkkangel
iT邦好手 1 級 ‧ 2008-07-02 18:25:55

同網段設兩部gateway..?
這蠻不合理的.
除非一臺是192.168.1.1 另外一部192.168.2.1
這樣的話就要設routing table.

tibandyli iT邦新手 2 級 ‧ 2008-07-03 09:47:35 檢舉

通常都會是使用.1.1為所有設備的getway,不過因為router可使用的ip只有一個,如果有一個以上的使用同樣服務的主機(如web)就使用以外的getway使他們都可以正常對外提供服務。
不過,或許也是這樣造成了內部網路架構的問題....就是底下laiout兄所提的loop問題。

還是說...loop問題也可以由routeing table獲得改善嗎?

laiout iT邦新手 1 級 ‧ 2008-07-04 13:31:03 檢舉

給tibandyli:
如果只是為了兩個或兩個以上的web站台,可以只用同一個ip即可,例如用IIS可"主機標頭"設定不同的網址對應到同一個IP位址即可。

tibandyli iT邦新手 2 級 ‧ 2008-07-08 16:45:42 檢舉

因為考慮到機器效能.....
而且平台不同,一個是RH9+PHP4+MYSQL3一個是CENTOS+PHP5+MYSQL5....
雖然說系統轉移也是勢在必行…但…這離題了~~ 有磁到問題再回來討論囉@@"

22
cheng
iT邦好手 1 級 ‧ 2008-07-03 08:17:15

兩個getway阿
那你應該是用分流設備做指向囉
我之前也有遇到這樣子狀況
我這邊發現的原因為不會的getway會有不同出口
基本上一定會預設網路是從1.1getway出口
但是你現在設定getway為1.2時,你封包出從1.2出去
SERVER出口為1.2但封包入口卻從1.1回來
就會發現封包無回應或是連線失敗
我想你可以從你的分流設備中看到有ACT但是卻無回應
這部分應該為線路預設及DOMAIN NAME設定關係吧.....以上給你參考看看

tibandyli iT邦新手 2 級 ‧ 2008-07-03 09:41:36 檢舉

嗯....的確是如此,因為使用分流護備,且因為nat轉埠的關係
我想理論上既然網頁服務可正常傳送(client->.1.1->isp->.1.2->server->.1.2->isp->.1.1),透過網頁語言的php應該也可正常提供服務才是...
而php檔案上傳失敗的結果是還有回應的= ="
所以一開始怎麼也沒想到會是getway的關係....於是....此題仍無解....

20
laiout
iT邦新手 1 級 ‧ 2008-07-03 09:17:08

同一個網段有兩部router,是連往不同的地方(網段)嗎?如果是連往不同地方應該以其中一個為default gateway(如192.168.1.1),再於此router上設定routing table要往另一個網段走另一部router(如192.168.1.2);如果兩部router是通往同一個網段,只是做分流時,建議改用load balance設備,避免形成loop。

tibandyli iT邦新手 2 級 ‧ 2008-07-03 09:43:46 檢舉

謝謝提醒,我也在想會不會是因為內網已經形成loop了…這個要再找時間試試看…
不過有兩部router的原因主要是因為對外連線數量與實體IP使用的關係...

24
stoneck
iT邦新手 2 級 ‧ 2008-07-03 14:18:03

Gateway 的用途, 就像是一個城門, 如同樓上 kaiin323 所述.
可以想像如同要到隔壁鄰居家去串門子, 那是不必走遠路出城門再轉回來的.

你的主機和 Client 都在相同網段 >> 192.168.1.XXX
所以探討 Gateway 沒意義.

請檢查一下:

  1. 你的 PHP 上傳 Code, 有可能是把資料送出 Gateway, 再從 Gateway 回到主機.
    正確應該是直接送往主機網卡的 IP,
  2. 如果這段 PHP Code , 你的目的是寫給 Gateway 外部的其他人使用,
    那這段 Code 指向的主機IP , 就應該是**[主機網路卡所指向的 Gateway 之
    外部 IP]**,而且這個 IP 一定不會是 192.168.1.XXX,
    如此, 上傳資料的 TCP/IP 封包才會真正經過 Gateway,
    這個狀況, 假設你在Gateway 內部測試PHP Code,
    那就有可能造成你看到的怪現象吧我在猜.
  3. 順便看一下主機與 Client 的 Routing Table, 有沒有怪怪的地方.
tibandyli iT邦新手 2 級 ‧ 2008-07-09 09:57:48 檢舉

主機和client都在同網段沒錯,
不過走的Gateway是不相同,出城門之後的身份也就不同了。
如果是直接指向ip,我想應該就不會有問題,
可是因為指向的是domain,client勢必要先向dns查詢這部主機的ip為何,此時便已經出城門了
dns回覆也會是主機的外部ip,所以…資料應該是從client送到.1.2經internet到.1.1再nat轉向到主機。
不過我想應該是routing table有問題的機會比較高....

tibandyli iT邦新手 2 級 ‧ 2008-07-09 09:59:15 檢舉

剛剛說錯了...是client到1.1經internet到1.2再nat到主機

stoneck iT邦新手 2 級 ‧ 2008-07-10 17:22:26 檢舉

比較好的做法, 應該是 DNS 分內外兩組,
就如同專供內部使用的 AD Server 它所雍有的 DNS 與
外部專用的 DNS,

內部DNS所解析出來 Server 的 IP ,
應該是屬於Local 192.168.x.x 的範圍,
而外部 DNS 則是用於解析公司 Domain 正確的外部實體 IP 位置,
兩者作用不同. Security 的控管上也明顯不同.

所以, Client 端的 DNS 應該指向內部專用 DNS, 這樣在 Intranet
的運用上也才會是正確的, 封包流經的途徑不會有問題.

不建議把所有的Client 都指向外部 DNS, 如此前述動作所有的封包就都會丟出Gateway, 再從外部的實體IP 進入 Server,
設的不好, 那 PHP 解析出的內外 IP 混淆的機率很高,
除非公司簡略到內部無 Inranet 運用, 一切資源都在外部, 不需要內部 DNS.

14
goodnight
iT邦研究生 2 級 ‧ 2008-07-03 23:53:08

因為當你使用 192.168.1.2 時, 他的網段是 192.168.1.3~192.168.1.254, 所以你的192.168.1.1 自然就不在 list 裡, 所以你就失敗了, 你若用 192.168.1.2當getway 時, 主機請設 192.168.1.3 自然就成功了

kaiin323 iT邦高手 1 級 ‧ 2008-07-09 18:18:11 檢舉

按照這位大大您的說法...
那請問一下192.168.1.1的網段是啥??@@

我要發表回答

立即登入回答