使用以太网电缆连接两台本地计算机时出现问题

使用以太网电缆连接两台本地计算机时出现问题

我似乎无法ping从连接(PC1 到 PC2 直接通过 CAT5 工厂电缆连接)获得 IP 地址,但arping效果很好。说明:IPv4 不起作用,尽管数据链路存在且起作用,我阅读了 ARP 的维基百科文章,我知道其中的区别。我也试过,但ping -I eth0 addr没有成功。

步骤如下:通过以太网将 PC1 连接到 PC2;udhcpd在 PC1 上启动;udhcpc在 PC2 上启动;在 PC1 上确认 dhcp OFFER 和 ACK;在 PC2 上确认地址;在任一方向 ping(PC1:100% 数据包丢失,PC2:网络不可达)注意:手动设置 IP 会导致上述情况,没有 dhcp。
注意:udhcpd 设置。

# ip addr add 192.168.1.1/32|24 # tried both 24&32 for subnet
# /etc/udhcpd.conf
interface eth0  
lease_file /var/lib/udhcpd/udhcpd.leases  
start 192.168.1.2  
end 192.168.1.255 
# udhcpd -f -I 192.168.1.1 

我不确定哪里出了问题,因为之前这个方法已经奏效了,似乎 udhcpc/d 没有分配路由,我目前正在研究这个问题。我还阅读了有关网络和 ad-hoc 的 Arch wiki,但由于我在 PC1 上使用 Artix,在 PC2 上使用 busybox/Linux,所以它只略微适用,我还阅读了没有 systemd 的文章和手册,我不记得引用过它们。

我之所以尝试,是想让 PC2 成为 NAS/IP-USB 扩展集线器/我想到的其他东西

# routel 
Dst             Gateway         Prefsrc         Protocol Scope   Dev              Table
default         192.168.114.214 192.168.114.220 dhcp             usb0             
127.0.0.0/8     127.0.0.1                                        lo               
192.168.1.0/24                  192.168.1.1     kernel   link    eth0             
192.168.114.0/24                 192.168.114.220 dhcp     link    usb0             
127.0.0.0/8                     127.0.0.1       kernel   host    lo               local
127.0.0.1                       127.0.0.1       kernel   host    lo               local
127.255.255.255                 127.0.0.1       kernel   link    lo               local
192.168.1.1                     192.168.1.1     kernel   host    eth0             local
192.168.1.255                   192.168.1.1     kernel   link    eth0             local
192.168.114.220                 192.168.114.220 kernel   host    usb0             local
192.168.114.255                 192.168.114.220 kernel   link    usb0             local

在 PC1 上,而 PC2route为空。


旧笔记ip aPC1 上显示预期的 192.168.1.1/24,但在 PC2 上却是 192.168.1.150/0;如果我没看错的话,子网是不同的:https://superuser.com/a/1724094/1719820

笔记:新程序。
启动后两个都机器进入 Minimal Linux Live(以前是 busybox/Linux)我尝试在 PC1 上只运行 dhcp 服务器,在 PC2 上只运行 dhcp 客户端,使用默认设置,结果 PC1 的 IP192.168.0.1/32和 PC2 的 IP192.168.0.20/32仍然没有路由,并且ping双方都导致network unreachable手动 IP 分配不起作用。

答案1

该问题源于没有完全理解当前的问题(IPv4 和网络堆栈)并且错过了重要但容易被忽视的线索(mml 的 udhcpc 脚本在启动时通知缺少网络掩码/网关)。

实际的问题是,udhcpd 虽然执行了 DHCP 部分,但由于未知的原因,它没有执行网络掩码/网关部分,或者我缺少关键的配置。

解决方案也很简单:设置 IP/NetMask/GateWay。
通过ipiproute2 包

# ip set link 'iface' up
# ip addr add 'local'/'netmask' dev 'iface'
# ip route add 'remote'/'netmask' via 'local' dev 'iface'
# ping 'remote'

解释变量:
iface- 本地机器的接口
local- 本地机器的 IP 地址(本地,即您正在输入命令的机器)
netmask- 不言自明,应该在两侧相同,写为 [0-32] 或以 64 为增量的 ip,即 255.255.255.128,尽管通常以 256 为增量
remote- 远程机器的 IP 地址(远程,即您想要连接到本地机器的机器,反之亦然),
添加路由时请确保您的远程机器已分配其 ip

答案2

您描述的一切都非常合乎逻辑。我会详细解释发生了什么。

我似乎无法从连接(PC1 到 PC2 直接通过 CAT5 工厂电缆连接)获得 ping 信息,但 arping 可以正常进行。

这种行为完全正常,是一个使用协议(层)arping的命令ARP2 & 3)OSI model检查与同一子网中另一台计算机的连接。它不用于IPv4 / IPv6通信。所以对我来说,这是合乎逻辑的。

但是,ping协议使用 ICMP(层3)OSI model需要正确的路线表双方和正确的IPv4 / IPv6地址(在您的情况下,仅限 IPv4)。

(PC1:100%数据包丢失,PC2:网络不可达)

PC2由于没有任何路由,这种行为完全正常。数据包无法传输,一旦到达就会被阻止PC2

PC1 上的 ip a 显示预期的 192.168.1.1/24,但在 PC2 上却是 192.168.1.150/0

这是你的问题PC2IPv4 是无效的: 192.168.1.150/0。 不能使用IPv4/0子网掩码IPv4 procotol,最小值为/1。此外,两台机器不在同一网络中。要进行通信,这些机器需要路由器(假设/0正确)。此配置无法进行 ping。

PC2您的 存在问题IPv4,这也破坏了 上的路由表。您需要检查DHCP为 分配 IP 的服务器配置PC2。目标是在两台机器中都使用相同的掩码,因此 :/24255.255.255.0。完成后,您将能够 ping 并双向通信(您只需要注意内部防火墙(Windows Firewall/iptables规则等...)。

您也可以尝试修复 IP,PC2而不是使用DHCP协议。它应该也能完美运行。

请注意,将两台DHCP服务器放在同一个网络中需要更多的操作和设置 - 您可以参考此帖子这里。您可以只放置一个udhcpdPC1使用它来为子网中的所有机器(包括它自己)分配 IP。

相关内容