小州 <kenduest.bbs@bbs.cynix.com.tw> wrote in message
news:3cG1US$5W6@bbs.cynix.com.tw...
> ※ 引述《seal.bbs@bbs.ntu.edu.tw (PSYCHO)》之銘言:
> > ==> cotton.bbs@openbazaar.net (cotton) 提到:
> > > eth1 Link encap:Ethernet  HWaddr 00:80:C8:E1:40:95
> > >      inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
> > > 以下這一張卡沒法子跑??
> > > eth2 Link encap:Ethernet  HWaddr 00:80:C8:3C:78:CF
> > >      inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0
> > > 目前可以用eth1(對內)和eth0(對外)
> > > 但是eth2就沒法度?
> > > 還需要什麼資訊或設定嗎?
> > > 麻煩前輩們幫忙診斷診斷....感激不盡!
> >  很簡單...因為兩張卡不能用同一個網域的ip ...
>
>   有這種規定嗎?分別是 192.168.1.1 與 192.168.1.2 並沒有相衝突的地方。

弟以為這是原理而非規定的問題。

因為當一個封包被接收進來之後(來自 loopback device 的也一樣)﹐首先要做的是檢
查 route table 進行和目的地地址的比對。不過 route table 的特性之一是 first
match 的﹐也就是當找到第一筆符合條件的紀錄﹐就不再往下找了。換句話說﹐如果兩
張卡都在同一個 subnet 之內﹐那就會有兩筆關於同一個 subnet 的紀錄存在﹐這時候
要看第一個句子指定的是哪一個界面了。如果不是手工去修改﹐通常會是第一張﹐所以
他會以為第二張不工作了。

有解決的方法嗎﹖有的﹐那要將所有和 eth2 連接的 host (netmask 為 32biy) 用靜
態方式寫進路由表去﹐強迫它們的路由經 eth2 傳送。不過﹐這樣做顯然是不明智的。
而且在以往的(個人)測試中﹐做為 router 本身的 linux 是可以順利和靜態路由所指
的 hosts 溝通﹐但分別在 router 兩端﹐但又在同一個 subnet 之下的機器﹐恐怕就
沒那麼順利了。除非也是用 static 的方式寫死在每一台主機上﹐強迫它們使用 linux
router 當 gateway。否則﹐當它們檢查到目的端地址和它們的界面在同一個 subnet
的話﹐是不會將封包傳個 router﹐而嘗試交由 arp 進行廣播﹐進而直接的傳送。

(相類似的議題﹐我記得曾經和 song 兄討論過了﹐有空可以參考看看。)

>
>   不過這裡要問的是,eth2 網路卡用途為何呢?

對﹗這個問題恐怕是設計者才知道的。不過﹐我猜他是用兩張卡分別連接不同的網段
(或許在物理上就已經分開的)。我不敢懷疑他對 IP 的理解程度﹐但很可能他輕率的將
同一個 net_ID 下的 hosts 拆開﹐分別配給這兩個網段使用 吧。

>
> >  如果你想要在同一個網域用兩個ip ,請alias 在同一張卡上就好了,
>
>   有點奇怪的說法... 基本上,可以使用兩張網路卡達成,或者是使用
>   ip alias 讓單一張網路卡有 one or above 以上的 ip 介面。

alias 是別名﹐歸根結底是要依靠真實界面的存在而存在﹐不過使用 alias 有一點可
以肯定﹐真實界面和 alias 界面的物理連接是一樣的。既然這樣﹐就算它們同一個
subnet﹐而且就當 alias 也可以獨立傳送封包好了﹐這時候﹐封包經過哪一張界面都
可以到達目的地。假如不信﹐請原來的提問者將 eth1 和 eth2 都接到同一個 hub
 去﹐這時候﹐原本連接 eth2 的機器﹐也應該被連接到同一個物理網路中去吧﹖再嘗
試一下和那些原本和 eth2 連接的機器進行溝通﹐應該就可以了。不過﹐假如抓一下封
包看看它們的 MAC 地址﹐相信封包都是經過 eth1 出去的﹐更本就輪不到 eth2 ﹗

其實﹐稍有經驗的網路人員﹐都不會讓兩張物理界面使用相同的 net_ID 的。這不能算
是規定﹐或許應該是規則吧﹖

純屬個人意見﹐有錯懇請指正。