Raspberry PiでダイナミックDNS No-IPを自動更新するには Rocky Linux 9 + No-IP 3 DUC版

先日、Raspberry Pi 4にRHEL9互換OSのRocky Linux 9をインストールしまして。

Raspberry Pi 4でRocky Linux 9を起動してみました
Red Hat Linuxとバイナリ互換のあるOSとしまして、CentOS LinuxやCentOS Streamが挙げられますが。 ...

transixのIPv6 IPoE環境から、IPv4 PPPoE接続をしてみました。

IPv6 IPoE環境からNetworkManagerでIPv4 PPPoE接続するには
IPv6 IPoE接続した環境の中から、PPPoEパススルー機能を使用して、IPv4 PPPoE接続したい場合。 NetworkMan...

固定IPアドレスの契約をしなくても、外出先からRaspberry Piにアクセスできるように。

Rustベースの新しいNo-IP 3 DUC(Dynamic Update Client)をRocky Linux 9で動かして、PPPoE接続したIPアドレスを自動登録できるようにしたいと思います。


No-IP 3 DUCインストール手順 Rocky Linux 9版

どうもFedora Linux 38では、No-IP 2 DUCがdnfコマンドでインストール可能になっているようです。

一方、RHEL9互換のRocky Linux 9は、dnfコマンドによるインストールはまだできないようです。

今回、No-IP Ver. 2ではなく、Ver. 3を使用する理由は、systemdによるユニットに公式に対応しているためです。

つまり、No-IP DUCをデーモンとして動かしたい場合に、公式手順で動かすことができることが大きな理由になります。


Cargoによるビルド準備

いつも通り、No-IPのビルド環境をインストールしようと思います。Rocky Linuxの場合、インストール可能なdnfグループはこのあたりのようです。

「Develoment Tools」をインストール開始。

sudo dnf groupinstall -y "Development Tools"

ん?

しかし、今回インストールするNo-IP 3 DUCは、Rustベースでした。Develop Toolsに入っていない予感が。

改めて、rustとcargo、それと展開用のtarをインストールしました。

sudo dnf install -y rust cargo tar

tarは既にレガシー(伝説伝説をインストール完了。


Rustソースコード取得

ソースコードのtarボールをダウンロードさせて頂きます。(さてtarボールってなんでしょう

curl -o noip-duc_3.0.0-beta.7.tar.gz https://dmej8g5cpdyqd.cloudfront.net/downloads/noip-duc_3.0.0-beta.7.tar.gz

gz圧縮を展開し、tarアーカイブからファイルを復元しませう。

tar zxvf noip-duc_3.0.0-beta.7.tar.gz

確かに、ソースコードの拡張子はrs(最新

しかしアーカイブはtar(伝説

昔と今が混在している感じがします(余談

うまくビルドできるのでしょうか?(混乱


ビルド

そういえば、Rustのビルドは私は初めてです。cargoでビルドするのですね。

cd noip-duc_3.0.0-beta.7
cargo build --release

しばらく待つ感じでしょうか。ふむふむ。

最後のここが長いですね。リンクしている感じでしょうか。

target/releaseディレクトリに、リンクされた実行バイナリができました。

Raspberry Pi 4のRocky Linux 9にて、RustベースのNo-IP 3 DUCのビルドが成功したようです。


インストール

インストールは手動で行います。

sudo cp target/release/noip-duc /usr/local/bin

動作確認のため、手動でnoip-ducコマンドを実行しました。

既定では5分おきにIPアドレスが更新されるようです。

ヘルプを見たところ。正直、ヘルプが長くてちょっと引きました。

  1. -gオプションでホスト名
  2. -uオプションでユーザ名
  3. -pオプションでパスワード

最低限、この3つを指定すると、no-ipプロセスが5分おきにIPアドレスを更新してくれるようです。

ビルドしたnoip-ducコマンドで、確かにDynamic DNS No-IPのIPアドレスを登録できるようになりました。


デーモン化

最後に、systemdでNo-IP 3 DUCを自動起動して、No-IP Dynamic DNSのIPアドレスを自動更新できるように設定したいと思います。

noip-ducファイルの置き場所ですが、公式設定では/usr/bin/noip-ducに置くのですね。

そして設定ファイルは/etc/default/noip-ducファイルになります。

# /usr/bin/noip-duc作成
sudo cp /usr/local/bin/noip-duc /usr/bin/
# noip-ducユニットファイルを作成
sudo cp debian/service /etc/systemd/system/noip-duc.service
# /etc/default/noip-duc設定ファイル作成
cat << EOF | sudo tee /etc/default/noip-duc
## /etc/defaults/noip-duc (Debian) or /etc/sysconfig/noip-duc (RedHat, Suse)
## or anywhere you like.
NOIP_USERNAME=
NOIP_PASSWORD=

## Comma separated list of hostnames and group names
NOIP_HOSTNAMES=

## Less common options
#NOIP_CHECK_INTERVAL=5m
#NOIP_EXEC_ON_CHANGE=
#NOIP_HTTP_TIMEOUT=10s
## ip methods: aws, http, http-port-8245, static:<IP>
#NOIP_IP_METHOD=dns,http,http-port-8245
#NOIP_LOG_LEVEL=info

## Daemon options should not be set if using systemd. They only apply when `--daemon` is used.
#NOIP_DAEMON_GROUP=
#NOIP_DAEMON_PID_FILE=
#NOIP_DAEMON_USER=
EOF
# 作成した/etc/default/noii-duc設定ファイルを編集
sudo vi /etc/default/noip-duc

/etc/default/noip-ducファイルですが。

次の3つの設定を行う感じです。

  1. NOIP_USERNAMEにユーザ名を入力
  2. NOIP_PASSWORDにパスワードを入力
  3. NOIP_HOSTNAMESにホスト名をカンマ区切りで入力

設定を保存しましたら、最後にsystemdのユニットを有効化します。

sudo systemctl daemon-reload
sudo systemctl enable noip-duc.service --now

以上で、noip-duc.serviceユニットがsystemdにより自動起動して。

/etc/default/noip-duc設定ファイルをもとに、/usr/bin/noip-ducが自動起動する動作になります。


ジャーナルの確認

systemdのunitということで、journalctlコマンドでログ、ジャーナルを確認できます。

sudo journalctl -x -u noip-duc.service --no-pager |less
# >ボタンで最後尾に移動
# bボタンでページ戻り、スペースでページ送り

問題なく5分おきに更新されていることを確認できます。


PPPoE接続とNo-IP DUCとの連携は

今回、PPPoE接続はNetworkManagerを使用させて頂きました。

IPv6 IPoE環境からNetworkManagerでIPv4 PPPoE接続するには
IPv6 IPoE接続した環境の中から、PPPoEパススルー機能を使用して、IPv4 PPPoE接続したい場合。 NetworkMan...

以前の、rp-pppoeやpppoeconfを使用した接続では、接続のタイミングでスクリプトを動かすことも可能でした。

一方、NetworkManagerはsystemdのユニットに組み込まれており、連携させるとすると、systemdの仕組みの中で行う必要がありそうです。

今のところ連携はせず、noip-duc.serviceユニットは動かした状態にします。次の動きになります。

  • PPPoE接続すると、インターネット接続の経路がppp0になり、No-IPにppp0のアドレスが登録される
  • PPPoEを切断すると、インターネット接続の経路がeth1に戻り、IPv6 IPoEの共有アドレスが登録される

まあ逆に考えると、切断している状況を、No-IPに登録したIPアドレスから判別できるため、かえって良いかなとも考えています。


以上で、Raspberry Pi 4で起動したRocky Linux環境から、No-IP 3 DUCによるDynamic DNSのIPアドレスの自動更新が可能になりました。

No-IP 3 DUCはRustベースですが、Cargoによるビルドと、systemdによるユニット化により、デーモン化しても問題なくDynamic DNSのIPアドレスを既定で5分おきに更新できるようになりました。

次はサーバのホスティング化を取り上げたいと思います。

スポンサーリンク

フォローする

スポンサーリンク