# netcfg **Repository Path**: openes/netcfg ## Basic Information - **Project Name**: netcfg - **Description**: Linux 网络环境搭建 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-25 - **Last Updated**: 2025-04-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Linux 网络环境搭建 * 电脑 WiFi 上网,开发板和电脑直连,用于 Linux 开发调试 * 设备:电脑(Windows)、Linux 开发板、网线。如果是台式机没有无线网卡的话,可以使用随身 WIFI 让电脑连接到 WiFi。 * 一般电脑都是有一个以太网网口的,但是一些超薄本、商务本电脑没有以太网网口,解决办法可以参考本文的末尾【补充】部分 ### 网络拓扑结构 * 网络拓扑结构:电脑使用无线网卡上网,电脑的以太网口直连开发板网口。 ![](./images/电脑WiFi上网.png) ### 步骤一:关闭防火墙 * 在 Ubuntu 和 Windows 互相通信之前,需要关闭防火墙。在 Windows 主机的控制面板\系统和安全\Windows Defender 防火墙中选择关闭防火墙。 ![](./images/打开防火墙设置.png) ![](./images/关掉Windows防火墙.png) * 打开 Ubuntu 终端,使用以下指令关闭 Ubuntu 防火墙。 ``` thin-wind@Ubuntu:~$ sudo ufw disable [sudo] thin-wind 的密码: 防火墙在系统启动时自动禁用 ``` ### 步骤三:VMware 设置: * 打开 VMware Workstation Pro 里的 虚拟机 -> 设置 ![](./images/打开虚拟机设置.png) ![](./images/将网络适配器修改为桥接模式.png) * 因为电脑是 WiFi 上网,所以需要添加一个网络适配器并设置成 NAT 模式,供虚拟机上网。具体操作如下图所示。 ![](./images/添加网络适配器.png) * 默认添加的网络适配器是 NAT 模式的,如果不是 NAT 模式则要手动设置成 NAT 模式。 ![](./images/设置网络适配器2为NAT模式.png) * 打开菜单栏的 编辑 -> 虚拟网络编辑器。 ![](./images/打开虚拟网络编辑器.png) * 开发板是直连到电脑的网口的,所以需要虚拟网络编辑器里的 VMnet0 桥接到有线网卡上,如下图所示。若你的电脑有多个网卡,可以自行设置桥接到任何网卡。本次桥接到主机机箱后面的网卡(网口)上。 ![](./images/设置网络适配器1桥接到有线网卡.png) * 你所添加的所有网络适配器,如果配置了桥接模式,那么都会从 VMnet0 桥接到真实的网络,从真实的网络中分配得到 ip。另外 VMnet8 是虚拟机自动运行的虚拟网卡,如果你设置了一个网络适配器是 Net 模式的,那么你的虚拟网络就会从这个 VMnet8 分配得到一个 ip。 * 如果虚拟机之前设置过网络的相关信息,自己却搞混了,不清楚现在虚拟机网络的设置情况(虚拟网络情况复杂),可以点击虚拟网络编辑器左下方的还原默认设置。 ![](./images/还原默认设置.png) ### 步骤三:Ubuntu 设置静态 IP * 启动虚拟机,执行 ifconfig 指令查询 IP 信息。Ubuntu18 以上默认不支持 ifconfig 指令查看网络信息,执行 sudo apt-get install net-tools 命令即可。 * 如下所示,可以看到 ens37 网络节点中 192.168.56.128 就是从 VMnet8 中获取的 ip,还有一个 ens33 是我们桥接的网卡。那么为什么没有分配到IP 呢?因为只有路由器,或者 VMnet8 这样的设备才能能力分配 ip。开发板与电脑用网线直连是没有能力得到 IP 的,因为它们没有开启 dhcpd 分配 IP 服务。 ``` thin-wind@Ubuntu:~$ ifconfig ens33: flags=4163 mtu 1500 inet6 fe80::7c02:e3d8:a0e3:a95a prefixlen 64 scopeid 0x20 ether 00:0c:29:98:ee:c4 txqueuelen 1000 (以太网) RX packets 66 bytes 29634 (29.6 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 140 bytes 23277 (23.2 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ens37: flags=4163 mtu 1500 inet 192.168.56.128 netmask 255.255.255.0 broadcast 192.168.56.255 inet6 fe80::316c:abdb:a0b0:96da prefixlen 64 scopeid 0x20 ether 00:0c:29:98:ee:ce txqueuelen 1000 (以太网) RX packets 1678 bytes 1763584 (1.7 MB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 634 bytes 83413 (83.4 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73 mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 1000 (本地环回) RX packets 445 bytes 49226 (49.2 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 445 bytes 49226 (49.2 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ``` * 网络 ens33 是我们的桥接网络,需要手动设置 IP。网络 ens38 是虚拟机 NAT 模式连接到 Windows 的网络,有这个网络 Ubuntu 就能和 Windows 正常通行和上网。 * 现在要做的就是设置桥接模式的网络适配器 1(ens33)的 IP 信息。网络适配器 1 用于和 Windows 和开发板通信,所以我们要先看下 Windows 主机的用于桥接网络的 IP。 * 先测下 Ubuntu 上网功能,ping 8.8.8.8。 ``` thin-wind@Ubuntu:~$ ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 字节,来自 8.8.8.8: icmp_seq=1 ttl=128 时间=34.1 毫秒 64 字节,来自 8.8.8.8: icmp_seq=2 ttl=128 时间=32.9 毫秒 64 字节,来自 8.8.8.8: icmp_seq=3 ttl=128 时间=31.7 毫秒 64 字节,来自 8.8.8.8: icmp_seq=4 ttl=128 时间=33.9 毫秒 ``` * 现在要做的就是设置桥接模式的网络适配器 1(ens33)的 IP 信息。网络适配器 1 用于和 Windows 和开发板通信,所以我们要先看下 Windows 主机的用于桥接网络的 IP。 * 查看 Windows 主机的 IP:在 Windows 端按下 win + R 快捷键打开运行栏,输入 cmd 指令后按下回车。 ![](./images/执行cmd指令.png) * 在打开的终端中输入 ipconfig 指令,查看电脑的 IP。 ``` C:\Users\Administrator>ipconfig Windows IP 配置 以太网适配器 以太网: 连接特定的 DNS 后缀 . . . . . . . : 本地链接 IPv6 地址. . . . . . . . : fe80::7379:f4c3:a791:79d8%18 自动配置 IPv4 地址 . . . . . . . : 169.254.149.237 子网掩码 . . . . . . . . . . . . : 255.255.0.0 默认网关. . . . . . . . . . . . . : 无线局域网适配器 本地连接* 1: 媒体状态 . . . . . . . . . . . . : 媒体已断开连接 连接特定的 DNS 后缀 . . . . . . . : 无线局域网适配器 本地连接* 10: 媒体状态 . . . . . . . . . . . . : 媒体已断开连接 连接特定的 DNS 后缀 . . . . . . . : 以太网适配器 VMware Network Adapter VMnet8: 连接特定的 DNS 后缀 . . . . . . . : 本地链接 IPv6 地址. . . . . . . . : fe80::6110:bae6:1fe8:3fdd%15 IPv4 地址 . . . . . . . . . . . . : 192.168.56.1 子网掩码 . . . . . . . . . . . . : 255.255.255.0 默认网关. . . . . . . . . . . . . : 无线局域网适配器 WLAN: 连接特定的 DNS 后缀 . . . . . . . : lan 本地链接 IPv6 地址. . . . . . . . : fe80::8fcc:7af6:e1dd:326e%10 IPv4 地址 . . . . . . . . . . . . : 192.168.199.209 子网掩码 . . . . . . . . . . . . : 255.255.255.0 默认网关. . . . . . . . . . . . . : 192.168.199.1 以太网适配器 蓝牙网络连接: 媒体状态 . . . . . . . . . . . . : 媒体已断开连接 连接特定的 DNS 后缀 . . . . . . . : ``` * 可以看到 Windows 主机的网络比较复杂,这里我们只截取可能用到的信息。根据 Windows 的 ipconfig 指令和 Ubuntu 虚拟网络编辑器,可以对应到以下表格。 | 网络适配器名 | IP 地址 | 备注 | |---|---|---| | 以太网适配器 以太网 | 169.254.149.237 | 主机机箱后面的网卡,因为与开发板直连,dhcp 服务无法获取 IP,故分配了一个不能使用的 IP 169.254.xx.xx | | 以太网适配器 VMware Network Adapter VMnet8 | 192.168.56.1 | 提供 DHCP 服务,用于主机和虚拟机互通,虚拟机上网 | | 无线局域网适配器 WLAN | 192.168.199.209 | 用于 Windows 主机上网 | * 在 Windows 终端没有看到 VMnet0,在虚拟网络编辑器中可以看到。这是我们用来桥接的网络适配器,不会自动分配 IP,需要手动设置。这里要注意,VMnet0 设置的网段不能和 VMnet1、VMnet8 的网段一样,不然会有冲突。 * 我们需要手动设置 Ubuntu 中桥接网络的 IP。 * 回到 Ubuntu 中,按如下步骤设置 ens33 的 IP 信息。这里有可能无法设置以太网,可以参考本文末尾【异常问题】部分 ![](./images/打开ens33的设置.png) * 按如下图设置,给 Ubuntu 设置一个静态 ip。设置 IPv4 地址,地址可以随意设置,但是要符合网络协议的要求。如网关为 192.168.5.1,那么你的 IP 地址可以为 192.168.5.2~192.168.5.254。 ![](./images/设置ens33的IP信息.png) ![](./images/打开ens33.png) * 在终端中执行 ifconfig 指令查看 ens33 的信息。 ``` thin-wind@Ubuntu:~$ ifconfig ens33: flags=4163 mtu 1500 inet 192.168.5.2 netmask 255.255.255.0 broadcast 192.168.5.255 inet6 fe80::7c02:e3d8:a0e3:a95a prefixlen 64 scopeid 0x20 ether 00:0c:29:98:ee:c4 txqueuelen 1000 (以太网) RX packets 746 bytes 332700 (332.7 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 1240 bytes 197093 (197.0 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ens37: flags=4163 mtu 1500 inet 192.168.56.128 netmask 255.255.255.0 broadcast 192.168.56.255 inet6 fe80::316c:abdb:a0b0:96da prefixlen 64 scopeid 0x20 ether 00:0c:29:98:ee:ce txqueuelen 1000 (以太网) RX packets 4379 bytes 2136246 (2.1 MB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 1814 bytes 194277 (194.2 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73 mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 1000 (本地环回) RX packets 2460 bytes 278813 (278.8 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 2460 bytes 278813 (278.8 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ``` ### 步骤四:Windows 设置静态 IP * 在 Windows 主机打开控制面板 -> 网络和 Internet -> 网络和共享中心 -> 更改适配器设置,找到以太网。 ![](./images/更改适配器设置.png) * 此时以太网显示未识别的网络,我们需要手动设置 IP 信息。如果以太网显示网络电缆被拔出,请用网线将电脑网口和开发板网口连接起来,开发板上电启动系统。 * 选择以太网,右键打开菜单栏,选择属性。在打开的网络设置中,双击 Internet 协议版本 4(TCP/IPv4),如下图所示。按照下图设置以太网的 IP 为 192.168.5.3,要和虚拟机的 ens33 在同一网段。 ![](./images/设置Windows静态IP4.png) ### 步骤五:开发板设置静态 IP * 接下来设置下开发板的 IP。这里我们将开发板 IP 设置为 192.168.5.4,和 ens33 在同一网段 即可。 * 进入开发板系统命令行,执行一下命令,设置开发板 IP。 ``` ifconfig eth0 up ifconfig eth0 192.168.5.4 ``` * 设置成功后,使用 ifconfig 命令查看开发板的网络设备信息。 ![](./images/设置开发板静态IP.png) * 至此,Linux 网络环境搭建完成,可以在 Windows、Ubuntu 和开发板之间进行互 ping 测试。 ### 小结 * 防火墙设置:关闭电脑和虚拟机的防火墙。 * 网络连接:电脑使用无线上网,开发板网口直连电脑网口。 * VMware 设置:设置网络适配器为桥接模式;添加一个网络适配器 2 为 NAT 模式。 * Ubuntu 设置:设置 NAT 模式的网络适配器为自动获取模式(DHCP);手动设置桥接模式的网络适配器的 IP 信息。 * Windows 设置:手动设置以太网 TCP/IPv4 属性中的 IP 信息。 * 开发板设置:手动设置开发板的 IP 信息。 * 注意:Ubuntu 里桥接模式的网络适配器、电脑的以太网、开发板的网口,三者要在同一网段,且不能与 NAT 模式的网络适配器、虚拟机子网在同一网段。Windows 和 Ubuntu 通过 NAT 模式的网络适配器通信。 ### 补充 * 一般电脑都是有一个以太网网口的,但是一些超薄本、商务本电脑没有以太网网口,这样并不方便我们的开发。我们可以使用 USB 转网口设备来给电脑拓展出一个以太网网口,因为开发板必选通过有线的方式连接到电脑上。USB 转网口设备如下图所示。 ![](./images/USB转网口.png) * 我们需要将 USB 转网口接在 Windows 主机端。接入主机后,在 Windows 主机的设备管理器 -> 网络适配器 里也可以看到我们这个 USB 转网口的设备。 ![](./images/Windows设备管理器中查看USB转网口.png) * 如果没有识别到,可能设备驱动有问题,请咨询下商家。或者有可能被连接到虚拟机 Ubuntu 了,要将其断开,确保连接到 Windows 电脑。 * 回到虚拟网络编辑器中,将 VMnet0 桥接到 USB 转网口,如下图所示。 ![](./images/将VMnet0桥接到USB转网口.png) ### 异常问题 * Ubuntu 20.04 右上角网络图标消失,导致无法设置网络,可以通过重启 Network Manager 来解决这个问题 ``` sudo service network-manager stop sudo rm /var/lib/NetworkManager/NetworkManager.state sudo service network-manager start ``` * 开发板重启后静态 IP 设置失效,为了方便开发工作,可以将命令添加到 /etc/profile 中,此文件为系统启动时所有用户都会执行的脚本。 ![](./images/添加设置eth0命令到profile.png)