Estou usando o dispositivo BeagleBone Black como dispositivo de monitoramento de energia em meus projetos de IoT. O aplicativo lê os dados via USB (Modbus RTU) e os envia para a nuvem remota através do MQTT. Existem cerca de 15 a 20 desses dispositivos BeagleBone Black. Para acessar a Internet, o gerente de TI da fábrica me forneceu de 15 a 20 instâncias de endereços IP estáticos. Eu configurei o endereço IP estático no /etc/network/interfaces
arquivo. Mas às vezes a conectividade com a Internet não funciona. Quando depurei, descobri que o BeagleBone Black está obtendo um endereço IP dinâmico.
Existem intervalos separados para endereços IP estáticos e dinâmicos na planta. Se eu reiniciar o BeagleBone Black, ele capturará novamente o endereço IP estático corretamente e o sistema funcionará normalmente.
Estou enfrentando esse problema em um endereço IP aleatório. No momento, não há opção de alterá-lo permanentemente na faixa de IP dinâmico. Isso está ocorrendo em dispositivos aleatórios. Por favor, me ajude a resolver este problema. Aqui está o IP definido no /etc/network/interface
arquivo e o endereço IP recebido.
Por exemplo, o endereço IP estático definido no dispositivo. Este é o /etc/network/interface
arquivo de configuração do 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
Endereço IP no arquivo:
address 10.12.4.152 netmask: 255.255.254.0 gateway: 10.12.4.1
Endereço IP recebido (verificado usando ifconfig
o comando):
inet 10.12.4.207 netmask 255.255.254.0
A resposta completa do ifconfig
comando:
# 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
Responder1
A última vez que trabalhei com um beaglebone black, a imagem padrão do Debian fez algo estranho e (francamente) quebrado por ter dois clientes DHCP completamente separados ativos ao mesmo tempo. Você parece estar usando /etc/network/interfaces, o outro é "connman". Tenha muito cuidado para garantir que o connman foi desabilitado para atuar como um cliente DHCP ou ele pensará que está no controle e reconfigurará sua rede.
Dada a natureza "aleatória" do seu problema, parece,em alguns casos, sua rede está sendo reconfigurada por connman depois de ter sido configurada estaticamente por /etc/network/interfaces
Vejo comandos comentados em suas capturas de tela que tentam fazer isso, mas não está claro se você tem certeza de que isso foi realmente executado em todos os dispositivos