iptables實現(xiàn)端口映射(本地和遠程端口映射)
說明:
需要將外網(wǎng)訪問本地IP(192.168.75.5)的80端口轉(zhuǎn)換為訪問192.168.75.3的8000端口,這就需要用到iptables的端口映射
實現(xiàn):
1. 需要先開啟linux的數(shù)據(jù)轉(zhuǎn)發(fā)功能
# vi /etc/sysctl.conf,將net.ipv4.ip_forward=0更改為net.ipv4.ip_forward=1
# sysctl -p //使數(shù)據(jù)轉(zhuǎn)發(fā)功能生效
2. 更改iptables,使之實現(xiàn)nat映射功能
將外網(wǎng)訪問192.168.75.5的80端口轉(zhuǎn)發(fā)到192.168.75.3:8000端口。
# iptables -t nat -A PREROUTING -d 192.168.75.5 -p tcp --dport 80 -j DNAT --to-destination 192.168.75.3:8000
將192.168.75.3 8000端口將數(shù)據(jù)返回給客戶端時,將源ip改為192.168.75.5
# iptables -t nat -A POSTROUTING -d 192.168.75.3 -p tcp --dport 8000 -j SNAT --to 192.168.75.5
3. 查看nat,可以使用命令:iptables -t nat –list檢查nat列表信息
以上是針對從一臺機到另一臺機的端口轉(zhuǎn)發(fā),如果要針對本機進行端口轉(zhuǎn)發(fā),就需要按如下操作:
將外網(wǎng)訪問80端口的數(shù)據(jù)轉(zhuǎn)發(fā)到8080端口
# iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
將本機訪問80端口的轉(zhuǎn)發(fā)到本機8080
# iptables -t nat -A OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j DNAT --to 127.0.0.1:8080
# iptables -t nat -A OUTPUT -p tcp -d 192.168.4.177 --dport 80 -j DNAT --to 127.0.0.1:8080
本地連接指的是在本機上,用 127.0.0.1 或者本機 IP 來訪問本機的端口。本地連接的數(shù)據(jù)包不會通過網(wǎng)卡,而是由內(nèi)核處理后直接發(fā)給本地進程。這種數(shù)據(jù)包在 iptables 中只經(jīng)過 OUTPUT 鏈,而不會經(jīng)過 PREROUTING 鏈。所以需要在 OUTPUT 鏈中進行 DNAT。除了對 127.0.0.1 之外,對本機 IP (即 192.168.4.177) 的訪問也屬于本地連接。
iptables刪除操作:
查看nat規(guī)則,并顯示行號
iptables -t nat --list --line-number
刪除一條nat 規(guī)則 刪除SNAT規(guī)則
iptables -t nat -D POSTROUTING 1
iptables -t nat -D POSTROUTING 7
ubuntu中iptables重啟生效:
查看nat規(guī)則,并顯示行號
iptables -t nat --list --line-number
刪除一條nat 規(guī)則 刪除SNAT規(guī)則
iptables -t nat -D POSTROUTING 1
iptables -t nat -D POSTROUTING 7

浙公網(wǎng)安備 33010602011771號