iptable實現端口轉發


利用iptables的規則來實現端口轉發:

第一步需要將內核參數的net.ipv4.ip_forward=1 

場景一:實現本地端口轉發

本地端口轉發實在PREROUTING鏈中將端口做NAT轉換:

# iptable -t nat -A  PREROUTING -p tcp --dport   "$原端口"  -j REDIRECT --to-port  "$目標端口"

場景二、實現端口遠程端口轉發

遠程端口轉發原理,是在本地PREROUTING鏈中將端口進行NAT轉換,然后通過FORWARD鏈轉至POSTROUTING鏈中,然后在POSTROUTING中將原client地址進行SNAT的轉換

1、 DNAT轉換  iptable -t nat -A PREROUTING -p tcp -m tcp --dport   "$原端口" -j DNAT --to-destination xxx:xxx:xxx:xxx:$目標端口          note:xxx:xxx:xxx:xxx為目標機器地址

2、FORWARD放行: iptable -t filter -A FORWARD -j ACCEPT      ### 此處可設置其他的過濾條件

3、SNAT轉換: iptable -t nat -A POSTROUTING -p tcp -m tcp --dport $目標端口 -j SNAT --to-source "xxx:xxx:xxx:xxx"                             note: xxx:xxx:xxx:xxx 為端口轉發機器地址

 

可選 設置

 如果要實現本地應用程序訪問目標端口:如 curl http://xxx.xxx.xxx.xxx:$目標端口/                                                                                        note: xxx:xxx:xxx:xxx 為端口轉發機器地址

因為本地應用(用戶空間)訪問目標端口時,是通過OUT鏈路出用戶空間,必須在OUT 鏈中添加相應DNAT的規則,再經過POSTROUTING鏈出去目標機器

iptables -t nat -A OUTPUT -p tcp -m tcp --dport    "$原端口"  -j DNAT --to-destination   xxx:xxx:xxx:xxx:$目標端口                                        note: xxx:xxx:xxx:xxx 為目標機器地址      

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM