【问题标题】:How can I see if a machine tried to connect to my (linux) server or not? [closed]如何查看机器是否尝试连接到我的(linux)服务器? [关闭]
【发布时间】:2011-10-30 21:27:59
【问题描述】:

我正在尝试连接到具有多个侦听端口的 linux 服务器,但我的连接失败(根据我的客户端),因为“主机已关闭”......但是,我知道主机已启动。

那么是否有脚本或日志文件我可以更改/检查以查看服务器端被拒绝的连接...更好的是,请参阅为什么连接失败?

一般来说,我发现连接失败可能会产生误导或模棱两可的错误消息......所以我认为这将一劳永逸地解决我的连接调试活动,这样我就可以直接测试端点是否是拒绝实际服务器端的连接,而不是根据客户端错误消息进行猜测。

顺便说一句,这与 hadoop 有关。

【问题讨论】:

  • 您是否尝试过使用 tcpdump 等数据包嗅探器?

标签: java linux client network-connection


【解决方案1】:

使用 tcpdump。

这个网站有很多例子,其中一个可以满足你的需要 -> http://linux.byexamples.com/archives/283/simple-usage-of-tcpdump/

我会开始:

tcpdump -i eth0 tcp port XXXX

【讨论】:

  • 我收到“tcpdump -w test.pcap -i eth10 port 50070”的语法错误...?
  • @jayunit100。您应该在侦听服务器上运行此命令。看着你的命令,我看到了 2 个异常值。 eth10 接口(通常是 eth0 或 eth1,如果您在网络网关服务器上进行测试,您可能有更高编号的接口)。此外,端口号异常高。基本上它在DYNAMIC 范围内,通常是操作系统分配给客户端连接的端口。
  • "操作系统分配给客户端连接的端口。" - - 这意味着什么 ?谢谢...这对我有帮助....
  • @jayunit100。好的,这里是 10 行或更少的 TCP。客户端和服务器都通过 IP 地址和 PORT 对进行通信。服务器在众所周知的端口上建立侦听服务(例如 HTTP 为 80,SMTP 为 25,HTTPS 为 443 等)。但是客户端也需要一个端口来接收来自服务器的回复。当客户端与服务器建立连接时,此端口由底层 TCP 堆栈分配。用于这些目的的端口号通常是从这个范围 [49152–65535] 分配的
  • @jayunit100。在我看来,您需要阅读有关网络的书。 O'Reilly 的 Craig Hunt 所著的《TCP/IP 网络管理,第三版》是一个好的开始 -> shop.oreilly.com/product/9780596002978.do。至少阅读前 3 章,您甚至可以通过上面的链接浏览它们。
【解决方案2】:

这听起来像是防火墙问题。如果您使用的是 Ubuntu,请运行 sudo ufw disable 并尝试再次连接。如果可以连接,则再次启用 ufw:sudo ufw enable 并添加规则以允许在所需端口上进行传入连接。

来源https://help.ubuntu.com/community/UFW

【讨论】:

  • 试过了。没用,但很好的建议。
【解决方案3】:

试试iptables,例如:

iptables -I INPUT -m state --state NEW -j LOG --log-prefix "New Connection: "
iptables -I OUTPUT -m state --state NEW -j LOG --log-prefix "New Connection: "

然后查看服务器日志 - 从 shell 调用“dmesg”。

【讨论】:

  • 谢谢。 iptables 在做什么?它只是简单地查看每个网络接口上的所有内容吗?
猜你喜欢
  • 2017-05-06
  • 2013-09-19
  • 1970-01-01
  • 2020-01-29
  • 2013-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多