打開轉發開關
要讓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
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!