• RPi4の固定IPアドレス設定

    sunatomoさん @kn929658さん パパリウスさん

    横からの投稿で、失礼します。
    固定IPアドレスの件、私も悩まされました。
    RPi3まではOSを変えるたびに固定IPを設定し直さなくても済むように、DHCPサーバ(ルータ)から個体ごとに(MACアドレスごとに)固定IPを払い出す形で運用していました。
    ところが、RPi4では、このやり方は駄目なようで、WEBUIからもSSHからもアクセスできない、お手上げの状態になってしまいます。(というより、何かの拍子に一瞬アクセス可能になっても、それが続かない不安定な状態?)

    symphonic-mpdでは、SSHからsmpd.localでは入れるのに、IPアドレスでははじかれ、しかもifconfigでIPアドレスが表示されないという不思議な体験をしました。
    RuneAudioやGentoo Playerでは、そもそもDHCPサーバから所定の固定アドレスが払い出されていないようです。
    LightMPDだけは、windowsやlinuxのデスクトップ機から固定IPアドレスを最初に設定するようになっているのでOKなのですが、ネットワークの立ち上がりとNASマウントのタイミングの問題があったようで、広い意味でPi4のネットワーク周りはスピード故のトラップがありそうです。

    結論を言えば、OSごとに面倒がらずに固定アドレスを振ればよいことですし、symphonic-mpdではアドレスが分かっているRPi3機でRPi4用を立ち上げ設定することも可能でした。

    しかし、買ったばかりのRPi4とあって初期不良の疑心暗鬼にも襲われ、長い時間あたふたしてしまいました。
    ちなみに、RPi4のMACアドレスは、LightMPDへのtelnet接続・ifconfigで特定しました。皆さんはどうされているのでしょうね?

    とりとめもない話ですが、何かの参考になればと思います。

  • Windowsユーザーには役に立たない情報だと思います。^^;
    自分のデスクトップはLinux(Archlinux)なので
    スクリプトが身近に使えます。
    下のようなスクリプトで不明なIPアドレスを特定しています。

    $ cat ./LAN-IP-ALL-list.sh
    echo 192.168.11.{1..254} | xargs -P256 -n1 ping -s1 -c1 -W1 | grep ttl

    このスクリプトを書いて実行すると

    $ ./LAN-IP-ALL-list.sh
    9 バイト応答 送信元 192.168.11.1: icmp_seq=1 ttl=64
    9 バイト応答 送信元 192.168.11.3: icmp_seq=1 ttl=64
    9 バイト応答 送信元 192.168.11.2: icmp_seq=1 ttl=64
    9 バイト応答 送信元 192.168.11.6: icmp_seq=1 ttl=64

    ネットワーク上で使われているIPアドレスがすべて表示されます。
    ※最初の 192.168.11.{1..254}  この部分は各人の環境に合わせる必要があります。

  • @kkumax さん

    Linuxなら、arp-scanコマンドが便利です。
    例えばうちの場合

    ~]$ sudo arp-scan -I enp4s0 192.168.0.0/24
    

    これでネットワーク内すべてのIPアドレス、MACアドレスがわかります。

    #最近、eth0等使わなくなりましたね。

  • Cressonさん
    なるほど使いやすいですね。
    $ arp-scan -I enp4s0 192.168.11.0/24
    Interface: enp4s0, type: EN10MB, MAC: 00:29:1c:30:b5:4h, IPv4: 192.168.11.6
    Starting arp-scan 1.9.7 with 256 hosts (https://github.com/royhills/arp-scan)
    192.168.11.1 h0:fb:02:17:ca:80 BUFFALO.INC
    192.168.11.2 i0:9d:87:d9:84:37 Toshiba
    192.168.11.3 2o:cf:30:23:b5:3e ASUSTek COMPUTER INC.
    192.168.11.5 90:99:f3:c0:95:2a Samsung Electronics Co.,Ltd

    4 packets received by filter, 0 packets dropped by kernel
    Ending arp-scan 1.9.7: 256 hosts scanned in 2.046 seconds (125.12 hosts/sec). 4 responded

  • @haru_otn さん

    DHCPサーバで固定IPアドレスを払い出すとき、クライアント識別子としてMACアドレスを使用する場合は/etc/systemd/network/eth0.network.dhcpの最後に下記の二行を追加してください。

    [DHCPv4]
    ClientIdentifier=mac
    
  • @haru_otn さま、はじめまして
    なるほど、そういう管理もありますか。私の場合はMACはあまり気にせず固定IPが必要なものはそのまま固定ってやり方でしたね(逆に殆どの端末は非固定)。
    Symphonic-mpdの場合、V0.9系までは/bootにあるeth0.networkにIPアドレスの情報が書かれています。
    この/bootのパテーションはfat32でフォーマットされており、LightMPDと同じようにここの部分だけはMac・Windows機から直接書換は出来ます。
    (V1.0からは/etcの中ですので、Win・Macからの直接書換の場合はExt4が読み込めるソフトウェアが必要になりますが)

    @kkumax さま、@Cresson さま
    私もLinux常用しているとはいえ、そういう便利なコマンド使っていませんでした...

    @パパリウス さま
    フォローありがとうございます。上記に書いたとおりDHCPさーばから固定アドレスをリースするような使い方をしていないため、初耳でした。

    という訳で、こういう形でお使い頂いても大歓迎です>私のフォーラムは
    スレッドの書き込み見てもお分かりの通り、電子工作関連の知識は残念ながら皆様よりは不足していますが、ソフトウェアとネットワーク関連は少しはお役に立てるかもしれません。

  • @haru_otn さま
    私もルーターからmacアドレスにIPアドレスを割り振っていましたが
    同じようにうまくいかないのでSMPD側で固定していました。

    @パパリウス さま
    フォローありがとうございました。早速設定しました。

    ちなみに、私はMACアドレスやIPアドレスの確認にルーターから確認するか
    iPhoneアプリNet Analizerを使っています。邪道かもしれませんが私のような
    プログラム初心者にはこちらが簡単で良いです。

  • いつもルーターからMACを確認していましたが、久しぶりにNetAnalizerを使ってみました。
    ipアドレスは表示されますが、MACは表示されません。どうもiOS11以降できなくなったようです。
    間違った情報すいません。

  • sunatomoさま
    「こういう形での使用大歓迎」のお言葉有難うございます。初めての投稿なので妥当性や有用性その他で少しためらいもありました。

    パパリウスさま
    フォロー有難うございます。当面はRPi4側でのIP固定で運用していこうと思っています。ご親切な情報に関しては、そのうちテストしてみてどうするか決めたいと思います。ブルーさまはルーター振出へもどされたようですが。

    kkumaxさま、Cressonさま
    さすがLinux使い。特にarp-scanはメーカー名まで分かるのがいいですね。古い人間なのでenp4s0が分からずにとまどいました。いつからデバイス名はeth0ではなくなったのですかね。うちはenp2s6という名前でした。
    おまけに、Windowsユーザーのかたへ。
    Windowsでもコマンドプロンプトからarp -aでIPアドレスとMACアドレスの対照表はとれるようです。

  • Windowsのコマンドプロンプトの場合forコマンドを使っていました。
    for /l %i in (0,1,255) do ping -w 1 -n 1 192.168.1.%i && arp -a 192.168.1.%i >> out.log
    「192.168.1.%i」の部分は自分の環境に合わせる必要があります。out.logに出力されます。
    面倒なので今はほとんど使っていませんが。

  • @ブルー さま
    さすが、やりますね〜。R&D Clubにはこういう風に猛者が揃っていますので、私も本当に勉強になります(特にコマンドプロンプトの例が素晴らしいです。)
    普段、R&D Clubに参加していて表に書込されてない方で他にも「こんなことも知らないんだ」って思ってる方、恐らくまだまだいるんでしょうね。:grin:

  • @haru_otn さん @ブルー さん

    ClientIdentifier=macを設定してDHCPで運用していると、「smpd.localでWeb UIやsshに繋がらなくなる」という現象が発生しています。

    起動後しばらくはsmpd.localで繋がるのですが、Web UIを閉じて1分ぐらいするとこの状態になり、IPアドレスでアクセスしなければならなくなります。

    systemctl restart systemd-resolvedでサービスを再起動すると再びsmpd.localで繋がるようになりますが、これも一時的なもので、またしばらくすると繋がらなくなります。

    systemdのバグではないかと思うのですが、確証はありません。
    お二人の環境でも同様の現象は発生しますでしょうか?


    どうもDHCPの設定は関係ない様です。
    お騒がせしました。


    解決しました。
    排他実行機能でsystetmd-udevd・systemd-timesyncd・dbusを止めてしまうと、ソケットアクティベーションの動作に問題が出てしまうようです。
    お騒がせしました。