【发布时间】:2022-03-24 02:47:38
【问题描述】:
我有一台 RHEL 客户端机器,它必须在启动时从 RHEL 服务器机器获取数据。
服务器的 IP 地址是已知的。 客户端机器必须使用的网关是已知的。 客户端机器有多个网络接口。所有人可能不会同时启动,或者所有人都可能连接到不同的网络。 我需要确定必须使用哪个网络接口。
我知道这可以使用“ping”或“traceroute”轻松完成。 问题是 ICMP 协议在客户端和服务器端都被禁用。 出于安全考虑,ICMP 已被禁用。 ICMP 可能在机器级别被禁用,也可能在整个网络中被禁用。
换句话说,如果 ICMP 被禁用,我需要找到一种方法,如果两个 ip 正在通信,我可以给我。
另外,我必须在我用 bash 编写的脚本中使用这个结果来设置客户端机器的网络。
实现这一目标的最佳方法是什么?
【问题讨论】:
-
您确定需要知道将要使用的网卡吗?内核通常很擅长为您解决这个问题。您总是可以尝试使用
ip route get <dest IP>询问内核,看看它如何尝试将数据包发送到目标 IP——尽管如果路由被破坏,数据包可能无法成功,但这就是内核会尝试的无论如何做 -
感谢您的回复。我必须知道接口的意思是我有接口列表,但我必须找出哪个接口连接到我必须使用的网关,而不使用 ICMP/ping。找到可以使用的接口后,我必须手动设置网络。
-
啊,所以你没有DHCP,你需要弄清楚哪些网卡应该在给定的空间中手动分配地址?如果是这样,您可以尝试运行
tcpdump并查看哪个 NIC 看到给定空间中的流量,但如果它是一个安静的网络,您可能不会很快找到东西。您需要以编程方式执行此操作吗? (如果没有,不同的 Stack Exchange 网络可能更适合这个问题。)
标签: linux bash networking