两个CentOS服务器之间的端口转发

我有两台服务器(都运行CentOS 5.5 64位)

一台服务器连接到一个公共networking,并有一个公共IP地址,我可以用它远程SSH进入。 另一台服务器通过专用networking连接到服务器1。

我想知道如何将服务器1上的端口(如20222)转发到服务器2上的端口22,以便我可以使用任何SSH客户端通过使用服务器1的公有IP和端口20222连接到服务器2。

服务器1的公网通过eth0接口连接,私网通过eth1连接

非常感谢。

问候,Kalpesh

你可以很容易地做到这一点创build一个SSH隧道:

ssh -L 20222:server_2_private_IP_address:22 server_1_public_IP_address 

你也可以添加到你的〜/ .ssh / config,如果你有一个:

 Host foo Hostname server_1_public_IP_address User ... ... LocalForward 20222 server_2_private_IP_address:22 

在启动一个ssh到server_1_public_IP_address之后,你应该能够使用一个新的ssh会话来启动server_2

 ssh -p 20222 localhost 

从来没有尝试过,但应该与任何SSH客户端,指向本地和20222。

并阅读

 man ssh 

所有这一切都在那里解释。

假设服务器1的外部地址为1.2.3.4,内部地址为10.0.0.1,服务器2的内部地址为10.0.0.2,并且没有现有的默认路由:

在服务器1上:

 iptables -t nat -A PREROUTING -p tcp --dport 20222 -i eth0 -j DNAT --to-destination 10.0.0.2:22 echo 1 > /proc/sys/net/ipv4/ip_forward 

在服务器2上:

 route add default gw 10.0.0.1 

这些设置都不是永久性的,也就是说,它们在重新启动后将无法存活。 如果他们工作,我们可以讨论如何使他们永久。

您也可以通过运行安装stone(tcp / udp开源隧道软件),然后以root身份运行以下命令

 wget http://www.gcd.org/sengoku/stone/stone-2.3e.tar.gz tar xzf ./stone-2.3e.tar.gz cd ./stone-2.3d-2.3.2.7 make linux cp ./stone /usr/bin/ cd ../ rm -Rf ./stone-2.3d-2.3.2.7 

然后用户运行以下命令

 stone -D server1:20222/tcp server2:22/tcp 

MadHatter拥有iptables的答案,如果你想要走这条路线。

对于迁移过程中的快速和脏redirect,我使用了redir

在服务器1上是这样的:

  redir --lport=20222 --caddr=$IP_OF_SERVER_2 --cport=22 

再次,这只是在前台运行,并将无法在重新启动,但这是一个方便的命令,我认为它属于这个讨论。