配置iptables以将ssh连接端口转发到服务器

我的网络拓扑如下所示:

互联网--------------------防火墙-------------------------服务器

0.0.0.0/0-----172.8.45.140和192.168.1.1 ----- 192.168.1.2

I need to configure the Firewall using iptables to port forward incoming ssh connections from my remote client (on the Internet) to the server (on 192.168.1.2). Essentially executing ssh user@172.8.45.140 on the client to remote into the server on 192.168.1.2.

防火墙有两个可通信的NIC:

172.8.45.140(公共)在ens33接口上

192.168.1.1(专用)在接口ens37上

服务器的专用IP为192.168.1.2,并且已配置为使用用于54045的SSH端口,而不是默认端口22。

已将防火墙上的iptables配置为将链INPUT和FORWARD都更改为策略DROP,链OUTPUT仍具有默认策略ACCEPT。

Chain INPUT (policy DROP)

target     prot opt source               destination         

Chain FORWARD (policy DROP)

target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)

target     prot opt source               destination

我在网上看到了一些指南,详细介绍了如何将Web请求转发到防火墙后面的Web服务器,请参阅:

https://www.systutorials.com/port-forwarding-using-iptables/

https://www.digitalocean.com/community/tutorials/how-to-forward-ports-through-a-linux-gateway-with-iptables

https://wikileaks.org/ciav7p1/cms/page_16384684.html

按照这些教程,我已通过/etc/sysctl.conf文件在防火墙上启用了端口转发,并尝试了以下规则:

第一次尝试

INPUT和FORWARD策略为DROP,OUTPUT策略为ACCEPT。

sudo iptables -A PREROUTING -t nat -i ens33 -p tcp --dport 22 -j DNAT --to 192.168.1.2:54045

sudo iptables -A FORWARD -p tcp -d 192.168.1.2 --dport 54045 -j ACCEPT

结果:SSH操作超时。同样,疲惫的INPUT和FORWARD策略ACCEPT仍然会超时。

第二次尝试

INPUT和FORWARD策略为DROP,OUTPUT策略为ACCEPT。

sudo iptables -A FORWARD -i ens33 -o ens37 -p tcp --syn --dport 22 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -i ens33 -o ens37 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A FORWARD -i ens37 -o ens33 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

sudo iptables -t nat -A PREROUTING -i ens33 -p tcp --dport 54045 -j DNAT --to-destination 192.168.1.2

sudo iptables -t nat -A POSTROUTING -o ens37 -p tcp -d 192.168.1.2 -j SNAT --to-source 192.168.1.1

结果:SSH操作超时。也厌倦了INPUT和FORWARD策略的ACCEPT连接被拒绝。

第三次尝试

接受输入,转发和输出策略。

sudo iptables -t nat -A PREROUTING -p tcp --dport 22 -j DNAT --to-destination 192.168.34.131:22222

sudo iptables -t nat -A POSTROUTING -j MASQUERADE

结果:这确实有效,但是仅当FORWARD连锁店有接受ACCEPT的政策时。这是我唯一一次通过防火墙建立连接的情况。当我将FORWARD链更改为DROP时,SSH连接将再次超时。

我猜这可能与伪装有关,或者FORWARD policy DROP与它有关。

我的问题是我要忽略什么?这可能是我一直以来都想念的东西,一直盯着我。请客气,感谢您的帮助。