- 论坛徽章:
- 0
|
觉得iptable脚本真没必要那么规范
原帖由 "網中人" 发表:
platinum 兄還是幫大家解釋一下 ftp 的 passive mode 與 active mode 吧.
然後再來說那兩個 ftp modules 幹嘛用的, 自然好理解.
摘抄自 http://www.study-area.org/linux/servers/linux_nat.htm#ftp
请参考 http://www.study-area.org/linux/servers/linux_nat.htm#ftp
在正常模式下﹕
1、FTP client 開啟一個隨機選擇的高於 1024 的 port 呼叫 FTP server 的 port 21請求連線。當順利完成 Three-Way Handshake 之後﹐連線就成功建立﹐但這僅是命令通道的建立。
2、當兩端需要傳送資料的時候﹐client 透過命令通道用一個 port 命令告訴 server ﹐客戶端可以用另一個高於 1024 的 port 做數據通道﹐並準備好 socket 資源。
3、然後 server 用 port 20 和剛才 client 所告知的 socket 建立數據連線。請注意﹕連線方向這是從 server 到 client 的﹐TCP 封包會有一個 SYN 旗標。
4、然後 client 會返回一個帶 ACK 旗標的確認封包﹐並完成另一次的 Three-Way Handshake 手續。這時候﹐數據通道才能成功建立。
開始數據傳送。
在 passive 模式下﹕
1、FTP client 開啟一個隨機選擇的高於 1024 的 port 呼叫 FTP server 的 port 21請求連線﹐並完成命令通道的建立。
2、當兩端需要傳送資料的時候﹐client 透過命令通道送一個 PASV 命令給 server﹐要求進入 passive 傳輸模式。
3、然後 server 像上述的正常模式之第 2 步驟那樣﹐挑一個高於 1024 的 port ﹐並用命令通道告訴 client 關於 server 端用以做數據通道的 socket。
4、然後 client 用另一個高於 1024 的 port 呼叫剛才 server 告知的 scoekt 來建立數據通道。此時封包帶 SYN 標籤。
5、server 確認後回應一個 ACK 封包。並完成所有交握手續﹑成功建立數據通道。
開始數據傳送。
以下是我的理解
主动模式
server client
数据 命令 数据 命令
20 21 xx yy
| | | |
| |<----yy-----| |
| |--- yyok--->;| |
|<---|------------|--->;|
| | | |
被动模式
server client
数据 命令 数据 命令
zz 21 xx yy
| | | |
| |<--被动?---| |
| |--- zzok--->;| |
|<---|------------|--->;|
| | | |
另外一点心得
假设A是CLIENT,B是SERVER
A->;B,都没有防火墙,可以使用主动、被动模式
A->;B,B有防火墙,B需要加载ip_conntrack_ftp
A->;B,A通过NAT出去,B有防火墙,B需要加载ip_conntrack_ftp,同时如果A的网关是LINUX系统,还必须加载ip_nat_ftp |
|