【问题标题】:Find ping response interface via java or linux通过java或linux查找ping响应接口
【发布时间】:2013-11-18 17:44:30
【问题描述】:

在多宿主计算机(多个网络接口,因此可能有多个 IP 地址)中,使用 Java / Linux 基础 ping 查找哪个接口实际返回 ping 响应,因为 ping 被发送到所有可用接口。

我想到的一种方法是使用 -I 并将源接口设置为通过一个接口强制 ping,但是在 3 个或更多混合 NIC 情况下,我们可能必须在正确的接口上处理许多 ping 到零.

有任何直接/更简单的建议吗?

【问题讨论】:

  • 您想从 Java 中了解哪个 NIC 响应了 ping 请求?
  • 嗯? -s? Linux ping-s 选项设置数据包大小。另外你从哪里ping?您到底想找出有关接口的什么信息(它是 IP?它是 MAC?)您尝试过什么?您的预期结果与实际结果有何不同?您的代码在哪里?你需要更具体。
  • @JasonC 我的错误,选项是-I。我正在尝试 ping -I eth1 google.com ,这基本上是通过接口路由 ping。
  • @PeterMmm 它需要在监控套件中。不必是 java 代码,它仍然可以通过脚本来处理。我知道在 Java 中进行 NIC 操作并不是一个好主意,但就是这样......
  • 仍然完全不清楚你在问什么。您是说您正在尝试查找负责与某个给定远程主机通信的本地接口吗?

标签: java linux ping network-interface


【解决方案1】:

如果您只想确定使用哪个接口到达给定目的地(来自https://serverfault.com/questions/188597/how-to-see-on-linux-what-network-interface-and-source-ip-address-is-used-for-a-r),请解析以下输出:

ip route get <destination_ip>

那里打印的界面和你ping&lt;destination_ip&gt;时收到ping响应的界面是一样的。

这仅适用于 Linux。可能有一个等效的 Windows 命令。我不知道。

【讨论】:

  • 刚刚在生产中测试了这个命令,它就像一个魅力。欠你一个啤酒哥们!!
【解决方案2】:

对于 Linux 上的脚本,如果在某个接口上收到 ping 请求,您可以应用 iptables 规则来记录日志。之后或在记录时,您可以处理日志文件以获取 NIC 信息。

http://www.thegeekstuff.com/2012/08/iptables-log-packets/

【讨论】:

  • 谢谢,如果只有一个 ip 可以 ping ,我认为 ip route get 可能会提供一个简单的解决方案。在多设备 ping 的情况下,您将有所帮助,我们可以在其中 ping 并最终获取日志文件并分析所有...
猜你喜欢
  • 2023-03-11
  • 1970-01-01
  • 2012-11-29
  • 2014-05-13
  • 2021-04-19
  • 1970-01-01
  • 2014-02-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多