隨筆-124  評論-194  文章-0  trackbacks-0

          (轉) 

           

          設我們有一臺計算機,有兩塊網卡,eth0連外網,ip為1.2.3.4;eth1連內網,ip為192.168.0.1.現在需要把發往地址1.2.3.4的81端口的ip包轉發到ip地址192.168.0.2的8180端口,設置如下:

            1. iptables -t nat -A PREROUTING -d 1.2.3.4 -p tcp -m tcp --dport 81 -j DNAT --to-destination192.168.0.2:8180

            2. iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.0.0 -d 192.168.0.2 -p tcp -m tcp --dport 8180 -j SNAT --to-source 192.168.0.1

            真實的傳輸過程如下所示:

            假設某客戶機的ip地址為6.7.8.9,它使用本機的1080端口連接1.2.3.4的81端口,發出的ip包源地址為6.7.8.9,源端口為1080,目的地址為1.2.3.4,目的端口為81.

            主機1.2.3.4接收到這個包后,根據nat表的第一條規則,將該ip包的目的地址更該為192.168.0.2,目的端口更該為8180,同時在連接跟蹤表中創建一個條目,(可從/proc/net/ip_conntrack文件中看到),然后發送到路由模塊,通過查路由表,確定該ip包應發送到eth1接口.在向eth1接口發送該ip包之前,根據nat表的第二條規則,如果該ip包來自同一子網,則將該ip包的源地址更該為192.168.0.1,同時更新該連接跟蹤表中的相應條目,然后送到eth1接口發出.

            此時連接跟蹤表中有一項:

            連接進入: src=6.7.8.9 dst=1.2.3.4 sport=1080 dport=81

            連接返回: src=192.168.0.2 dst=6.7.8.9 sport=8180 dport=1080

            是否使用: use=1

            而從192.168.0.2發回的ip包,源端口為8180,目的地址為6.7.8.9,目的端口為1080,主機1.2.3.4的TCP/IP棧接收到該ip包后,由核心查找連接跟蹤表中的連接返回欄目中是否有同樣源和目的地址和端口的匹配項,找到后,根據條目中的記錄將ip包的源地址由192.168.0.2更該為1.2.3.4, 源端口由8180更該為81,保持目的端口號1080不變.這樣服務器的返回包就可以正確的返回發起連接的客戶機,通訊就這樣開始.

            還有一點, 在filter表中還應該允許從eth0連接192.168.0.2地址的8180端口:

            iptables -A INPUT -d 192.168.0.2 -p tcp -m tcp --dport 8180 -i eth0 -j ACCEPT

          posted on 2007-11-18 18:54 我愛佳娃 閱讀(7454) 評論(0)  編輯  收藏 所屬分類: 服務配置
          <2007年11月>
          28293031123
          45678910
          11121314151617
          18192021222324
          2526272829301
          2345678

          常用鏈接

          留言簿(19)

          隨筆分類(134)

          隨筆檔案(123)

          我的博客

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 552902
          • 排名 - 89

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 石景山区| 青川县| 武平县| 沙洋县| 庆安县| 马尔康县| 宜昌市| 重庆市| 兴和县| 广德县| 龙南县| 临朐县| 滨海县| 榆树市| 玉龙| 喜德县| 田阳县| 栖霞市| 凤台县| 牡丹江市| 汽车| 合山市| 义乌市| 抚宁县| 荣昌县| 鄂托克前旗| 嘉兴市| 河西区| 远安县| 乌海市| 壤塘县| 高尔夫| 昆山市| 叙永县| 玉门市| 汾阳市| 土默特左旗| 婺源县| 衢州市| 漳州市| 德化县|