iptables實現地址轉換

NAT:(工作在網絡和傳輸層) 過載技術

Basic NAT:靜態NAT
    一個內部主機,分配一個外網地址
NAPT:動態NAT,網絡地址端口轉換;net會話表
    源地址轉換:SNAT 用于內網主機訪問互聯網
    目標地址轉換:DNAT 讓互聯網上主機訪問本地內網上的某服務器上的服務(發布)


iptables基于SNAT和DNAT這兩個目標(target)實現地址轉換技術

-j SNT --to-source SIP
    規則添加:POSTROUTING鏈
-j MASQUERADE  動態獲取(外網地址是動態的)
-j DNAT --to-destination DIP{:PORT}
    支持端口映射

iptables實現地址轉換

iptables實現地址轉換



源地址轉換示例

iptables實現地址轉換

// 此時 filter 表上的 FORWARD 鏈 要打開(會經過此表中的此鏈)
[root@nat ~]# iptables -t nat -F
[root@nat ~]# iptables -t nat -L -n
[root@nat ~]# iptables -t nat -A POSTROUTING -s 10.1.249.158 -j SNAT --to-source 192.168.2.3
[root@nat ~]# iptables -t nat -L -n
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
SNAT       all  --  10.1.249.158         0.0.0.0/0           to:192.168.2.3 

內部主機訪問外部主機
[root@nei ~]# curl http://192.168.2.4/index.html
hello 
查看外部主機中web的訪問日志
[root@wai ~]# tail /var/log/httpd/access_log
192.168.2.3 - - [13/Oct/2016:21:40:58 +0800]
192.168.2.3 - - [13/Oct/2016:21:40:59 +0800]
//主機,我們的內部主機IP為10.1.249.158
//而httpd的訪問日志為192.168.2.3的訪問
//說明成功實現了源地址轉換


目標地址轉換示例(對80端口的轉換)

iptables實現地址轉換

[root@luyou ~]# iptables -t filter -F 
[root@luyou ~]# iptables -t nat -F
[root@luyou ~]# iptables -t nat -A PREROUTING -d 10.1.249.125 -p tcp --dport 80 -j DNAT --to-destination 192.168.2.4
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            10.1.249.125        tcp dpt:80 to:192.168.2.4

[root@luyou ~]# netstat -tln | grep "\<80\>"  此時本機上并沒有開放80端口
[root@wai ~]# curl http://10.1.249.125
hello  --> 此時我們訪問為 luyou 主機上的80端口  由上面可知,此服務器上并沒有開放80,而是將請求送往 后端服務器


目標地址和端口轉換示例(對22端口的轉換)

[root@luyou ~]# iptables -t filter -F  FORWARD
[root@luyou ~]# iptables -t nat -A PREROUTING -d 10.1.249.125 -p tcp --dport 22022 -j DNAT --to-destination 192.168.2.4:22
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            10.1.249.125        tcp dpt:22022 to:192.168.2.4:22 
[root@wai ~]# ssh -p 22022 10.1.249.125  --> 連接 luyou 設備的22022端口
[root@nei ~]# --> 連接到 nei  內網的主機上來
[root@luyou ~]# iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 42 packets, 4633 bytes)
 pkts bytes target     prot opt in     out     source               destination         --> 有報文成功匹配到
    1    60 DNAT       tcp  --  *      *       0.0.0.0/0            10.1.249.125        tcp dpt:22022 to:192.168.2.4:22 

//此時我們請求luyou這臺NAT服務器的22022端口的ssh服務,此時我們nat路由器的ssh服務并沒有監聽在22022端口,
//而是將目標IP和目標端口都進行了轉換了,使我們連接到了內網的ssh服務器上

原創文章,作者:sixijie,如若轉載,請注明出處:http://www.www58058.com/56515

(1)
sixijiesixijie
上一篇 2016-10-31
下一篇 2016-10-31

相關推薦

  • 淺談HTTP協議以及httpd的十八般武藝

      初識HTTP協議                HTTP(hyper text transfer protocal)作為互聯網應用最廣泛的協議,任何一個運維人員都無法回避它,HTTP的目的就是提供一種發布和…

    Linux干貨 2016-02-14
  • 無痛之ext3升ext4[原創]

    一臺文件存儲服務器單目錄下子目錄已經突破31998數限制,造成無法繼續創建子目錄,服務器系統環境為CentOS5.4 內核版本為2.6.18。解決方案只能是升級到ext4文件系統,首先到https://ext4.wiki.kernel.org/index.php/Ext4_Howto查了一下資料,文中的第一句便是“Ext4 was released as a…

    Linux干貨 2015-03-27
  • bash語句的具體應用之“顯示/etc/passwd文件中ID號最大的用戶的用戶名?”

    問題:顯示/etc/passwd文件中ID號最大的用戶的用戶名 回答:sort -t; -k3 -n /etc/passwd | tail -1 |cut -d: -f1 看似很簡答的一個回答,其實其中包含了多個命令的使用方法: 第一個用到的命令:sort sort命令是幫我們依據不同的數據類型進行排序,其語法及常用參數格式:  sort [-bcfMnrt…

    Linux干貨 2016-04-11
  • RPM程序包管理

           RPM的全名“RedHat Package Manager”,當初這個是RedHad公司開發的一款程序包管理套件,隨著RPM的不斷完善,RPM逐漸成為眾多linux發行版程序包管理器的代名詞,那什么是RPM,為什么會用到RPM這個程序包管理工具那,接下來我一一揭曉。  &nb…

    Linux干貨 2015-11-04
  • 自制一個小型Linux(附帶網絡功能)

      我們這次講述一下Linux啟動的啟動流程以及制作一個附帶網絡功能的mini linux 一、敘述 二、為什么要制作這么一個小型的系統 三、怎么制作 1、制作步驟 2、將虛擬機添加網絡功能 一、敘述   在制作一個小型的Linux之前,首先你得明白Linux系統的啟動過程,我們用一張圖來進行說明  二、為什…

    Linux干貨 2016-12-21
  • AWK——文本處理三劍客

    GNU awk ·文本處理三工具:grep,sed,awk          grep,egrep,fgrep:文本過濾工具:pattern          sed:行編輯器  &nbsp…

    Linux干貨 2016-09-20
欧美性久久久久