使用 iptables 轉發 ssh
我找到了幾個關於如何做到這一點的教程,但沒有一個可以工作:/
我的設置:
防火牆 - 可從網際網路訪問 - eth0:xxx.xxx.xxx.xxx(公共 ip) - eth1:192.168.1.1
伺服器 - 可從防火牆訪問 - eth0:192.168.1.5
因為我仍然希望能夠在埠 22 上連接到防火牆,所以我想將埠 2222 上的傳入連接轉發到 192.168.1.5:22。
從防火牆到伺服器的 ping 和 ssh 有效。從 SERVER 到 FIREWALL 的 ping 和 ssh 也可以正常工作(儘管只允許使用公鑰登錄並且不允許 SERVER…)
從任何地方 ping 和 ssh 到 FIREWALL 工作。
啟用 IP 轉發:
# sysctl net.ipv4.ip_forward net.ipv4.ip_forward = 1
發布我的 iptables-rules 沒有多大意義,因為沒有任何規則起作用(使用 PREROUTING、POSTROUTING、FORWARD ……)並且沒有其他規則。
是的,我的防火牆不會阻止任何東西。但這與安全性無關(還)。
我嘗試了我在第一頁找到的所有內容: https ://www.google.de/search?q=iptables+forward+ssh
有什麼建議麼?
問候,延斯
更新 這是
tcpdump -n -i any
使用 Khaled 的 iptables 命令後的輸出:15:42:33.852718 IP home-ip.56008 > firewall-public-ip.2222: Flags [S], seq 1141341765, win 14600, options [mss 1460,sackOK,TS val 871214 ecr 0,nop,wscale 7], length 0 15:42:33.852752 IP home-ip.56008 > 192.168.1.5.22: Flags [S], seq 1141341765, win 14600, options [mss 1460,sackOK,TS val 871214 ecr 0,nop,wscale 7], length 0
我猜想在第二行會有類似… IP 192.168.1.1.45678 > 192.168.1.5.22 …
當我的 ssh-client 嘗試多次連接時,這兩行重複了幾次。但沒有任何答案。
第二次更新 伺服器(192.168.1.5)的路由在這裡。我剛剛添加了一條路線
public-firewall-ip 255.255.255.255 192.168.1.1 192.168.1.5 1
但這沒有效果。在伺服器上執行安裝了 cygwin 的 sshd 的 Win XP。我之前沒有提到這一點,因為從防火牆到伺服器的 ssh 工作得很好。但是在路由方面,我覺得 Windows 有點受限。
現在我正在伺服器上安裝 Wireshark,並將在幾分鐘內粘貼結果。
伺服器 上的跟踪 伺服器上的跟踪顯示埠 22 上的一個到達 SYN 和一個離開 SYN,ACK 到我的家庭 IP。我認為有錯誤。ACK 應該被發送到防火牆而不是被偽裝,因為在離開包中源 IP/埠現在是 192.168.1.5:22。這不可能在 NAT 後面到達我家中的筆記型電腦……還是有辦法?
如果您允許流量通過防火牆並啟用 IP 轉發,您只需要一個 NAT 規則來轉發埠 2222 上的 SSH 流量。這樣的一個應該可以完成工作:
$ iptables -t nat -A PREROUTING -d x.x.x.x -p tcp --dport 2222 -j DNAT --to-destination 192.168.1.5:22
更新:
調試此類問題時,網路嗅探器是您的朋友。您可以在防火牆機器上執行 tcpdump 並查看是否可以擷取到來的請求,並且相同的請求應該離開防火牆機器。