BeagleBone Black retención de IP estática

BeagleBone Black retención de IP estática

Estoy utilizando el dispositivo BeagleBone Black como dispositivo de monitoreo de energía en mis proyectos de IoT. La aplicación lee datos a través de USB (Modbus RTU) y los envía a la nube remota a través de MQTT. Hay entre 15 y 20 dispositivos BeagleBone Black de este tipo. Para acceder a Internet, el director de TI de la planta me proporcionó entre 15 y 20 instancias de direcciones IP estáticas. He configurado una dirección IP estática en el /etc/network/interfacesarchivo. Pero a veces la conectividad a Internet no funciona. Cuando lo depuré, descubrí que BeagleBone Black obtiene una dirección IP dinámica.

En la instalación existen rangos separados para direcciones IP estáticas y dinámicas. Si reinicio el BeagleBone Black, nuevamente detecta correctamente la dirección IP estática y el sistema funciona normalmente.

Me enfrento a este problema en una dirección IP aleatoria. A partir de ahora no existe la opción de cambiarlo permanentemente al rango de IP dinámico. Esto ocurre en dispositivos aleatorios. Por favor, ayúdame a resolver este problema. Aquí está la IP configurada en el /etc/network/interfacearchivo y la dirección IP recibida.

Por ejemplo, la dirección IP estática configurada en el dispositivo. Este es el /etc/network/interfacearchivo de configuración en 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

Dirección IP en el archivo:

address 10.12.4.152
netmask: 255.255.254.0
gateway: 10.12.4.1

Dirección IP recibida (comprobada mediante ifconfigcomando):

inet 10.12.4.207  netmask 255.255.254.0

La respuesta completa del ifconfigmando:

# 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

Respuesta1

La última vez que trabajé con un beaglebone black, la imagen original de Debian hizo algo extraño y (francamente) se rompió al tener dos clientes DHCP completamente separados activos al mismo tiempo. Parece que estás usando /etc/network/interfaces y el otro es "connman". Tenga mucho cuidado de asegurarse de que se haya desactivado a connman para que no pueda actuar como cliente DHCP o pensará que tiene el control y reconfigurará su red.

Dada la naturaleza "aleatoria" de su problema, parece queen algunos casos, connman está reconfigurando su red después de haberla configurado estáticamente mediante /etc/network/interfaces

Veo comandos comentados en tus capturas de pantalla que intentan hacer esto, pero no está claro si estás seguro de que realmente se ha ejecutado en todos los dispositivos.

información relacionada