我有一台基于 NPI iMX6ULL ARM 的单板计算机,运行 Debian Buster。它有 2 个网络端口,分别列出ifconfig
为eth0
和eth1
它似乎忽略了我的网络配置/etc/network/interfaces
auto lo eth0 eth1
iface lo inet loopback
iface eth0 inet dhcp
iface eth1 inet static
address 192.168.1.254
netmask 255.255.255.0
iface usb0 inet static
address 192.168.7.2
netmask 255.255.255.252
network 192.168.7.0
gateway 192.168.7.1
启动上述配置并eth0
连接到 dhcp 服务器后,ifconfig
报告:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.4.10.131 netmask 255.255.192.0 broadcast 10.4.63.255
inet6 fe80::d489:7cff:feec:e09e prefixlen 64 scopeid 0x20<link>
ether d6:89:7c:ec:e0:9e txqueuelen 1000 (Ethernet)
RX packets 478 bytes 42931 (41.9 KiB)
RX errors 0 dropped 29 overruns 0 frame 0
TX packets 30 bytes 2883 (2.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth1: flags=-28669<UP,BROADCAST,MULTICAST,DYNAMIC> mtu 1500
ether d6:89:7c:ec:e0:9d txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
同样,在启动上述配置并eth1
连接到 dhcp 服务器后,ifconfig
会报告:
eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether d6:89:7c:ec:e0:9e txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth1: flags=-28605<UP,BROADCAST,RUNNING,MULTICAST,DYNAMIC> mtu 1500
inet 10.4.11.126 netmask 255.255.192.0 broadcast 10.4.63.255
inet6 fe80::d489:7cff:feec:e09d prefixlen 64 scopeid 0x20<link>
ether d6:89:7c:ec:e0:9d txqueuelen 1000 (Ethernet)
RX packets 1234 bytes 118390 (115.6 KiB)
RX errors 0 dropped 58 overruns 0 frame 0
TX packets 38 bytes 3547 (3.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
如果我这样做,sudo ifdown eth1
它会报告:
ifdown: interface eth1 not configured
它sudo ifup eth1
出现了:
debian@npi:~$ sudo ifup eth1
debian@npi:~$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.4.10.131 netmask 255.255.192.0 broadcast 10.4.63.255
inet6 fe80::d489:7cff:feec:e09e prefixlen 64 scopeid 0x20<link>
ether d6:89:7c:ec:e0:9e txqueuelen 1000 (Ethernet)
RX packets 16846 bytes 1401257 (1.3 MiB)
RX errors 0 dropped 856 overruns 0 frame 0
TX packets 65 bytes 4551 (4.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth1: flags=-28669<UP,BROADCAST,MULTICAST,DYNAMIC> mtu 1500
inet 192.168.1.254 netmask 255.255.255.0 broadcast 192.168.1.255
ether d6:89:7c:ec:e0:9d txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
什么在启动时控制我的网络配置。我怎样才能知道?
我确实发现了一些关于我的 MAC 地址问题的 Google 搜索,但这两个接口都会发生这种情况。我也尝试更改我的 MAC 地址,但没有任何改变。
答案1
感谢 Seamus 为我指明了正确的方向。关键是我正在使用的图像基于 BeagleBone 图像。
之前的问题是connman
控制网络端口networkd
。在一台设备上,我能够connman
使用删除apt
。之后,我的配置/etc/systemd/network/interfaces
就被正确应用了。
我的研究表明这connman
是未来的发展方向,所以我也想出了如何配置它。这页提供了很多很棒的信息。 connmanctl
可以直接用来设置静态IP。
root@npi:~# connmanctl
connmanctl> config ethernet_00142d259a48_cable --ipv4 manual 192.168.10.2 255.255.255.0 192.168.10.1
connmanctl> config ethernet_00142d259a48_cable --nameservers 8.8.8.8
connmanctl> exit
设备名称中间的十六进制字符串是设备的 MAC 地址。手册指定静态IP,数字是IP地址、网络掩码和网关(网关是可选的)。
这个页面也解释得很好。不幸的是,大多数文档都是针对配置 wifi 的。大多数网站只是顺便提及静态寻址。
希望这对下一个人有帮助。