日常Iptables 端口轉發
- 需求:公司是局域網絡,通過一個外網ip,進行互聯網的訪問。公司的雲平台服務器在公網中,虛擬化平台中有一台內部服務器,用於公司某部門的使用,上面運行www 服務,ssh端口,方便平時上傳網站文件。現領導要求將此內部服務器交接給此部門,並只讓其在公司內部訪問,外面的公網是拒絕訪問的。
結構圖:
2.解決方法:通過linux 服務器的iptables,利用端口轉發,在公司內部通過A機器(或者說A代表某個部門),使其訪問到B機器上的特定連接轉發至內部機器C上。由於機房服務器只開放了特定端口,所以,利用B機器的9090端口和80端口分別轉發到內部機器C上的22端口和80端口。
修改防火牆之前,需要先修改系統內核,開啟ipv4轉發功能:vim /etc/sysconfig,修改以下值 ipv4_net_forward = 1 ,之后運行 sysctl -p 命令生效。
先備份一下防火牆的配置文件,之后編輯防火牆:vim /etc/sysconfig/iptables,追加以下規則(做轉發的四條規則必須寫在nat表中):
*nat :PREROUTING ACCEPT [888442:52703267] :POSTROUTING ACCEPT [712676:42810839] :OUTPUT ACCEPT [712676:42810839] -A PREROUTING -s 223.1.1.2 -d 101.1.1.3 -p tcp -m tcp --dport 9090 -j DNAT --to-destination 10.8.88.88:22 -A POSTROUTING -d 10.8.88.88 -p tcp -m tcp --dport 22 -j SNAT --to-source 10.8.88.77 -A PREROUTING -s 223.1.1.2 -d 101.1.1.3 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.8.88.88:80 -A POSTROUTING -d 10.8.88.88 -p tcp -m tcp --dport 80 -j SNAT --to-source 10.8.88.77
注:PREROUTING 來自223.1.1.2 且目標是 101.1.1.3:9090端口的鏈接轉發到 10.8.88.88:22端口上
注:POSTROUTING 回路的包,所有從內部機器C的22端口返回的包轉發到B機器上的eth1網卡上
同上:
*filter -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -s 223.1.1.2 -p tcp -m tcp --dport 9090 -j ACCEPT -A INPUT -s 223.1.1.2 -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited
3.修改完成后,保存配置。重啟iptables服務,現在可以測試一下。