iptables實現端口轉發
實現使用防火墻9898端口訪問內網front主機的22端口(ssh連接)
1. 防火墻配置(lb01)
# 配置iptables
# 這條命令的作用是將所有目的地為192.168.100.155且目標端口為19898的TCP數據包的目標IP地址改為10.0.0.148,并將目標端口改為22
iptables -t nat -A PREROUTING -d 192.168.100.155 -p tcp --dport 19898 -j DNAT --to-destination 10.0.0.148:22# 注意!需要配置一條出來的SNAT
# 沒有這一條SNAT,進出流量的端口是不匹配的,因為iptables沒有會話保持功能,是包匹配的
iptables -t nat -A POSTROUTING -d 192.168.100.148 -p tcp --dport 22 -j SNAT --to-source 192.168.100.155:19898
- iptables:這是用來設置、維護和檢查Linux內核防火墻的命令行工具。
- -t nat:指定要操作的是nat表。iptables有多個表,每個表包含不同的鏈,nat表用于處理網絡地址轉換。
- -A PREROUTING:-A表示向鏈中添加一條規則,PREROUTING鏈在所有數據包進入本機之前應用,這是設置DNAT的理想位置。
- -d 192.168.100.155:指定目標IP地址為192.168.100.155,即只有目的地址為這個IP地址的數據包才會受到這條規則的影響。
- -p tcp:指定協議為TCP。
- –dport 9898:指定目標端口為9898,即只有目標端口為9898的TCP數據包才會受到這條規則的影響。
- -j DNAT:-j表示跳轉目標,DNAT表示執行目標地址轉換。
- –to-destination 10.0.0.148:指定轉換后的目標IP地址為10.0.0.148。這意味著
所有目的地為192.168.100.155且目標端口為9898的TCP數據包
,在經過NAT轉換后,它們的目標IP地址都會被改為10.0.0.148:22
。
2. 內網服務器配置(front)
無需配置
測試
-
未配置策略
ssh連接請求超時
-
已配置策略
ssh正常訪問成功
需要注意的是,必須配置回程的SNAT,因為iptables沒有會話保持功能,是包過濾防火墻。若不配置,會導致來回的端口不一致而被丟棄。