iptables 設置端口轉發/映射


iptables 設置端口轉發/映射

 


服務器A有兩個網卡
內網ip:192.168.1.3
外網ip:10.138.108.103
本地回環:127.0.0.1

服務器B有網卡,8001提供服務
內網ip:192.168.1.1

 

 

 

 

 


目的
使用戶通過外網10.138.108.103:8001訪問內網服務器192.168.1.1:8001

 

 

 


如圖2所示,端口轉發走的是下發A路,利用nat表中prerouting做dnat,用postrouting做snat

包分析
時期 操作 源IP:PORT 目的IP:PORT
packet in 用戶訪問 1.2.3.4:5 10.138.108.103:8001
prerouting dnat 1.2.3.4:5 192.168.1.1:8001
routing decision 判斷是否轉發 1.2.3.4:5 192.168.1.1:8001
postrouting snat 10.138.108.103:X 192.168.1.1:8001
packet out 轉發包 10.138.108.103:X 192.168.1.1:8001
開啟內核ip轉發
nano /etc/sysctl.conf

將下項注釋去掉

# net.ipv4.ipv4_forward=1
1
使改動生效

sudo sysctl -p

腳本
#!/bin/bash
pro='tcp'

src_host1='192.168.1.3'
src_host2='10.138.108.103'
src_port=8001

Dst_Host='192.168.1.1'
Dst_Port=8001

# 清空規則
iptables -F
iptables -X
iptables -Z
iptables -t nat -F

# Destination network address translate (dnat)

# 如圖2所示
iptables -t nat -A PREROUTING -p $pro -d $src_host1 --dport $src_port -j DNAT --to $Dst_Host:$Dst_Port
iptables -t nat -A PREROUTING -p $pro -d $src_host2 --dport $src_port -j DNAT --to $Dst_Host:$Dst_Port


iptables -A FORWARD -p $pro -d $Dst_Host --dport $Dst_Port -j ACCEPT

# 本地連接不經過prerouting,只經過output鏈,所以想要在服務器A通過本地ip訪問服務器B需要在output 鏈增加dnat規則
iptables -t nat -A OUTPUT -p $pro -d $src_host1 --dport $src_port -j DNAT --to $Dst_Host:$Dst_Port
iptables -t nat -A OUTPUT -p $pro -d $src_host2 --dport $src_port -j DNAT --to $Dst_Host:$Dst_Port

 

# source network address translate (snat)
iptables -t nat -A POSTROUTING -p $pro -d $Dst_Host --dport $Dst_Port -j SNAT --to $src_host1

# 顯示已有規則
iptables -t nat -L -n --line-number
---------------------
作者:light_jiang2016
來源:CSDN
原文:https://blog.csdn.net/light_jiang2016/article/details/79029661
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

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



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