外部SSH连接失败

我玩了一天的系统pipe理员,站起来一个新的Ubuntu 12.04盒子。 该盒有2个网卡 – 1个用于内部连接,一个用于外部。 我能够使用内部IP(ssh [email protected])ssh到框中,但不能通过外部名称或IP。 最终,我得到了所有非常熟悉的“操作超时”消息。

信息可能会或可能不会有用的经验丰富的pipe理员:

  • 我的iptables没有什么特别的(默认内容)
  • 我的sshd_config有一个盒子,听取每个地方的一切
  • Telnet也失败( telnet 172.XXX.XXX.XXX 22
  • 当我尝试连接时,我的/var/log/auth.log/var/log/syslog文件甚至不闪烁。
  • 一个详细的tcpdump似乎表明请求正在把它交给机器。

     $ sudo tcpdump -vvv -s 1600 -i any port 22 | grep "172.XXX.XXX.XXX" 71.XXX.XXX.XXX.43784 > 172.XXX.XXX.XXX.ssh: Flags [S], cksum 0xde3e (correct), seq 613836537, win 65535, options [mss 1380,nop,wscale 4,nop,nop,TS val 806048442 ecr 0,sackOK,eol], length 0 

在这一点上,我已经超出了我的头脑,只有Google让我走了这么远。 我不知道还有什么要尝试的。 如果任何人都可以提供任何见解,额外的debugging方法或以任何其他方式阐明这一点,我非常感谢。

目前的iptables

 $ sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination 

netstat的

请注意,我目前通过内部IP将SSH连接到了该框中。

 $ sudo netstat -pant |grep ":22" tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 10691/sshd tcp 0 0 172.XXX.XXX.XXX:22 172.XXX.XXX.105:49948 ESTABLISHED 10055/sshd: me tcp6 0 0 :::22 :::* LISTEN 10691/sshd 

请求路由

这是外部请求如何从开始到结束的高层次概述:

  1. ssh [email protected]
  2. my.domain.netparsing为12.XXX.XXX.37
  3. 12.XXX.XXX.37将请求传递给外部路由器
  4. 路由器转发到防火墙的东西
  5. 防火墙将SSH请求转发给172.XXX.XXX.XXX(问题中的框)
  6. 172.XXX.XXX.XXX显然决定它不喜欢传入的请求,并忽略它。

当然,最后一步就是我想要解决的问题。 🙂

谢谢。

你可以使用route | grep default route | grep default在VM上find你的默认网关。 如果不是路由器,则从端口转发端口是问题的根源 – VM将数据包发送回默认网关而不是端口转发路由器。