Song <Song.bbs@bbs.cynix.com.tw> wrote in message
news:3c2bAa$6Dl@bbs.cynix.com.tw...
> ※ 引述《Song (Song)》之銘言:
> > ※ 引述《netmanforever@yahoo.com (網中人)》之銘言:
> > > Song <Song.bbs@bbs.cynix.com.tw> wrote in message
> > > 雖然您切割了﹐但即使用 26bit 切割來看﹐他們仍是同一個 subnet 內。
> > > 如果換了我來測試﹐會將:
> > > 2.14 改為 2.65 (mask 255.255.255.192)
> > > 2.19 改為 2.129 (mask 255.255.255.224)
> > > 2.21 改為 2.193 (mask 255.255.255.240)
> > > 這樣的測試就會得到不同結果了。別忘了將 default gw 取消後重新開機看看﹖
> >     小弟就是要利用這個特性,讓 ADSL Router 不知道其實我們內部已經將
> >     子網切割,還是將 DMZ 的封包向內傳送,來達到不用更改 ADSL Router
> >     routing table 而可以通行的目的。
> >     所以,勢必要讓 ADSL Router 與 Linux Router 處於切割後的同一子網
> >     之中。以 Netman 兄之方式別說是 Win95 ,連您說有支援 VLSM 的
> >     Win2k 也莫可奈何 :) 小弟試著將 Win2k 改為
> >     194.168.2.129/255.255.255.128 根本無法與 Cisco Router 取得連繫。
>
>     小弟想到另一個問題,導致這個假設根本無法成立 :<

非常抱歉﹐在回了上一封才看到這個。弟已經實作出來推翻了這個假設。

>
>     雖然 ADSL Router 可以聯繫到切割後位於同一子網的 Linux Router,
>     但是給 DMZ 的封包 Linux Router 應該是不會主動處理。
>
>     小弟這裡找不到有關處理不同子網時,封包標頭改寫的資料。但是,想像中

除非用 NAT ﹐封包並不改寫。路由依據指看目的地地址﹐然後和自己的路由表對比﹐
如果發現﹐則向下一站遞送。如果路由表沒有這個目的地的資訊﹐則和自己的 net_ID
對比﹐如果在同一個 subnet﹐則看 arp table (或用 arp 協定更新  table)﹐然後直
接丟給對方的 MAC 地址去(這時候已經交由 data-link 層級來處理了﹐其後的過程可
以參考 IEEE802.x 的標準。) 假如路由表沒有﹐且 net_ID 比對也不成立﹐則送給預
設 gateway。然後 GW 還是會重複這個動作﹐直到最後到達同一個子網的 router﹐再
轉由 arp 找 MAC ﹐完成封包遞送過程。

>     處理不同子網時,封包標頭應該要將 Gateway IP 列為 路由器記錄( Router
>     Recording ) 或是 目的端位址(Destination address) ?? 或是透過 ICMP
>     的聯繫居中協調 ??

嗯﹐如果您說的封包標頭是指 data-link 層級的話﹐它會隨著每一跳站(hop)不同而不
同﹐但 network 層級的標頭應該不變吧﹖
弟尚不清楚 ICMP 是否可以更新路由資訊﹐查一查 ICMP 的各個選項數字或許可以知
道。另﹐再研究一下 arp 協定的運作模式﹐也會有助於對此問題的理解。

>
>     無論其實際運作之方式為何,ADSL Router 既然認為 DMZ 位於同一子網中,
>     封包標頭改寫的動作就不會發生,所以 Linux Router 就不會處理其封包。

弟認為這與標頭改寫無關﹐而事實上﹐ADSL 傳給非 linux router IP 的封包﹐更本就
不會到達 linux router 那裡﹐除非您修改了 ADSL 的路由表。還記得這是我們討論的
開端哦~~~  :)

>
>     唉!推翻自己的假設,又浪費了您的時間,真是抱歉...

Song 兄何必客氣﹐這本來就是一個討論之所嘛。況且道理越辯越明﹐弟也常感謝您的
指教﹗

如果尚有不足處﹐還望指正。謝謝﹗