两台用交叉线连接的计算机无法互相 ping 通:linux

两台用交叉线连接的计算机无法互相 ping 通:linux

我已经为此工作了一整天。我有 2 台 Manjaro/Arch 电脑 - 一台较旧的工作站 A 和一台笔记本电脑 B。A 工作时没有常规网络连接,我将每周通过交叉连接我的笔记本电脑以卸载数据。A通过 GUI 中的 NetworkManager 配置文件192.168.0.1/24设置了静态 IP netctl,B 通过该配置文件设置了 IP 192.168.0.10/24。对于 A,主板以太网端口似乎不起作用,我安装了带有链接指示灯的 PCI NIC。我尝试使用交叉电缆连接 A 和 B。该电缆在家中使用同一台笔记本电脑和 RaspberryPi 成功工作。我也对交叉电缆进行了电缆测试,一切正常。但在工作中,两台计算机都无法 ping 对方,错误是:

# ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
From 192.168.0.10 icmp_seq=1 Destination Host Unreachable
From 192.168.0.10 icmp_seq=2 Destination Host Unreachable

笔记本电脑有手动设置的 IP:

 enp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.10  netmask 255.255.255.0  broadcast 192.168.0.255
        ether f0:76:1c:b9:b8:e6  txqueuelen 1000  (Ethernet)
        RX packets 853896  bytes 917175985 (874.6 MiB)
        RX errors 0  dropped 65  overruns 0  frame 0
        TX packets 378812  bytes 51523006 (49.1 MiB)
        TX errors 8  dropped 47 overruns 0  carrier 0  collisions 0

工作站 A 也是如此,只是地址为192.168.0.1;网络掩码相同。工作站 A 上的网卡的链接灯亮起;ethtoolA 上的输出显示检测到链接。但是没有 ping/连接,B 上没有检测到链接(来自 和 的消息NetworkManager输出ethtoolmii-tool到底出了什么问题?

根据评论更新: A 和 B 上的网络掩码相同。我使用以下方法检查了接口:lshw -class network -businfo- 我已在 A 上配置了正确的接口 - 该接口属于已安装的 Realtek PCI 卡。两个地址都是静态的,网络掩码相同。卡符合 10/100 标准,这已由和255.255.255.0确认。ethtoolmii-tool

B上的IP路由显示输出

[root@zeniba ~]# ip route show
default via 192.168.0.1 dev enp3s0 proto static metric 100 
192.168.0.0/24 dev enp3s0 proto kernel scope link src 192.168.0.10 metric 100 

和 A 类似,只是地址不同。

arp在非连接状态下不显示另一台机器的硬件地址,我想,如果至少有一台机器认为没有链接,这是有道理的。

下次更新:几乎解决:我随后发现计算机 ANetworkManager仍在运行,尽管我之前已将其禁用。我阅读了相关内容,并将NetworkManagerNetworkManager-dispatcher服务都设置为masked- 这应该可以完全阻止 NM 加载。下次重启时,一切都运行正常;通过交叉立即建立连接,我可以按预期获取数据,并且重启 5 次后仍然没有问题。我松了一口气,将计算机 A 放在生产测试站点上。然而,当天晚些时候,当我尝试使用笔记本电脑 BI 连接到它时,再次遇到了同样的问题。A 上的以太网链路灯亮起,但 B 没有显示链路/电缆断开消息。我会尝试查看它是否以某种奇怪的方式NetworkManager再次恢复了活力,但这可能是硬件故障?还是任何其他干扰的网络服务netctl

非常感谢大家的评论和建议。他们帮助我走上了正确的道路。我会发布我找到的答案。

答案1

我遇到了两个主要问题。

1)主要问题是网络管理器没有完全禁用- 这确实搞乱了我在 A 上的配置。在我解决这个问题之前,根本没有任何连接。我一禁用它mask(阅读有关systemd 的三个关闭级别)我明白了。两者曼扎罗关于设置静态 IP 的页面netctl提到您需要禁用 NetworkManager,但它们并没有明确说明,即使我最初在第二级禁用了它,某些服务仍可能会启动 NM。命令为:

 systemctl mask NetworkManager
 systemctl mask NetworkManager-dispatcher

2)然后我遇到了一个问题,有时此配置会神秘地停止工作- 即插入电缆并将笔记本电脑 B 的 NetworkManager 配置文件设置为静态 IP 不会产生任何结果。奇怪的是工作站 A 卡链接灯仍然亮着。由于在家里使用 RaspberryPis 总是有效,我认为这是工作站的一些旧硬件问题。我发现处理此问题的最佳方法是mii-tool -w enp3s0在笔记本电脑上使用。这意味着监视特定以太网接口(在我的情况下是 enp3s0)的硬件级链接。当您插入/断开电缆时,它会立即更改。ethtool似乎更强大,但我没有找到如此方便的链接监控ethtool。因此,如果mii-tool显示链接,您查看笔记本电脑接口是否与正确的配置文件相关联,然后您可以使用进行检查ping

3)硬件相关问题 - 因此,作为一名业余爱好者,我有很多事情要怀疑,这使得这个过程更加复杂。因此,我将在这里列出一些我认为特别有用的信息:

一是lshw -class network -businfo- 它为您提供 PCI 地址、设备名称和说明。因此,在具有多个接口的机器上,您可以确保您netctl或其他 CLI 配置引用的是正确的卡。

关于 IP v4 配置。由于您只在同一子网上设置了 2 台计算机,因此无需设置网关。但是 NetworkManager GUI 不允许您创建没有网关的配置文件。您可以直接将另一台计算机的地址放在那里,也可以将其0.0.0.0作为网关。

以太网卡问题 - 奇怪的 MAC 地址

我不知道怎么回事,但问题的一部分出在我的 Realtek 以太网卡上。由于某些不可知的原因,每次启动计算机时 MAC 地址都略有不同,而且大部分都是 fff 之类的ff:ff:ff:7f:ff:ff。当我在日志中看到 IP 地址分配失败时,这真是令人沮丧。我无法通过在启动时尝试为其分配不同的 MAC 地址来解决这个问题。这个问题解决了,我买了另一张便宜的二手以太网卡,似乎每次都能得到正确的 MAC 地址。

笔记本电脑端问题-断开连接后无界面

我发现有时我的 manjaro 笔记本电脑在拔掉电缆然后重新插入后无法看到网络接口。因此命令mii-tool -w enp3s0会抱怨没有这样的接口。不过,这很容易解决,只需让笔记本电脑进入睡眠状态然后再次唤醒它。mii-tool会报告链接,然后ping按预期工作。

相关内容