BeagleBone Black 固定 IP 予約済み

BeagleBone Black 固定 IP 予約済み

私は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/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イメージは奇妙なことをしました(正直なところ)、2つの完全に独立したDHCPクライアントが同時にアクティブになって破損しました。 /etc/network/interfacesを使っているようですが、もう一つは "connman"です。 connmanがDHCPクライアントとして無効になっていることを慎重に確認してください。それ以外の場合は、connmanが制御権を持っていると考えてネットワークを再構成します。

あなたの質問が「ランダム」という特性を持っていることを考慮すると、確かにそう聞こえるようです。場合によっては、ネットワークは/etc/network/interfacesで静的に設定された後、connmanによって再構成されています。

スクリーンショットには、この操作を試みる注釈付きコマンドが表示されますが、実際にすべてのデバイスでこれが行われるかどうかはわかりません。

おすすめ記事