postrouting和prerouting的區別以及透明代理

 

1、源linux

  在學習鳥哥的linux私房菜NAT部分的時候爲了加深對postrouting和prerouting的理解,上網查了相關的一些資料。有一篇博文寫的很好,給了我不少的啓示:/jis1237/article/details/17676659(csdn),下面談談本身的所得。bash

2、關鍵詞連接服務器

  訪問外網---發一個數據報---路由規則審覈一哈---snat( 源地址轉換)---postrouting(路由規則以後的動做)---從內網出post

  外網訪問內網---發送一個數據報---dnat (目的地址轉換)---prerouting(路由規則以前的動做)---路由規則審覈一哈---進內網
  細想一下上述過程:內網想要訪問外網網頁,發送一個數據報,首先路由規則要審覈一哈你能不能發,ok了,能了纔會繼續作snat,因此是路由規則以後的動做。外網想要訪問內網服務器,可是其目的ip確是公網的ip,必定要先通過dnat轉換成私有ip後,接下來路由規則再審覈你能不能進來,因此dnat是路由規則以前的動做。
  接受路由規則審覈的是私有ip+外網ip的組合。
  上述理解能夠知道snat爲何對應的是postrouting,dnat爲何對應的是prerouting。或者換句話說:snat(原地址轉換)在路由規則以後,dnat(目的地址轉換)在路由規則以前。也能夠說先路由規則,再源地址轉換;先目的地址轉換,再路由規則。學習

  上述的內網和外網是相對的概念,有兩個局域網A和B,對於A內的主機,A是內網,B是外網;對於B內的主機,B是內網,A是外網。代理

3、透明代理code

  透明代理的原理:你想要從內網訪問外網的網頁,透明代理會把你的請求重定向,轉發到內網的某一服務器,實際的過程至關於更改數據報的目的地址,因此說通過了dnat的過程,因此用的是prerouting。blog

  雖然說上述的過程是你想訪問外網,即從內網出,有點postrouting的感受.....ip

  因此切記不要用什麼內網出,內網進去理解prerouting和postrouting。路由

  需求:用內網的192.168.1.110作訪問外網1.2.3.4的透明代理   具體的代碼是:

iptables -t nat -A PREROUTING -i eth0 -d 1.2.3.4 -j DNAT --to-destnation 192.168.1.110
相關文章
相關標籤/搜索