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 21:14
下一篇 2016-10-31 22:16

相關推薦

  • Linux的終端類型

    1、串行端口終端(/dev/ttySn):       串行端口終端(Serial Port Terminal)是使用計算機串行端口連接的終端設備。計算機把每個串行端口都看作是一個字符設備。有段時間這些串行端口設備通常被稱為終端設備,因為那時它的最大用途就是用來連接終端。這些串行端口所對應的設備名稱是/dev…

    Linux干貨 2016-10-14
  • N25-第八周

    1、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態; 在線的主機使用綠色顯示; 不在線的主使用紅色顯示; #!/bin/bash ipnet=172.16.250. trap ‘trap_action’ INT trap_action() { break return 1 } for ((i=1…

    Linux干貨 2017-05-27
  • M20 – 1- 第二周博客(1):幫助手冊查詢的使用

    Linux系統中存在諸多的命令,而這些命令分為內鍵命令和外部命令。如何查詢命令屬于內部還是外部呢。前一篇博客已經介紹type命令,type命令可以區分命令屬于內部還是外部,下面舉個例子: 為什么這一期博客還重復講如何區分內部與外部命令呢,因為在man手冊查詢中,內部命令并不是使用man查詢幫助手冊,僅僅使用與外部命令,那內鍵命令如何查詢呢,接下來要講的就是h…

    Linux干貨 2016-08-02
  • 學習伊始宣言

    學習后的狀態 以人事相宜為追求,優化職業資質 以勝任愉快為目標,保持職業體能 以創造績效為主導,開發職業意識 以適應市場為基點,修養職業道德 學習宣言 如果不踏出第一步就永遠也不可能到達目的地,讓我們從此刻出發

    Linux干貨 2016-11-28
  • Linux nginx 服務

                           Linux nginx 服務 Nginx服務簡介:      NGINX :是一個自由、開源、高性能、輕量級的HT…

    系統運維 2016-11-18
  • 查找find命令簡介

       之前都是寫一些關于課后練習題的博客,既練習了課后習題也把博客寫了,舒服!不過這周學的知識需要練習的不多,更多的是需要了解和記憶,所以給大家介紹一個自我覺得挺強大的一個命令,那就是查找find命令。大家都知道計算機的數據茫茫多,要想找到自己想要的級必須加點限制性的條件來縮小一下范圍,或者準確的告訴計算機你想要的是什么。那么怎么來實現呢…

    2017-08-12
欧美性久久久久