Armadilloフォーラム

時刻同期について

mori22554

2022年9月12日 18時43分

お世話になっております。森です。
起動時の時刻同期について質問させてください。
実機は、Armadillo G3L(RTCなし)を使用しております。

実機起動後、debian9の環境では起動時に時刻同期がされていましたが、Debian10では時刻が2019年のままになってました。
https://armadillo.atmark-techno.com/index.php/forum/armadillo/7142
を拝読し、/etc/network/if-up.dの中を確認しました。
debian9ではデフォルトでntpdateファイルがありましたがdebian10ではありませんでした。
これはデフォルトの動作がdebian10では起動時に時刻設定行わないように変更になったということでしょうか?
その場合、debian10で起動時に時刻同期を行うための設定方法はわかりますでしょうか?

ユーザランドは下記を参照いたしました。
debian9環境:debian-stretch-armhf_aiotg3l_20220829.tar.gz
debian10環境:debian-buster-armhf_aiotg3l_20220829.tar.gz

よろしくお願いいたします。

コメント

at_dominique.m…

2022年9月13日 8時12分

森さん。

お世話になっています。
アットマークテクノのマルティネです。

> 実機起動後、debian9の環境では起動時に時刻同期がされていましたが、Debian10では時刻が2019年のままになってました。
> https://armadillo.atmark-techno.com/index.php/forum/armadillo/7142
> を拝読し、/etc/network/if-up.dの中を確認しました。
> debian9ではデフォルトでntpdateファイルがありましたがdebian10ではありませんでした。
> これはデフォルトの動作がdebian10では起動時に時刻設定行わないように変更になったということでしょうか?
> その場合、debian10で起動時に時刻同期を行うための設定方法はわかりますでしょうか?

以前調べた時のメモですが、debian 10 では二つの方法で時間を取得するはずです:
* systemd-timesyncd のサービスでいずれ時間を取得する(ネットワークの知識がなさそうですので、時間がかかる可能性が高いです)
* dhcp のフックとして、/etc/dhcp/dhclient-exit-hooks.d/ntpdate で ntpdate を実行します

なので static IP か dhcp を使わない環境(LTEなど)で設定された場合確かに効率が悪いですね。
もしかしたら森さんのArmadilloではそうでしょうか?

その場合は以前同様に if-up.d か interfaces ファイルの post-up でそのままのコンフィグを使えますので、それがいいかもしれません。
担当の者に相談してみます。

よろしくお願いします。

> 森さん。
>
> お世話になっています。
> アットマークテクノのマルティネです。
>
> > 実機起動後、debian9の環境では起動時に時刻同期がされていましたが、Debian10では時刻が2019年のままになってました。
> > https://armadillo.atmark-techno.com/index.php/forum/armadillo/7142
> > を拝読し、/etc/network/if-up.dの中を確認しました。
> > debian9ではデフォルトでntpdateファイルがありましたがdebian10ではありませんでした。
> > これはデフォルトの動作がdebian10では起動時に時刻設定行わないように変更になったということでしょうか?
> > その場合、debian10で起動時に時刻同期を行うための設定方法はわかりますでしょうか?
>
> 以前調べた時のメモですが、debian 10 では二つの方法で時間を取得するはずです:
> * systemd-timesyncd のサービスでいずれ時間を取得する(ネットワークの知識がなさそうですので、時間がかかる可能性が高いです)
> * dhcp のフックとして、/etc/dhcp/dhclient-exit-hooks.d/ntpdate で ntpdate を実行します
>
> なので static IP か dhcp を使わない環境(LTEなど)で設定された場合確かに効率が悪いですね。
> もしかしたら森さんのArmadilloではそうでしょうか?

おっしゃる通り、時刻同期要のネットワークはLTEのみを想定しており、起動時に実施したいと思ってます。
ネットワークを固定したいのでできれば弊社クラウドの時刻を同期したいと思ってますが、時刻が数か月ずれてるとTLSハンドシェークで証明書エラーが出てしまうため、ntpでdebian10でLTE接続時に時刻同期する方法を質問させていただいてます。

<時刻がずれた状態で接続した場合 → 証明書エラー>
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (OUT), TLS alert, Server hello (2):
* SSL certificate problem: certificate is not yet valid
* Curl_http_done: called premature == 1
* stopped the pause stream!
* Closing connection 0
curl: (60) SSL certificate problem: certificate is not yet valid
More details here: https://curl.haxx.se/docs/sslcerts.html

>
> その場合は以前同様に if-up.d か interfaces ファイルの post-up でそのままのコンフィグを使えますので、それがいいかもしれません。
> 担当の者に相談してみます。
>

お手数をおかけしますが、よろしくお願いいたします。

at_keitaro.takahashi

2022年9月14日 17時59分

アットマークテクノ高橋です。

以下のようなスクリプトを/etc/NetworkManager/dispatcher.d/に配置することで、ネットワークへの接続時すぐに時刻同期が可能です。

#! /usr/bin/bash
 
[ -n "$CONNECTION_UUID" ] || exit
 
INTERFACE=$1
ACTION=$2
 
case $ACTION in
    up | vpn-up | dhcp4-change | dhcp6-change)
        systemctl restart systemd-timesyncd
        ;;
esac

配置後、以下のように実行権限を付与してください。(スクリプト名は例です)

chmod 755 /etc/NetworkManager/dispatcher.d/10-update-timesyncd

今後のアップデートで同様の機能を標準で実装予定です。

高橋様、マルティネ様
お世話になっております。

ご回答いただきありがとうございます。
上記の内容、参考にさせて頂きます。