在CentOS系統中,使用iptables實現端口轉發(也稱為端口映射)可以通過以下步驟完成。端口轉發允許你將一個端口上的流量重定向到另一個端口或另一臺服務器。
假設你想將本地主機的端口8080轉發到另一臺服務器的端口80。
啟用IP轉發:
編輯 /etc/sysctl.conf
文件,確保以下行沒有被注釋掉:
net.ipv4.ip_forward=1
然后運行以下命令使更改生效:
sysctl -p
配置iptables規則: 使用以下命令添加端口轉發規則:
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination <目標服務器IP>:80
iptables -t nat -A POSTROUTING -p tcp -d <目標服務器IP> --dport 80 -j MASQUERADE
iptables -A INPUT -p tcp --dport 8080 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
解釋:
-t nat
:指定使用NAT表。-A PREROUTING
:在PREROUTING鏈中添加規則,用于修改數據包的目標地址。-p tcp --dport 8080
:匹配TCP協議,目標端口為8080。-j DNAT --to-destination <目標服務器IP>:80
:將數據包的目標地址修改為目標服務器的IP地址和端口80。-A POSTROUTING
:在POSTROUTING鏈中添加規則,用于修改數據包的源地址。-p tcp -d <目標服務器IP> --dport 80
:匹配TCP協議,目標地址為目標服務器的IP地址和端口80。-j MASQUERADE
:進行源地址偽裝,使得數據包看起來像是來自本地主機。-A INPUT
:在INPUT鏈中添加規則,允許來自端口8080的新連接、已建立的連接和相關的連接。iptables規則在系統重啟后會丟失,為了使規則持久化,可以使用 iptables-services
和 firewalld
。
iptables-services
安裝 iptables-services
:
yum install iptables-services
啟用并啟動 iptables
服務:
systemctl enable iptables
systemctl start iptables
保存iptables規則:
service iptables save
firewalld
安裝 firewalld
:
yum install firewalld
啟動并啟用 firewalld
服務:
systemctl enable firewalld
systemctl start firewalld
添加端口轉發規則:
firewall-cmd --permanent --zone=public --add-forward-port=port=8080:proto=tcp:toport=80:toaddr=<目標服務器IP>
重新加載 firewalld
配置:
firewall-cmd --reload
通過以上步驟,你可以在CentOS系統中使用iptables實現端口轉發。選擇適合你需求的方法進行配置即可。