使用iptables转发ssh

我发现了几个关于如何做的教程,但没有得到它们的工作:/

我的设置:

防火墙 – 可从networking访问 – eth0:xxx.xxx.xxx.xxx(公共IP) – eth1:192.168.1.1

服务器 – 从FIREWALL可达 – eth0:192.168.1.5

因为我仍然希望能够连接到端口22上的防火墙,我想将端口2222上的传入连接转发到192.168.1.5:22。

ping和ssh从防火墙到SERVER的工作。 ping和ssh从服务器到防火墙的工作(尽pipelogin只允许与公共密钥和服务器不允许…)

ping和ssh从任何地方到防火墙工作。

IP转发已启用:

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

过帐我的iptables规则没有太大的意义,因为没有任何规则的工作(使用PREROUTING,POSTROUTING,FORWARD …),没有其他规则。

是的,我的防火墙不会阻塞任何东西。 但这不是关于安全(还)。

我尝试了我在第一页中find的所有内容: https : //www.google.de/search?q=iptables+forward+ssh

有什么build议么?

问候,延斯

UPDATE下面是使用Khaled的iptables命令后tcpdump -n -i any的输出:

 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,并向我的主页-IP留下SYN,ACK。 我认为有错误。 ACK应该发送到防火墙比被伪装,因为在离开包的源IP /端口现在是192.168.1.5:22。 没有办法,这到达我的笔记本电脑在NAT后面……还是有办法吗?

如果允许stream量通过防火墙并启用了IP转发,则只需要一个NAT规则在端口2222上转发SSHstream量。像这样的一个应该完成这项工作:

 $ iptables -t nat -A PREROUTING -d xxxx -p tcp --dport 2222 -j DNAT --to-destination 192.168.1.5:22 

更新:

networking嗅探器是你的朋友debugging这样的问题。 您可以在防火墙机器上运行tcpdump,看看是否可以捕获请求,同样的请求应该离开防火墙机器。