我有一台 Ubuntu 14 Server 主机。我可以 ping 和 HTTP 到外部服务器,但无法 SMTP 到它。
执行操作host mail.domain.com
返回正确的外部地址,因此 DNS 正常运行。执行操作ping mail.domain.com
显示我们已成功访问服务器。执行操作显示telnet mail.domain.com 80
我收到了预期的 400 错误。执行操作curl
还显示预期的数据。
但是,执行 atelnet mail.domain.com 25
会给我一个telnet: Unable to connect to remote host: Connection refused
。执行 atraceroute mail.domain.com
表明我大概在 Ubuntu 服务器之外经过了几次跳跃,穿过了一些 Comcast 节点,但随后失败了?
1 <hidden>
2 <hidden>
3 <hidden>
4 pos-3-15-0-0-cr01.56marietta.ga.ibone.comcast.net (68.86.91.221) 17.061 ms pos-0-6-0-0-cr01.miami.fl.ibone.comcast.net (68.86.95.57) 11.345 ms pos-3-15-0-0-cr01.56marietta.ga.ibone.comcast.net (68.86.91.221) 17.052 ms
5 he-0-11-0-1-pe04.56marietta.ga.ibone.comcast.net (68.86.89.94) 15.382 ms 15.381 ms be-15-pe02.nota.fl.ibone.comcast.net (68.86.83.146) 8.659 ms
6 65.124.97.177 (65.124.97.177) 50.463 ms 49.446 ms 49.418 ms
7 * * *
8 63.148.218.166 (63.148.218.166) 85.529 ms 75.366 ms 75.155 ms
9 216.197.122.66 (216.197.122.66) 83.499 ms 77.650 ms 77.689 ms
10 * * *
11 * * *
从本地网络上的另一个(Windows 7)框中,该 telnet 命令运行正常,并显示预期的 220 SMTP 消息。
1 <hidden>
2 <hidden>
3 <hidden>
4 10 ms 11 ms 19 ms pos-3-15-0-0-cr01.56marietta.ga.ibone.comcast.net [68.86.91.221]
5 8 ms 8 ms 8 ms be-12-pe02.nota.fl.ibone.comcast.net [68.86.82.121]
6 48 ms 48 ms 53 ms nap-edge-04.inet.qwest.net [65.122.166.77]
7 * * * Request timed out.
8 75 ms 73 ms 75 ms 63.148.218.166
9 75 ms 75 ms 75 ms 216.197.122.66
10 75 ms 70 ms 70 ms 216.119.120.174
11 76 ms 76 ms 76 ms mail.domain.com
步骤 1-3 显示相同的数据。有什么建议吗?为什么来自一个盒子的数据包的路由方式与来自同一网络的另一个盒子的数据包的路由方式不同?
答案1
鉴于这是公司的情况,最可能的罪魁祸首是公司防火墙。与大多数公司设置一样,防火墙拒绝所有出站 TCP 端口 25 连接,但来自指定机器的连接除外。Windows 服务器可能就是其中之一,而 Ubuntu 服务器不是。
为了查明是否确实如此,请按敏感度递减的顺序执行以下任何诊断:
- 询问网络管理员。他们知道。
- 从 Ubuntu 服务器运行
tcptraceroute mail.domain.com 25
,找出哪个跳转拒绝建立 SMTP 连接。 - 将 Windows 服务器的 IP 地址分配给 Ubuntu 服务器。拔掉 Windows 服务器上的网线。
telnet mail.domain.com 25
从 Ubuntu 服务器尝试。最好不要告诉网络管理员。
通过这些诊断,您可以发现 TCP 连接是在公司内部、目的地还是两者之间被阻止。我认为这些情况发生的几率是 1G:10:1。无论哪种情况,您都需要与网络管理员沟通以解决问题,因此您最好立即采取第 1 步。
traceroute
请注意,当您已经可以到达目的地时,执行此操作是没有意义的ping
。 ping 成功证明目的地是活动的并且可以到达。 因此,中间的所有跃点都是可以到达的。 无需证明这一点。