我找到了幾個關於如何做到這一點的教程,但沒有一個可以工作:/
我的設定:
防火牆 - 可從網際網路存取 - 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 並查看是否可以捕獲傳入的請求,並且相同的請求應該離開防火牆電腦。