原文地址: http://unmi.cc/windows-linux-port-forwarding/
這里記錄一下我曾經使用過的幾個端口轉發工具,即端口映射、端口重定向,和 NAT 也是差不多的概念。
Linux 下用過 iptables,rinetd;Windows 下用過某個防火牆的 NAT 功能、RemoteAnywhere 的端口重定向、FPipe,還有最近剛找到的 PassPort。試着去設置一下 Windows 2000 的 NAT 功能,但未成功,還是特定的軟件簡單易用,下面介紹逐一介紹下。
iptables 的功能當然強大,但理解與設置卻有點抽象,曾用它進行過透明代理上網,見:Linux 下僅用 iptables 實現為透明代理服務器。真要用它進行端口重定向太麻煩,會用它當然很方便的,在 Linux 平台下是開箱即用的,很多機器都安裝了它。
rinetd,一直在用它,它可以多組端口映射寫在配置文件里,好像只支持 TCP 協議。下載地址http://www.boutell.com/rinetd/http/rinetd.tar.gz,如何安裝不細講了,可以 apt-get install,或 yum install,或是 make/make install。
安裝后,它默認使用 /etc/rinetd.conf 文件,比如通過入口機訪問某台內網的遠程桌面,或透過入口的 80 端口訪問內網某機器的 8080 端口上的 Web 服務,可以這么寫:
1
2
3
4
|
#通過 61.108.218.106:3389 進來的請求重定向給 10.80.10.7:3389
61.108.218.106 3389 10.80.10.7 3389
#任何接口進來請求80端口重定向給 10.80.10.8:8080
0.0.0.0 80 10.80.10.8 8080
|
格式是:【直接被訪問的IP 端口號 重定向到機器IP 端口號】,中間用空格分開。
使用默認 /etc/rinited.conf 的話,直接執行 rinitd 就啟用你所配置的端口重定向規則。如果不是用的默認文件就用參數 -c 指定配置文件,如 rinitd -c /home/unmi/rinitd.conf。另外還可以指定 allow 和 deny 規則,只需要 allow 關鍵字,可記錄日志文件。只需在 rinited.conf 文件中再寫上
1
2
3
|
#只允許 218.20.68.* 訪問,未被允許的則視為禁止
allow 218.20.68.*
logfile /var/log/rinetd.log
|
請參考:http://www.boutell.com/rinetd/。
rinetd 還出了 Windows 的版本,相應的下載地址是:http://www.boutell.com/rinetd/http/rinetd.zip。使用方式也是一樣的,命令方式。
那個防火牆軟件的 NAT 功能沒什么可說,一般人都用不到。RemoteAnywhere 是可以進行遠程管理的,它帶了 Port Forwarding 功能,通過 Web 就能設置,相信為了簡單的端口重定向功能,誰也不願意裝上這個累贅,況且還不免費。
最初在 Windows 上我還是用的 FPipe,也是命令行式的,支持 TCP 和 UDP 協議。執行一個命令重定向一個端口,不能把重定向規則寫在配置文件中。當然,你願意用批處理逐行讀配置一次次執行 fpipe 命令也行得通的,規則多了小心屏幕一片黑。
FPipe 的下載和幫助界面見:http://www.foundstone.com/us/resources/proddesc/fpipe.htm.
它就只有一個可執行文件 fpipe.exe。直接執行 fpipe 會顯示出它的命令說明的:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
|
C:\Documents and Settings\unmi>fpipe
FPipe v2.1 - TCP/UDP port redirector.
Copyright 2000 (c) by Foundstone, Inc.
<a href="http://www.foundstone.com/">http://www.foundstone.com</a>
FPipe [-hvu?] [-lrs <port>] [-i IP] IP
-?/-h - shows this help text
-c - maximum allowed simultaneous TCP connections. Default is 32
-i - listening interface IP address
-l - listening port number
-r - remote port number
-s - outbound source port number
-u - UDP mode
-v - verbose mode
Example:
fpipe -l 53 -s 53 -r 80 192.168.1.101
|
比如,要完成上面 web 服務的重定向,以執行:
fpipe -i 61.108.218.106 -l 80 -r 80 -s 8080 10.80.10.8
這里多了一層概念,就是端口,1. 請求哪個端口,2. 定向到它機的端口,3. 數據從哪個端口出
支持 UDP 加 -u 參數,執行后命令窗口不關閉,並會顯示連接日志。
Windows 下還是希望有圖形界面的,那就是 PassPort,它是免費開源的,支持 TCP/UDP、可配置多組映射規則,修改規則后還無需重啟,可作為 Windows 系統服務運行。好用的強力推薦的東西不能列在后頭,還是另立一篇來說說它。
參考:1. 端口重定向Fpipe的用法