使用iptables轉送ssh

使用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 工作正常。從伺服器到防火牆的 ping 和 ssh 也可以工作(儘管僅允許使用公鑰登入並且不允許伺服器...)

從任何地方 ping 和 ssh 到防火牆都有效。

啟用IP轉送:

# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

發布我的 iptables 規則沒有多大意義,因為沒有任何規則起作用(使用 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 用戶端多次嘗試連線時,這兩行會重複幾次。但沒有任何答案。

第二次更新 伺服器(192.168.1.5)的路由是這裡。我剛剛添加了一條路線

public-firewall-ip  255.255.255.255      192.168.1.1     192.168.1.5       1

但這沒有效果。在伺服器上運行Win XP並安裝了cygwin的sshd。我之前沒有提到這一點,因為從防火牆到伺服器的 ssh 工作得很好。但說到路由我覺得Windows有些限制。

現在我正在伺服器上安裝 Wireshark,並將在幾分鐘內貼上結果。

在伺服器上追蹤 伺服器上的追蹤顯示連接埠 22 上有一個到達的 SYN,並且有一個離開的 SYN,ACK 到我的 home-ip。我認為有錯誤。 ACK 應該發送到防火牆而不是偽裝,因為在離開套件中,來源 IP/連接埠現在是 192.168.1.5:22。這不可能到達我家中 NAT 後面的筆記型電腦...或者有辦法嗎?

答案1

如果您允許流量通過防火牆並啟用了 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 並查看是否可以捕獲傳入的請求,並且相同的請求應該離開防火牆電腦。

相關內容