저는 IoT 프로젝트에서 에너지 모니터링 장치로 BeagleBone Black 장치를 사용하고 있습니다. 애플리케이션은 USB(Modbus RTU)를 통해 데이터를 읽고 MQTT를 통해 원격 클라우드로 전송합니다. 이러한 BeagleBone Black 장치는 약 15~20개 정도 있습니다. 인터넷에 액세스하기 위해 공장 IT 관리자는 나에게 15~20개의 고정 IP 주소 인스턴스를 제공했습니다. 파일 에 고정 IP 주소를 설정했습니다 /etc/network/interfaces
. 하지만 인터넷 연결이 작동하지 않는 경우도 있습니다. 디버깅을 해보니 BeagleBone Black이 동적 IP 주소를 받고 있는 것으로 나타났습니다.
플랜트에는 고정 및 동적 IP 주소에 대한 별도의 범위가 있습니다. BeagleBone Black을 재부팅하면 다시 고정 IP 주소를 제대로 잡아 시스템이 정상적으로 작동합니다.
임의의 IP 주소에서 이 문제가 발생했습니다. 현재로서는 동적 IP 범위에서 영구적으로 이동하는 옵션이 없습니다. 이는 임의의 장치에서 발생합니다. 이 문제를 해결하도록 도와주세요. 파일에 설정된 IP /etc/network/interface
와 수신된 IP 주소는 다음과 같습니다.
예를 들어 장치에 설정된 고정 IP 주소입니다. /etc/network/interface
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 주소:
address 10.12.4.152 netmask: 255.255.254.0 gateway: 10.12.4.1
수신된 IP 주소( ifconfig
명령을 사용하여 확인):
inet 10.12.4.207 netmask 255.255.254.0
ifconfig
명령 의 전체 응답 :
# 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
답변1
지난 번 beaglebone black으로 작업했을 때, 그에 대한 기본 데비안 이미지가 뭔가 이상한 일을 했고 (솔직히) 두 개의 완전히 분리된 DHCP 클라이언트가 동시에 활성화되어 깨졌습니다. /etc/network/interfaces를 사용하고 있는 것 같습니다. 다른 하나는 "connman"입니다. connman이 DHCP 클라이언트 역할을 하지 못하도록 비활성화되었는지 매우 주의하십시오. 그렇지 않으면 Connman이 네트워크를 제어하고 재구성한다고 생각하게 됩니다.
문제의 "무작위" 특성을 고려하면 다음과 같이 들립니다.일부 경우에, 네트워크가 /etc/network/interfaces에 의해 정적으로 구성된 후 connman에 의해 재구성되고 있습니다.
스크린샷에서 이 작업을 시도하는 주석 처리된 명령을 볼 수 있지만 이것이 실제로 모든 장치에서 실행되었는지 확실하지 않습니다.