最近在调试鲁班猫4开发板时,遇到了一个典型场景:需要通过网线直连方式让开发板联网,并通过SSH进行远程访问。这种连接方式在嵌入式开发中非常常见,特别是当设备尚未配置WiFi或需要稳定有线连接时。本文将详细记录我在Ubuntu 20.04系统下实现这一过程的完整步骤和踩坑经验。
鲁班猫4是一款基于Rockchip处理器的开源硬件平台,默认用户名通常是"cat"。通过网线直连方式连接时,最大的挑战在于如何正确配置网络共享以及发现设备的动态IP地址。下面我将分步骤解析整个配置过程,包括网络共享原理、IP地址探测技巧以及SSH连接的最佳实践。
首先需要准备以下硬件:
物理连接非常简单:用网线直接连接开发板和主机的以太网接口。但这里有个细节需要注意——现代网卡大多支持自动翻转(Auto-MDI/MDIX),所以不必担心直连线或交叉线的问题。不过如果你使用的是很老的设备(10年以上),可能需要使用交叉网线。
在Ubuntu桌面环境中配置网络共享的完整流程:
此时需要重启网络连接使配置生效。有两种方式:
sudo nmcli connection down "有线连接" && sudo nmcli connection up "有线连接"注意:某些Ubuntu版本中,"与其他计算机共享"选项可能显示为"共享给其他计算机"(Shared to other computers),这是同一功能的不同翻译。
当选择"与其他计算机共享"模式时,Ubuntu实际上做了以下几件事:
可以通过以下命令验证这些服务是否正常运行:
bash复制# 检查主机的IP地址
ip addr show | grep "inet.*eth"
# 检查dnsmasq服务状态
systemctl status NetworkManager
# 查看NAT规则
sudo iptables -t nat -L POSTROUTING
在终端执行ifconfig命令后,你可能会看到类似这样的输出:
code复制enp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.42.0.1 netmask 255.255.255.0 broadcast 10.42.0.255
inet6 fe80::cabc:c8ff:fe7c:7d1a prefixlen 64 scopeid 0x20<link>
ether c8:bc:c8:7c:7d:1a txqueuelen 1000 (Ethernet)
关键信息解读:
enp3s0:有线网卡的接口名称(可能因机器而异)inet 10.42.0.1:主机的IPv4地址netmask 255.255.255.0:子网掩码,表示IP范围是10.42.0.1-10.42.0.254提示:如果ifconfig命令不存在,可以安装net-tools包(
sudo apt install net-tools)或使用ip命令替代(ip addr)
安装nmap工具:
bash复制sudo apt update && sudo apt install nmap -y
执行扫描命令:
bash复制sudo nmap -sn 10.42.0.0/24
典型输出解析:
code复制Starting Nmap 7.80 ( https://nmap.org ) at 2023-05-15 14:00 CST
Nmap scan report for 10.42.0.1
Host is up (0.00020s latency).
MAC Address: C8:BC:C8:7C:7D:1A (Unknown)
Nmap scan report for 10.42.0.66
Host is up (0.0032s latency).
MAC Address: 00:22:68:13:8C:4A (LubanCat)
Nmap done: 256 IP addresses (2 hosts up) scanned in 2.45 seconds
从输出中可以识别:
如果nmap扫描不成功,可以尝试以下替代方案:
bash复制sudo apt install arp-scan
sudo arp-scan -l --interface=enp3s0
bash复制ip neigh show
bash复制for ip in 10.42.0.{1..254}; do ping -c 1 -W 1 $ip | grep "bytes from"; done
确认鲁班猫4的IP地址后(假设为10.42.0.66),在终端直接连接:
bash复制ssh cat@10.42.0.66
首次连接时会提示确认主机指纹,输入yes后继续。然后输入默认密码(通常是"cat"或"lubancat")。
安装Remote-SSH扩展:
添加SSH主机:
cat@10.42.0.66连接配置优化:
在~/.ssh/config中添加以下参数优化连接:
code复制Host lubancat4
HostName 10.42.0.66
User cat
# 保持连接活跃
ServerAliveInterval 60
# 禁用严格主机检查(仅限内网使用)
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
连接超时:
ping 10.42.0.66认证失败:
systemctl status ssh连接不稳定:
Compression yesCiphers aes128-ctr,aes192-ctr,aes256-ctr为避免每次扫描IP,可以为鲁班猫4分配静态IP:
bash复制sudo nano /etc/network/interfaces
添加:
code复制auto eth0
iface eth0 inet static
address 10.42.0.100
netmask 255.255.255.0
gateway 10.42.0.1
bash复制sudo nano /etc/NetworkManager/dnsmasq-shared.d/static-ip.conf
添加:
code复制dhcp-host=00:22:68:13:8C:4A,10.42.0.100
对于大文件传输,可以调整MTU值提升性能:
bash复制sudo ifconfig eth0 mtu 9000
bash复制sudo nano /etc/netplan/01-netcfg.yaml
在对应接口下添加:
code复制mtu: 9000
如果需要连接多个开发板,可以使用USB网卡扩展:
bash复制ip link show
bash复制nmcli connection add type ethernet ifname enx001122334455 ipv4.method shared
在鲁班猫4上修改SSH配置:
bash复制sudo nano /etc/ssh/sshd_config
推荐修改项:
code复制PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
AllowUsers cat
然后重启SSH服务:
bash复制sudo systemctl restart sshd
使用UFW配置简单防火墙规则:
bash复制sudo apt install ufw
sudo ufw allow from 10.42.0.0/24 to any port 22
sudo ufw enable
如果需要完全隔离外部网络,可以禁用NAT:
bash复制sudo nano /etc/NetworkManager/NetworkManager.conf
在[main]部分添加:
code复制no-auto-default=*
然后重启NetworkManager:
bash复制sudo systemctl restart NetworkManager
在实际使用中,我发现鲁班猫4的网卡驱动对某些超细网线兼容性不佳,建议使用标准Cat5e以上规格的网线。另外,当开发板长时间运行后,网络接口偶尔会出现异常,这时只需执行sudo ifconfig eth0 down && sudo ifconfig eth0 up即可恢复,无需重启整个系统。