Ich verwende das BeagleBone Black-Gerät als Energieüberwachungsgerät in meinen IoT-Projekten. Die Anwendung liest Daten über USB (Modbus RTU) und sendet sie über MQTT an die Remote-Cloud. Es gibt etwa 15–20 solcher BeagleBone Black-Geräte. Für den Internetzugang hat mir der IT-Manager des Werks 15–20 Instanzen statischer IP-Adressen zugewiesen. Ich habe in der /etc/network/interfaces
Datei eine statische IP-Adresse festgelegt. Aber manchmal funktioniert die Internetverbindung nicht. Beim Debuggen stellte ich fest, dass BeagleBone Black eine dynamische IP-Adresse erhält.
In der Anlage gibt es separate Bereiche für statische und dynamische IP-Adressen. Wenn ich den BeagleBone Black neu starte, erkennt er die statische IP-Adresse wieder ordnungsgemäß und das System funktioniert normal.
Ich habe dieses Problem mit zufälligen IP-Adressen. Derzeit gibt es keine Möglichkeit, sie dauerhaft in den dynamischen IP-Bereich zu verschieben. Dies tritt bei zufälligen Geräten auf. Bitte helfen Sie mir, dieses Problem zu lösen. Hier ist die in der /etc/network/interface
Datei festgelegte IP und die empfangene IP-Adresse.
Beispielsweise die im Gerät eingestellte statische IP-Adresse. Dies ist die /etc/network/interface
Konfigurationsdatei im BeableBone Black:
#auto eth0
#iface eth0 inet dhcp
auto eth0
iface eth0 inet static
address 10.12.4.152
netmask 255.255.254.0
gateway 10.12.4.1
# Example to keep MAC address between reboots
#hwaddress ether DE:AD:BE:EF:CA:FE
##connman: ethX static config
#connmanctl services
#Using the appropriate ethernet service, tell connman to setup a static IP address for that service:
#sudo connmanctl config <service> --ipv4 manual <ip_addr> <netmask> <gateway> --nameservers <dns_server>
##connman: WiFi
#
#connmanctl
#connmanctl> tether wifi off
#connmanctl> enable wifi
#connmanctl> scan wifi
#connmanctl> services
#connmanctl> agent on
#connmanctl> connect wifi_*_managed_psk
#connmanctl> quit
# Ethernet/RNDIS gadget (g_ether)
# Used by: /opt/sripts/boot/autoconfigure_usb0.sh
iface usb0 inet static
address 192.168.7.2
netmask 255.255.255.252
network 192.168.7.0
gateway 192.168.7.1
IP-Adresse in der Datei:
address 10.12.4.152 netmask: 255.255.254.0 gateway: 10.12.4.1
Empfangene IP-Adresse (mit Befehl geprüft ifconfig
):
inet 10.12.4.207 netmask 255.255.254.0
Die vollständige Antwort des ifconfig
Befehls:
# ifconfig
eth0: flags=-28605<UP,BROADCAST,RUNNING,MULTICAST,DYNAMIC> mtu 1500
inet 10.12.4.207 netmask 255.255.254.0 broadcast 10.12.5.255
inet6 fe80::f6e1:1eff:fe8c:d785 prefixlen 64 scopeid 0x20<link>
ether f4:e1:1e:8c:d7:85 txqueuelen 1000 (Ethernet)
RX packets 146702 bytes 10983334 (10.4 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 6716 bytes 509906 (497.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 174
lo: flags=74<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 164064 bytes 18078349 (17.2 MiB)
RX errors 0 dropped 0 everruns 0 frame 0
TX packets 164064 bytes 18078349 (17.2 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
usb0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.7.2 netmask 255.255.255.252 broadcast 192.168.7.3
ether f4:e1:1e:8c:d7:87 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
usb1: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.6.2 netmask 255.255.255.252 braodcast 192.168.6.3
ether f4:e1:1e:8c:d7:8a txquequelen 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
Antwort1
Als ich das letzte Mal mit einem Beaglebone Black gearbeitet habe, hat das Standard-Debian-Image dafür etwas Seltsames getan und (ehrlich gesagt) ist kaputtgegangen, weil zwei völlig separate DHCP-Clients gleichzeitig aktiv waren. Sie scheinen /etc/network/interfaces zu verwenden, der andere ist „connman“. Achten Sie darauf, dass connman nicht mehr als DHCP-Client fungieren kann, da es sonst denkt, es habe die Kontrolle und Ihr Netzwerk neu konfiguriert.
Angesichts der "zufälligen" Natur Ihres Problems klingt es so, als obin manchen Fällen, Ihr Netzwerk wird von Connman neu konfiguriert, nachdem es statisch über /etc/network/interfaces konfiguriert wurde
Ich sehe in Ihren Screenshots auskommentierte Befehle, die dies versuchen, aber es ist unklar, ob Sie sicher sind, dass dies tatsächlich auf jedem Gerät ausgeführt wurde