twitch.tv 實況台

twitch.tv 實況台:顯示|不顯示

ustream.tv 實況台

Twitch 實況台

Ustream 實況台

2008年4月17日 星期四

[電腦] NAT 的 Port Forwarding 設定問題

一般的 IP 分享器
幾乎都會提供 Port Forwarding 的功能
(不會太消耗資源,而且有其必要性)
不過我今天才體會到,一個小小的 NAT 有這麼多的煩惱……

那來說明一下吧(なぜなにナデシコ!)

例如我有一台電腦
正在 Port 80 執行著一個網頁伺服器
我只要知道這台電腦的 IP、Port
就可以連接上這台電腦的網頁伺服器

不過如果中間隔了一個 NAT 伺服器
這溝通上就麻煩多了
這時候就需要 Port Forwarding 這個功能了

一般來說
Port Forwarding 是提供一個外部的 Port
透過封包轉遞的方式投遞到另一台內部網路的電腦
例如上面說的 Port 80 是網頁伺服器
不過他在內部的話,一般的連線是無法連進去建立連線的
所以擔任 NAT 的電腦
會把「從 Port 80 接收到的封包,送給內部已經設定好準備接收 Port 80 封包的網頁伺服器」
這樣就可以跟客戶端開始建立連線了
當然,這台 NAT 也可以把從不同 Port 收到的封包
送到不同的對應電腦上面

不過講得這麼複雜
下面就用個小故事來說明吧
今天我想要去為兩個受刑人探監
不過這兩個人罪孽深重,因為他搶了 Yuka 的小蘿莉
所以我們無法見到面

這監獄也有個很奇怪的傳統
只要探尖的時候
對受刑人打巴掌,受刑人就會吐 1 美金出來
如果打拳頭,受刑人會掉 1 歐元
直接打就可以拿到了呢

不過剛剛說到那兩個人罪孽深重
無法見面
這該怎麼打擊罪犯拿獎金呢?

放心,這個監獄提供了很特別的服務
就叫做「拳頭巴掌轉遞」
只要對獄卒作什麼事情
獄卒就會進去幫你對相對應的人作「某件事」
例如今天監獄黑箱作業
A 就收巴掌,收到巴掌會給探監人 1 美分
B 就收拳頭,收到拳頭會給探監人 1 歐元
當然探監的人不知道這個黑箱作業
但是我們知道可以對獄卒打巴掌、送拳頭
還可以拿獎金

首先
我對獄卒打了一巴掌
獄卒就把巴掌送進去了,他拿了 1 美金給我
我又對獄卒貓了一拳
很快的,他又把拳頭送進去了
拿了 1 歐元給我

看到這邊大概很多人都瞭解了
重點是「巴掌 1 美金,拳頭 1 歐元」
有打有送
只是溝通的方式不同
至於怎麼溝通,這就是監獄(NAT Port Forwarding)的工作啦

以上說到的,就是「從外到內」的規則

這種的問題點又在哪邊?
我們都知道把巴掌拳頭送進去,他就會丟對應的東西出來
但是如果要從裡面丟東西出來呢?
這個就不一定了

通常經過 NAT 的話
內部的 Port 會跟外部的不同
例如內部電腦從 3325 出來,結果過了一個 NAT 以後
NAT 卻是從 4425 送給別人
不過 NAT 在溝通的中途,他是不會搞混的
一般的 NAT 從內到外的話
Port 都不會一樣
除非有經過特別的設定
讓從內到外的 Port 都能夠一致
例如 A 從 3325 送出
NAT 收到以後,一樣用 3325 這個通訊埠送出資料

當然 IP 分享器設定 Port Forwarding 的時候
有沒有同時建立內到外以其外到內的規則
以確保整個通道的順暢

今天就是發現 pfsense 的 NAT 只會建立由外到內的規則
不會自動建立內到外要怎樣去走
而 BrazilFW 是會自動建立的
所以遇到 XLink 這種建立 Port 比較奇怪的軟體
就會出問題了

所以如果發現使用 XLink 的時候
只要連了 IP 分享器就無法使用
即使建立了 Port Forwarding 也一樣
那大概就是 IP 分享器作怪了

2008/08/17 新增 pfSense outbound 範例設定畫面:

沒有留言:

張貼留言