1. 程式人生 > >linux下用iptables做本機埠轉發方法

linux下用iptables做本機埠轉發方法

linux下用iptables做本機埠轉發方法

轉載 2015年01月15日 11:06:02

  • 33450

一 :從一臺機到另一臺機埠轉發

啟用網絡卡轉發功能 #echo 1 > /proc/sys/net/ipv4/ip_forward舉例:從192.168.0.132:21521(新埠)訪問192.168.0.211:1521埠

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

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 MASQUERADEb.

不同埠轉發(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:1521iptables -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。  

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

概述:公司有一些核心MYSQL伺服器位於核心機房的內網段,作為運維人員,經常需要去連線這些伺服器,因無法直接通過外網訪問,給管理造成了不便。

思路:雖然解決此問題的方法及思路有很多,但當下想使用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:3306iptables -t nat -A POSTROUTING -d 192.168.1.2 -p tcp --dport 3306 -j SNAT --to 192.168.1.1

允許伺服器的IP轉發功能:

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.2S1 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"