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 地址的信
息。
不過﹐其中的細節﹐在下就沒詳細研究過了。還是等了解此過程的朋友幫忙解釋一下
吧。