Ubuntu 20.04与BeagleBone Black直连P2P网络故障求助
问题背景
Ubuntu 20.04使用networkd,通过netplan固定eno2的IP为10.0.0.97/24;BeagleBone Black(BBB)通过/etc/network/interfaces.d/eth0配置网络。
正常场景
- 任意Windows设备与BBB可正常连接(证明BBB本身无问题)
- Ubuntu与BBB通过交换机可正常连接
- Ubuntu与Windows通过交换机或直连网线可正常连接
异常场景
Ubuntu与BBB通过直连网线或交叉网线直连时,链路始终无法建立:
- 执行
ip a显示eno2状态为NO-CARRIER - 执行
ethtool eno2显示link connected为false
当前netplan配置
network: version: 2 renderer: networkd ethernets: eno1: dhcp4: true optional: true eno2: addresses: - 10.0.0.97/24
注:eno1已正常连接公司内网并获取IP。
排查步骤
强制网卡协商参数
部分网卡直连时自动协商易失败,手动指定速率和双工模式:
Ubuntu端执行:sudo ethtool -s eno2 speed 100 duplex full autoneg off
BBB端对eth0执行同逻辑命令:sudo ethtool -s eth0 speed 100 duplex full autoneg off
重新插拔网线后,用ethtool eno2检查链路状态。验证BBB的eth0配置
确认BBB的eth0配置了同网段静态IP(如10.0.0.98/24),无DHCP冲突:
查看BBB配置文件:cat /etc/network/interfaces.d/eth0
确保配置包含:auto eth0 iface eth0 inet static address 10.0.0.98 netmask 255.255.255.0检查Ubuntu网卡硬件与日志
- 执行
dmesg | grep eno2查看内核日志,排查硬件错误、驱动加载异常 - 重启网卡:
sudo ip link set eno2 down && sudo ip link set eno2 up,再查看状态变化
- 执行
替换测试硬件
更换全新网线测试;临时将BBB的eth0连接到Ubuntu的eno1(断开内网),验证直连是否能建立,排除eno2端口硬件问题。调整netplan配置
给eno2添加optional: true,避免网卡等待链路导致初始化异常,修改后配置:network: version: 2 renderer: networkd ethernets: eno1: dhcp4: true optional: true eno2: addresses: - 10.0.0.97/24 optional: true执行
sudo netplan apply生效后测试直连。临时关闭防火墙
部分防火墙规则可能干扰链路检测:
Ubuntu端:sudo ufw disable
BBB端:sudo iptables -F && sudo systemctl stop firewalld(根据BBB系统调整)
之后测试直连状态。
内容的提问来源于stack exchange,提问作者Jay Evans

