BeagleBone Black 静态 IP 保留

BeagleBone Black 静态 IP 保留

我在我的 IoT 项目中使用 BeagleBone Black 设备作为能源监控设备。应用程序通过USB(Modbus RTU)读取数据并通过MQTT将其发送到远程云端。大约有 15-20 个这样的 BeagleBone Black 设备。为了访问互联网,工厂 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/interfaceBeableBone 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 时,它的 Debian 镜像做了一些奇怪的事情,并且(坦率地说)由于同时激活了两个完全独立的 DHCP 客户端而被破坏。您似乎正在使用 /etc/network/interfaces ,另一个是“connman”。请务必小心,确保 connman 已被禁用作为 DHCP 客户端,否则它会认为它处于控制状态并重新配置您的网络。

考虑到你的问题的“随机”性质,听起来确实是这样,在某些情况下,您的网络在 /etc/network/interfaces 静态配置后正在由 connman 重新配置

我在您的屏幕截图中看到注释掉的命令,这些命令尝试执行此操作,但不清楚您是否确定这实际上已在每个设备上执行

相关内容