iptables實現端口轉發

端口轉發順序:
經過linux網關的流量.先PREROUTING(是否改地址)
然后路由,轉發給FORWARD(轉發或者丟棄)
最后經過POSTROUTING(看看改不改地址)
環境準備
機器 A IP:192.168.13.111
機器 B IP:192.168.13.112
目標端口:80
使用iptables實現,訪問A機器的80,可以跳轉到B機器的80端口(nginx)
關閉防火墻 開啟iptables
systemctl stop firewalld
systemctl start iptables
機器A開啟數據轉發
# 臨時開啟
echo 1 > /proc/sys/net/ipv4/ip_forward
# 永久開啟 編輯/etc/sysctl.conf 并添加
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
# 執行sysctl -p生效
sysctl -p
配置iptables規則
# 添加 PREROUTING 規則,將流量轉發到 B 機器
iptables -t nat -I PREROUTING -p tcp -d 192.168.13.111 --dport 80 -j DNAT --to-destination 192.168.13.112:80
-t nat: 指定 NAT 表,用于網絡地址轉換。
-A PREROUTING: 在數據包到達時進行處理,適用于入站流量。
-p tcp: 僅匹配 TCP 協議的數據包。
-d 192.168.13.111: 目標 IP 地址是 192.168.13.111。
--dport 80: 目標端口是 80。
-j DNAT: 使用目標 NAT 規則。
--to-destination 192.168.13.112:80: 將目標地址和端口更改為 192.168.13.112:80。
# 出站流量的 SNAT
iptables -t nat -I POSTROUTING -d 192.168.13.112 -p tcp --dport 80 -j SNAT --to 192.168.13.111
-t nat: 指定 NAT 表。
-A POSTROUTING: 在數據包離開時進行處理,適用于出站流量。
-j MASQUERADE: 偽裝源地址,適用于動態 IP 地址。
機器B準備
機器B安裝nginx 并將頁面內容設置為192.168.13.112
啟動nginx
測試訪問機器B
![]()
測試訪問機器A
firewalld實現端口轉發
環境準備
機器 A IP:192.168.13.111
機器 B IP:192.168.13.112
目標端口:80
使用firewalld實現,訪問A機器的80,可以跳轉到B機器的80端口(nginx)
關閉iptables 開啟防火墻
systemctl stop iptables
systemctl start firewalld
機器A開啟數據轉發
# 臨時開啟
echo 1 > /proc/sys/net/ipv4/ip_forward
# 永久開啟 編輯/etc/sysctl.conf 并添加
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
# 執行sysctl -p生效
sysctl -p
配置firewalld規則
# 使用 firewall-cmd 添加端口轉發規則:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" forward-port port=80 protocol=tcp to-addr=192.168.13.112 to-port=80'
--permanent: 確保規則永久生效,重啟后仍然有效。
--add-rich-rule: 添加一條高級規則。
rule family="ipv4": 指定規則適用于 IPv4 協議。
forward-port port=80: 指定源端口為 80。
protocol=tcp: 僅匹配 TCP 協議。
to-addr=192.168.13.112: 將流量轉發到這個目標 IP 地址。
to-port=80: 將流量轉發到目標的 80 端口。
# 啟用IP偽裝
firewall-cmd --permanent --add-masquerade
--add-masquerade: 允許內部網絡的設備通過 A 機器訪問外部網絡
重載防火墻規則
firewall-cmd --reload
機器B準備
機器B安裝nginx 并將頁面內容設置為192.168.13.112
啟動nginx
測試訪問機器B
![]()
測試訪問機器A
浙公網安備 33010602011771號