Joestar.bbs@cis.nctu.edu.tw> wrote in message
news:3clLC5$G5J@bbs.cis.nctu.edu.tw...
> ==> 在 sch@cis_nctu (無) 的文章中提到:
> > ==> 在 "網中人" <netmanforever@yahoo.com> 的文章中提到:
> > > 無 <sch.bbs@cis.nctu.edu.tw> wrote in message
> > > news:3clE3c$GTL@bbs.cis.nctu.edu.tw...
> > > 要看是否經過 NAT 啦。
> > > 照弟理解﹐Song 兄應該是想用 routing 的方法來做。這樣的話﹐封包來源地址
在傳進
> > > 對外那個 router 之前不被改掉就行﹐也就可以回來了。
> > >         +--------+      eth0+-----+eth1     +----
> > >     ----+ Router +----------+ NAT +---------+ DMZ
> > >      S0 +--------+ E0       +--+--+         +----
> > >                                |eth2
> > >                         +------+-------+
> > >                         | Private Area |
> > Private Area 這一區沒經過 translation 怎麼出去呢.
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> 只要封包的source 跟 destination 的ip 是public IP, 所謂的 routable ip.
> 這樣Internet 上的節點(routers) 就可以根據自身的routing table, forward
> 該packet到 next hop. 如果在packet的路程中有一段是由 private ip 組成的.
> so what!! 只要附近的router設好 routing table. 就可以了. 給個實際的例子
> 這是從我公司(hinet adsl 用戶)到交大資科 用traceroute 的紀錄
> [/home/dominic]# traceroute -n 140.113.23.3
> traceroute to 140.113.23.3 (140.113.23.3), 30 hops max, 40 byte packets
>  1  210.241.239.249  1.033 ms  0.895 ms  0.887 ms  (小烏龜)
>  2  10.241.239.254  69.821 ms  66.750 ms  65.921 ms
>  3  168.95.225.190  59.668 ms  59.084 ms  59.740 ms
>  4  192.192.0.253  60.982 ms  58.323 ms  79.487 ms
>  5  140.113.254.254  60.800 ms  57.963 ms  60.149 ms
>  6  140.113.57.253  59.586 ms  72.624 ms  60.345 ms
>  7  140.113.53.63  58.397 ms  59.785 ms  59.125 ms
>  8  140.113.23.3  61.144 ms  67.757 ms  62.654 ms
>
> 請注意看 第二個node . 10.241.239.254 這個node的ip是private ip.
> 可是只要附近的router設好,private ip 就等於public ip.
> Private IP 跟 Public IP 惟一的差別就是一個是unroutable 而另一個是
routable.
> 對 210.241.239.249 和 168.95.225.192 來說, 10.241.239.254 就是 public IP.
>
> 下一個例子是從我的電腦到交大資科
> [root@p62-U3 ~]# traceroute -d 140.113.23.3
> traceroute: Warning: Multiple interfaces found; using 10.113.1.235 @ nei0
> traceroute to 140.113.23.3 (140.113.23.3), 30 hops max, 40 byte packets
>  1  10.113.1.233 (10.113.1.233)  2.050 ms  1.800 ms  1.701 ms (小烏龜)
>  2  10.113.200.245 (10.113.200.245)  50.730 ms  49.673 ms  49.076 ms
>  3  10.113.254.254 (10.113.254.254)  32.687 ms  35.661 ms  41.340 ms
>  4  140.113.53.63 (140.113.53.63)  37.222 ms  35.653 ms  35.024 ms
>  5  140.113.23.3 (140.113.23.3)  36.648 ms  34.791 ms  35.396 ms
>
> Node1,2,3 都是 private ip...

解釋的很清楚﹐不過﹐關鍵點還沒說出來﹕封包的來源地址和目的地地址﹐在任何路由
過程中都不會改變的﹐除非您用 NAT 或其它 header rewriting 的手法將之修改了。

在 Song 兄的設計中﹐從 x.x.x.0/24 出去的封包就算經過了 private ip﹐也不會被
改成 private 地址就是了﹐所以﹐弟在第一篇回應時就指出一個關鍵條件﹕“只要外
面網路知道如何將 x.x.x.0/24 那段網路的路由送至 router 就沒問題。”

但無兄這裡應該是說﹐從 private IP 這段網路出去的封包不能被路由吧。這也是正確
的﹐因為外面不知道如何將封包送回來。我們這裡尚不清楚做為 private IP 的
routing device 是否需要和外面的 IP 傳送信息。就算真的有此需要﹐如果我們能在
唯一連接外部的那個 router 上做 NAT﹐將凡是來自 private 網段的封包做 Source
NAT﹐而來自 x.x.x.0/24 的封包則不做任何改變﹐直接 route 出去﹐相信也可以解決
問題。除非在此過程中﹐某些協定在 private 網路封包 body 中有包含 IP 地址的信
息。

不過﹐其中的細節﹐在下就沒詳細研究過了。還是等了解此過程的朋友幫忙解釋一下
吧。