公司动态

Ubuntu 18.04与飞凌ELF 1开发板网络共享配置指南

📅 2026/7/17 4:57:17
Ubuntu 18.04与飞凌ELF 1开发板网络共享配置指南
1. 项目背景与需求分析在嵌入式开发环境中飞凌嵌入式ElfBoard ELF 1开发板与Ubuntu主机的网络连接是一个基础但关键的环节。很多开发者会遇到这样的场景开发环境主机如运行Ubuntu 18.04的PC已经连接到互联网而开发板需要通过网线与主机直连同时共享主机的网络连接进行软件包安装、源码下载等操作。这种网络共享需求在以下场景尤为常见实验室或办公环境没有多余的物理网络接口可供开发板直接连接需要隔离开发板的网络流量进行抓包分析临时调试环境下无法接入常规网络基础设施需要稳定的有线连接进行大文件传输或系统更新Ubuntu 18.04作为长期支持版本(LTS)在嵌入式开发领域仍被广泛使用。其网络管理工具NetworkManager提供了完善的网络共享功能但实际配置过程中有几个关键点需要注意主机需要同时管理多个网络接口通常一个用于上网一个用于连接开发板共享配置需要正确的IP地址分配策略防火墙规则可能影响共享网络的可达性2. 环境准备与网络拓扑确认2.1 硬件连接检查在开始配置前请确保以下物理连接正确使用标准以太网线建议Cat5e或以上连接Ubuntu主机和ELF 1开发板确认网线状态指示灯正常多数网卡接口会有LED指示灯如果是通过USB网卡连接需提前安装好驱动程序可以通过以下命令检查网卡是否被系统识别elfubuntu:~$ ip link show 1: lo: LOOPBACK,UP,LOWER_UP mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: ens33: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 00:0c:29:3b:73:cb brd ff:ff:ff:ff:ff:ff 3: enx207bd2bc24df: BROADCAST,MULTICAST mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 link/ether 20:7b:d2:bc:24:df brd ff:ff:ff:ff:ff:ff2.2 网络接口角色确认典型配置中Ubuntu主机会有两个网络接口ens33连接外部网络的主接口可能是WiFi或有线enx207bd2bc24df与开发板直连的接口需要先确保主网络接口ens33已经正常联网elfubuntu:~$ ping -c 4 www.elfboard.com PING www.elfboard.com (104.21.11.249) 56(84) bytes of data. 64 bytes from 104.21.11.249 (104.21.11.249): icmp_seq1 ttl54 time12.3 ms 64 bytes from 104.21.11.249 (104.21.11.249): icmp_seq2 ttl54 time11.8 ms 64 bytes from 104.21.11.249 (104.21.11.249): icmp_seq3 ttl54 time12.1 ms 64 bytes from 104.21.11.249 (104.21.11.249): icmp_seq4 ttl54 time11.9 ms3. 网络共享配置详解3.1 使用NetworkManager配置共享Ubuntu 18.04默认使用NetworkManager管理网络连接可以通过图形界面或命令行工具进行配置。推荐使用图形化工具nm-connection-editor因为它能自动处理多数底层配置打开终端启动网络连接编辑器elfubuntu:~$ nm-connection-editor在界面中点击按钮添加新连接选择以太网类型关键配置步骤在常规选项卡中取消勾选自动连接在以太网选项卡中选择正确的物理接口如enx207bd2bc24df在IPv4设置选项卡中方法选择共享给其他计算机不需要手动指定IP地址系统会自动分配192.168.137.x网段注意如果开发板需要静态IP可以在开发板端配置静态地址192.168.137.2网关设为192.168.137.13.2 验证共享网络状态配置完成后可以通过以下命令检查共享状态elfubuntu:~$ ip addr show enx207bd2bc24df 3: enx207bd2bc24df: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 20:7b:d2:bc:24:df brd ff:ff:ff:ff:ff:ff inet 192.168.137.1/24 brd 192.168.137.255 scope global enx207bd2bc24df valid_lft forever preferred_lft forever inet6 fe80::9c5e:8eff:fe12:3456/64 scope link valid_lft forever preferred_lft forever3.3 开发板网络配置在ELF 1开发板上需要确保网络接口配置为自动获取IPDHCP。如果是通过串口连接开发板可以使用以下命令检查[rootelfboard:~]# ifconfig eth0 eth0: flags4163UP,BROADCAST,RUNNING,MULTICAST mtu 1500 inet 192.168.137.25 netmask 255.255.255.0 broadcast 192.168.137.255 inet6 fe80::215:5dff:fe01:2345 prefixlen 64 scopeid 0x20link ether 00:15:5d:01:23:45 txqueuelen 1000 (Ethernet)如果开发板没有自动获取到IP可以手动触发DHCP请求[rootelfboard:~]# udhcpc -i eth04. 常见问题排查与优化4.1 网络共享失败的排查步骤当开发板无法访问网络时可以按照以下流程排查检查物理连接确认网线两端插紧尝试更换网线检查接口指示灯状态验证主机端共享配置elfubuntu:~$ nmcli connection show NAME UUID TYPE DEVICE Wired connection 1 5fb06bd0-0bb0-7ffb-45f1-b6d72b4cf27f ethernet enx207bd2bc24df检查NAT和转发规则elfubuntu:~$ sudo iptables -t nat -L POSTROUTING Chain POSTROUTING (policy ACCEPT) target prot opt source destination MASQUERADE all -- 192.168.137.0/24 anywhere测试基础连通性elfubuntu:~$ ping 192.168.137.25 # 开发板IP4.2 性能优化建议对于需要大文件传输的场景可以考虑以下优化调整MTU值在主机和开发板上同时设置elfubuntu:~$ sudo ip link set enx207bd2bc24df mtu 9000 [rootelfboard:~]# ip link set eth0 mtu 9000关闭IPv6如果不需要elfubuntu:~$ sudo sysctl -w net.ipv6.conf.enx207bd2bc24df.disable_ipv61使用iperf3测试实际带宽# 在主机端启动服务器 elfubuntu:~$ iperf3 -s # 在开发板端运行客户端测试 [rootelfboard:~]# iperf3 -c 192.168.137.1 -t 205. 高级配置与替代方案5.1 静态IP配置方案某些开发场景可能需要固定IP地址可以通过以下方式实现在开发板端配置静态IP[rootelfboard:~]# vi /etc/network/interfaces # 添加以下内容 auto eth0 iface eth0 inet static address 192.168.137.100 netmask 255.255.255.0 gateway 192.168.137.1 dns-nameservers 8.8.8.8在主机端创建静态连接在nm-connection-editor中选择手动而非共享指定IP地址如192.168.137.1/24启用IP转发elfubuntu:~$ sudo sysctl -w net.ipv4.ip_forward15.2 使用SSH隧道转发对于只需要特定端口访问的场景SSH隧道是更轻量的方案在开发板上安装SSH客户端建立反向隧道[rootelfboard:~]# ssh -R 8080:localhost:80 elf192.168.137.1这样主机的8080端口会转发到开发板的80端口5.3 容器化网络共享如果主机使用Docker可以通过以下方式共享网络创建macvlan网络elfubuntu:~$ docker network create -d macvlan \ --subnet192.168.137.0/24 \ --gateway192.168.137.1 \ -o parentenx207bd2bc24df \ elf_network运行容器并连接开发板elfubuntu:~$ docker run --networkelf_network -it ubuntu bash在实际项目开发中我通常会根据具体需求选择最适合的网络共享方案。对于大多数嵌入式开发场景标准的网络共享配置已经足够使用但在需要更高性能或更复杂网络拓扑时可以考虑静态IP或容器化方案。一个实用的建议是在进行重要操作前先使用临时网络配置测试连通性确认无误后再写入持久化配置。