接続を切断せずにdhclientを使用してDHCPリースを解放して更新する方法

接続を切断せずにdhclientを使用してDHCPリースを解放して更新する方法

私はSSH(重要な場合は0 W)を介してのみアクセス可能なヘッドレスPiを扱っているので、試す前に動作していることを確認したかったです。

Puttyを介したアクセスを簡素化し、Piで実行されているカスタムサーバーにアクセスするためにある程度必要なルータでPiのアドレス予約を設定しました。

問題は、このアドレスが最初に予約されていなかったため、私が予約した「ビプール」領域の固定アドレスではなく、プールの他のランダムアドレスにあることです。忍耐は問題を解決できませんでした。数日間住所を変更するのではなく、その住所を維持することにとどまった。私はルーターのDHCPサーバーが12時間または24時間などの合理的なリース期間を持っていると仮定します。

明らかにリースを解放するために使用した場合、dhclient -r現在のSSHセッションは中断され、使い勝手の悪い状態になります。また、危険にさらされると、dhclient -rWi-Fi接続も中断される可能性があります。下部の警告を参照してください。このページもっと学ぶ。

nohup (dhclient -r -d && dhclient) &したがって、ルートbashセッションで(a)現在のリースを終了し、(b)必要に応じてWiFiをオンにし、最後に(c)新しいリースを取得する可能性はどのくらいですか?正しい住所に。

私の推論は、使用がnohupSSHセッションに問題があるときにaを受け取らないことを意味しSIGHUP、これをバックグラウンドのサブシェルに置くことは、両方のコマンドを実行する可能性が最も高いことを意味します。

私が考慮したもう一つのオプションはnohup (dhclient -r && reboot) &ルートbashセッションです。ここでのロジックは、システムを再起動したらWiFi接続を再確立し、アドレスを取得するためにDHCPサーバーをpingする必要があることです。コピーを保管してください。

どちらも失敗した場合、リースを解放して更新し、ベースアドレスからWiFiに接続して実行中のシステムをシャットダウンするには、他に何が必要ですか?最後の手段で画面とキーボードを接続する方法を見つけることができるかどうかを確認できましたが、実際にはそうしたくないので、かなり大きな痛みになります。

答え1

免責事項:テストすることはできませんが、最後の選択段階でのみ永久設定が変更されるため、システムをリセットする必要がある状況が発生する可能性があります。

説明の便宜上、次のように仮定する。

  • ワイヤレスインターフェイスはwlan0と呼ばれます。
  • 以前のアドレスは192.168.1.242/24です。
  • 新しい予約は192.168.1.2/24です。

すべてはrootとして実行する必要があります。方法は次のとおりです

  • 予約済みアドレスを使用して静的IPアドレスを追加する:予約済みアドレスなので、誰が気になりますか?

    ip address add 192.168.1.2/24 dev wlan0
    
  • 〜できるようにするpromote_secondariesインターフェイスで(そうでなければ、IP LANで設定された最初のアドレスが削除されると、同じIP LANの他のすべてのアドレスも削除されます。新しいアドレスも削除されます)

    sysctl -w net.ipv4.conf.wlan0.promote_secondaries=1
    

    または:

    echo 1 > /proc/sys/net/ipv4/conf/wlan0/promote_secondaries
    
  • 新しいアドレスを使用して接続

    ssh [email protected]
    

    そして再びルートになります。これからルートシェルの新しい接続を続行します。

  • DHCPクライアントのシャットダウン中に何らかの操作(インターフェイスのシャットダウンなど)を実行できないようにSIGKILLします。

    他のDHCPクライアントが使用されているかどうか、またはそのいずれかがまだ実行されているかどうかはわかりませんdhclient(一部の最小構成では、リースの更新や有効期限をまったく処理せずにIPアドレスを一度だけ取得して終了できます)。dhcpcdudhcpc

    pkill -e -KILL dhclient
    

    または

    pkill -e -KILL dhcpcd
    

    など。

    あるいは命令がなければpkillkillするPIDを調べる(使用kill -KILL ...)。

    これ以降、実行中のクライアントがないことを確認することが重要です。

  • 古いアドレスを手動で削除します(これにより、新しいアドレスも削除されず、プライマリアドレスに昇格されます)。

    ip address del 192.168.1.242/24 dev wlan0
    
  • オプション:必要に応じて設定を固定アドレスに更新したり、何もしません。

    RaspberryPi Zero Wに関連しているので、最後のステップはどうすればいいかわかりません(Debianを使ってやればいい)上下なら構成があるか、/etc/network/interfaces異なる構成になっています)。ただし、変更を加えずに次の(再)起動時にこの新しいIPアドレスに新しいリースを使用するか、実際のエラーがある場合は以前のバージョンに戻ります。

    DHCPが処理されている場合は、dhclient関連ファイルを削除してリースメモリを消去したら、/var/lib/dhcp/dhclient*.leases次に新しいリースを要求する必要があります。dhcpcdそうかもしれないから/var/lib/dhcpcd/*.lease

関連情報