我找到了几个关于如何操作的教程,但是都没有用 :/
我的设置:
防火墙 - 可从互联网访问 - 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
有什么建议么?
问候,Jens
更新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 后面的笔记本电脑……或者有办法吗?
答案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,看看是否可以捕获传入的请求,并且相同的请求应该离开防火墙机器。