我的网络拓扑如下所示:
互联网--------------------防火墙-------------------------服务器
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://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与它有关。
我的问题是我要忽略什么?这可能是我一直以来都想念的东西,一直盯着我。请客气,感谢您的帮助。