linux下用iptables作本機端口轉發方法(轉載)

一 :從一臺機到另外一臺機端口轉發


啓用網卡轉發功能
#echo 1 > /proc/sys/net/ipv4/ip_forward

舉例:從192.168.0.132:21521(新端口)訪問192.168.0.211:1521端口mysql

 


a.同一端口轉發(192.168.0.132上開通1521端口訪問 iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1521 -j ACCEPT)sql

iptables -t nat -I PREROUTING -p tcp --dport 1521 -j DNAT --to 192.168.0.211
iptables -t nat -I POSTROUTING -p tcp --dport 1521 -j MASQUERADE

b.不一樣端口轉發(192.168.0.132上開通21521端口訪問 iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21521 -j ACCEPT)服務器

iptables -t nat -A PREROUTING -p tcp -m tcp --dport21521 -j DNAT --to-destination192.168.0.211:1521
iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -d 192.168.0.211 -p tcp -m tcp --dport 1521 -j SNAT --to-source 192.168.0.132


以上兩條等價配置(更簡單[指定網卡]):
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 31521 -j DNAT --to 192.168.0.211:1521
iptables -t nat -A POSTROUTING -j MASQUERADE


保存iptables
#service iptables save
#service iptables restart

網絡

二 用iptables作本機端口轉發

  代碼以下:
  iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080


  估計適當增長其它的參數也能夠作不一樣IP的端口轉發。

  若是須要本機也能夠訪問,則須要配置OUTPUT鏈(********特別注意:本機訪問外網的端口會轉發到本地,致使訪不到外網,如訪問yown.com,其實是訪問到本地,建議不作80端口的轉發或者指定目的 -d localhost):運維

  iptables -t nat -A OUTPUT -d localhost -p tcp --dport 80 -j REDIRECT --to-ports 8080

緣由:
外網訪問須要通過PREROUTING鏈,可是localhost不通過該鏈,所以須要用OUTPUT。tcp

#######################################################################################.net

概述:公司有一些核心MySQL服務器位於核心機房的內網段,做爲運維人員,常常須要去鏈接這些服務器,因沒法直接經過外網訪問,給管理形成了不便。rest


思路:雖然解決此問題的方法及思路有不少,但當下想使用IPTABLES的端口重定向功能解決此問題,比較簡單易用,並且擴展性也比較好,依次類推,能夠運用到其餘的端口轉發方面的應用。
網絡環境:
公網服務器      :eth0:公網IP    eth1:內網IP - 192.168.1.1
mysql服務器:eth1:內網IP - 192.168.1.2

實現方法:經過訪問公網IP的63306端口來實現到內網MYSQL服務器的3306端口的訪問
在公網服務器上:
配置腳本:
iptables -t nat -A PREROUTING -p tcp --dport 63306 -j DNAT --to-destination 192.168.1.2:3306
iptables -t nat -A POSTROUTING -d 192.168.1.2 -p tcp --dport 3306 -j SNAT --to 192.168.1.1
ip

容許服務器的IP轉發功能:get

echo 1 > /proc/sys/net/ipv4/ip_forward
使用方法:
mysql -h 公網IP -p 63306 -uroot -p

 

###############################################################################################

因爲業務須要,服務器愈來愈多,內網服務器無外網環境管理甚是不便,因此折騰了一下外網到內網的端口轉發以達到輕鬆管理的目的,貼一下心得。


S1:
eth0 10.0.0.1
eth1 x.x.x.x


S2:
eth0 10.0.0.2


S1 8082端口轉發到內網機器22端口

iptables規則配置以下:

iptables -t nat -A PREROUTING -d x.x.x.x -p tcp --dport 8082 -j DNAT --to-destination 10.0.0.2:22

iptables -t nat -A POSTROUTING -d 10.0.0.2 -p tcp --dport 22 -j SNAT --to-source x.x.x.x

說明: iptables -t nat -A PREROUTING -d "對外公網ip" -p tcp --dport "對外端口" -j DNAT --to "內部實際提供服務的ip":"實際提供服務的端口" iptables -t nat -A POSTROUTING -d "內部實際提供服務的ip"-p tcp --dport "實際提供服務的端口" -j SNAT --to-source "運行iptables機器的內網ip"

相關文章
相關標籤/搜索