Ubuntu環境下的iptables的埠轉發配置例項
開啟轉發開關
要讓iptables的埠轉發生效,首先需要開啟轉發開關
方法一:臨時開啟,重啟後失效
$sudo su
#echo 1 >/proc/sys/net/ipv4/ip_forward
方法二:永久開啟,重啟依然有效
編輯/etc/sysctl.conf檔案,將net.ipv4.ip_forward=1前面的#註釋去掉,儲存檔案,然後執行sudo sysctl -p使其生效
典型使用場景舉例
場景一:目標機的22埠外網沒有開啟,通過本地埠轉發實現通過其他埠訪問ssh的22埠
案例:125.69.67.213機器的22埠未對外開放,但開放了3000~4000之間的埠,因此通過3000埠轉發到22實現ssh登入
sudo iptables -t nat -A PREROUTING -p tcp -i eth0 -d 125.69.67.213 --dport 3000 -j DNAT --to 125.69.67.213:22
這個屬於本機端A埠轉發到本機的B埠
場景二:將內網的22埠對映到外網的一個埠,實現SSH直接登入,不用跳轉
案例:192.168.2.61為外網機,192.168.2.70為內網機,如果不做對映,需要先登入到61,再登入到70.做如下對映之後,可直接通過外網機的3003登入到內網機
sudo iptables -t nat -A PREROUTING -d 192.168.2.61 -p tcp --dport 3003 -j DNAT --to-destination 192.168.2.70:22
sudo iptables -t nat -A POSTROUTING -d 192.168.2.70 -p tcp --dport 22 -j SNAT --to 192.168.2.61
注:(1) 本例中也可以通過SecureCRT的自動登入實現。
場景三:在外網直接訪問內網的MySQL資料庫
案例:很多時候資料庫在內網機,外網不能直接訪問,但做運維的時候可能需要通過圖形介面工具直接連上去。做埠對映就可以解決這個問題。例如:將外網機192.168.2.61的3001埠轉發到內網機192.168.2.70的MySQL的3306埠
sudo iptables -t nat -A PREROUTING -d 192.168.2.61 -p tcp --dport 3001 -j DNAT --to-destination 192.168.2.70:3306
sudo iptables -t nat -A POSTROUTING -d 192.168.2.70 -p tcp --dport 3306 -j SNAT --to 192.168.2.61
iptables其他常見操作
檢視當前iptables的所有規則
sudo iptables -L
或者
sudo iptables-save
iptables規則儲存到檔案
sudo sh -c "iptables-save > /etc/iptables.rules"
從檔案恢復iptables的規則
sudo iptables-restore /etc/iptables.rules
開機啟動載入iptables規則
注:配置的規則系統預設重啟後就失效,因此做開機啟動時載入iptables的配置也有必要。
在/etc/network/interfaces的末尾新增如下一行:
pre-up iptables-restore < /etc/iptables.rules
如果想在關機的時候自動儲存修改過的iptables規則,可新增如下行
post-down iptables-save > /etc/iptables.up.rules
作者:gobitan
來源:CSDN
原文:https://blog.csdn.net/gobitan/article/details/50696641
版權宣告:本文為博主原創文章,轉載請附上博文連結!