<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ntp on ポンコツ地方エンジニアの技術ブログ</title><link>https://blog-0847c6.gitlab.io/tags/ntp/</link><description>Recent content in Ntp on ポンコツ地方エンジニアの技術ブログ</description><generator>Hugo -- gohugo.io</generator><language>ja-jp</language><lastBuildDate>Thu, 29 Sep 2022 00:00:00 +0900</lastBuildDate><atom:link href="https://blog-0847c6.gitlab.io/tags/ntp/index.xml" rel="self" type="application/rss+xml"/><item><title>NTP サーバー/クライアント chrony の設定</title><link>https://blog-0847c6.gitlab.io/posts/2022/09/29/chrony/</link><pubDate>Thu, 29 Sep 2022 00:00:00 +0900</pubDate><guid>https://blog-0847c6.gitlab.io/posts/2022/09/29/chrony/</guid><description>&lt;p&gt;chrony を使って NTP サーバー、NTP クライアントのぞれぞれを設定してみました。&lt;/p&gt;
&lt;h2 id="環境"&gt;&lt;a href="#%e7%92%b0%e5%a2%83" class="header-anchor"&gt;&lt;/a&gt;環境
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Ubuntu 20.04&lt;/li&gt;
&lt;li&gt;chrony 3.5&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="インストール"&gt;&lt;a href="#%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab" class="header-anchor"&gt;&lt;/a&gt;インストール
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo apt install chrony
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="ntp-サーバーとしての設定"&gt;&lt;a href="#ntp-%e3%82%b5%e3%83%bc%e3%83%90%e3%83%bc%e3%81%a8%e3%81%97%e3%81%a6%e3%81%ae%e8%a8%ad%e5%ae%9a" class="header-anchor"&gt;&lt;/a&gt;NTP サーバーとしての設定
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;/etc/chrony/chrony.conf&lt;/code&gt; をエディタで編集します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo nano /etc/chrony/chrony.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="上位サーバーの無効化"&gt;&lt;a href="#%e4%b8%8a%e4%bd%8d%e3%82%b5%e3%83%bc%e3%83%90%e3%83%bc%e3%81%ae%e7%84%a1%e5%8a%b9%e5%8c%96" class="header-anchor"&gt;&lt;/a&gt;上位サーバーの無効化
&lt;/h3&gt;&lt;p&gt;17行目〜20行目をコメントアウトします。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;#pool ntp.ubuntu.com iburst maxsources 4
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;#pool 0.ubuntu.pool.ntp.org iburst maxsources 1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;#pool 1.ubuntu.pool.ntp.org iburst maxsources 1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;#pool 2.ubuntu.pool.ntp.org iburst maxsources 2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="認証の無効化"&gt;&lt;a href="#%e8%aa%8d%e8%a8%bc%e3%81%ae%e7%84%a1%e5%8a%b9%e5%8c%96" class="header-anchor"&gt;&lt;/a&gt;認証の無効化
&lt;/h3&gt;&lt;p&gt;24行目をコメントアウトします。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;#keyfile /etc/chrony/chrony.keys
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="アクセス許可"&gt;&lt;a href="#%e3%82%a2%e3%82%af%e3%82%bb%e3%82%b9%e8%a8%b1%e5%8f%af" class="header-anchor"&gt;&lt;/a&gt;アクセス許可
&lt;/h3&gt;&lt;p&gt;特定のセグメントからのみアクセスを許可したい場合は以下のように追記します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Allow NTP client access from local network.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;allow 192.168.4.0/24
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;全セグメントから許可シたい場合は &lt;code&gt;allow&lt;/code&gt; とだけ記載するようです。&lt;/p&gt;
&lt;h3 id="上位の-ntp-サーバーがいなくても同期を取れるようにする"&gt;&lt;a href="#%e4%b8%8a%e4%bd%8d%e3%81%ae-ntp-%e3%82%b5%e3%83%bc%e3%83%90%e3%83%bc%e3%81%8c%e3%81%84%e3%81%aa%e3%81%8f%e3%81%a6%e3%82%82%e5%90%8c%e6%9c%9f%e3%82%92%e5%8f%96%e3%82%8c%e3%82%8b%e3%82%88%e3%81%86%e3%81%ab%e3%81%99%e3%82%8b" class="header-anchor"&gt;&lt;/a&gt;上位の NTP サーバーがいなくても同期を取れるようにする
&lt;/h3&gt;&lt;p&gt;以下を追記します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Serve time even if not synchronized to a time source.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;local stratum 5
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="再起動"&gt;&lt;a href="#%e5%86%8d%e8%b5%b7%e5%8b%95" class="header-anchor"&gt;&lt;/a&gt;再起動
&lt;/h3&gt;&lt;p&gt;設定が完了したら chrony を再起動します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo systemctl restart chrony
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="ntp-クライアントとしての設定"&gt;&lt;a href="#ntp-%e3%82%af%e3%83%a9%e3%82%a4%e3%82%a2%e3%83%b3%e3%83%88%e3%81%a8%e3%81%97%e3%81%a6%e3%81%ae%e8%a8%ad%e5%ae%9a" class="header-anchor"&gt;&lt;/a&gt;NTP クライアントとしての設定
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;/etc/chrony/chrony.conf&lt;/code&gt; をエディタで編集します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo nano /etc/chrony/chrony.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;17行目〜20行目をコメントアウトし、&lt;code&gt;pool &amp;lt;NTPサーバーのIPアドレス&amp;gt; iburst&amp;gt;&lt;/code&gt; を追記します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;#pool ntp.ubuntu.com iburst maxsources 4
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;#pool 0.ubuntu.pool.ntp.org iburst maxsources 1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;#pool 1.ubuntu.pool.ntp.org iburst maxsources 1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;#pool 2.ubuntu.pool.ntp.org iburst maxsources 2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pool 192.168.0.10 iburst
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="時刻同期について"&gt;&lt;a href="#%e6%99%82%e5%88%bb%e5%90%8c%e6%9c%9f%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6" class="header-anchor"&gt;&lt;/a&gt;時刻同期について
&lt;/h3&gt;&lt;p&gt;以下のページが参考になりました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://www.bigbang.mydns.jp/chrony-x.htm" target="_blank" rel="noopener"
 &gt;https://www.bigbang.mydns.jp/chrony-x.htm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://go-journey.club/archives/12037" target="_blank" rel="noopener"
 &gt;https://go-journey.club/archives/12037&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;chrony は iburst オプションの付いた NTP サーバーに対して、起動直後に短い間隔で4回問い合わせをするそうです。
また、デフォルトでは &lt;code&gt;makestep 1 3&lt;/code&gt; の設定がありますが、これは chrony の起動時に、1.0 秒以上時刻ずれが 3 回続いた場合、step モードで一気に時刻補正をするという意味だそうです。
そうでない場合は slew モードで少しずつ時刻補正を行うそうです。&lt;/p&gt;
&lt;h3 id="再起動-1"&gt;&lt;a href="#%e5%86%8d%e8%b5%b7%e5%8b%95-1" class="header-anchor"&gt;&lt;/a&gt;再起動
&lt;/h3&gt;&lt;p&gt;設定が完了したら chrony を再起動します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo systemctl restart chrony
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="確認"&gt;&lt;a href="#%e7%a2%ba%e8%aa%8d" class="header-anchor"&gt;&lt;/a&gt;確認
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;chronyc sources&lt;/code&gt; を実行し、サーバー名の最初に &lt;code&gt;*&lt;/code&gt; と表示されていれば同期が取れています。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ chronyc sources
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;210&lt;/span&gt; Number of &lt;span class="nv"&gt;sources&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;MS Name/IP address Stratum Poll Reach LastRx Last &lt;span class="nv"&gt;sample&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;===============================================================================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;^* 192.168.0.10 &lt;span class="m"&gt;5&lt;/span&gt; &lt;span class="m"&gt;6&lt;/span&gt; &lt;span class="m"&gt;377&lt;/span&gt; &lt;span class="m"&gt;34&lt;/span&gt; -7277ns&lt;span class="o"&gt;[&lt;/span&gt;-2447ns&lt;span class="o"&gt;]&lt;/span&gt; +/- 41us
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="ちょっとはまったところ"&gt;&lt;a href="#%e3%81%a1%e3%82%87%e3%81%a3%e3%81%a8%e3%81%af%e3%81%be%e3%81%a3%e3%81%9f%e3%81%a8%e3%81%93%e3%82%8d" class="header-anchor"&gt;&lt;/a&gt;ちょっとはまったところ
&lt;/h2&gt;&lt;p&gt;きちんと同期がとれているか確認するために、サーバー側の日時を Ubuntu の GUI で変更し、クライアントの PC を再起動してみましたが、同期されませんでした。&lt;br&gt;
何でだろうと思っていたら、日時を GUI で変更したときに chrony のサービスが停止していました。&lt;/p&gt;
&lt;p&gt;chrony が動いているかどうかは以下のコマンドで確認できます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo systemctl status chrony
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;もし chrony が停止していた場合は、以下のコマンドで起動します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo systemctl start chrony
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;この状態でクライアントの PC を再起動したら、起動時に日時が同期されました。&lt;/p&gt;
&lt;p&gt;もし PC 再起動後に chrony が停止していた場合は有効化されていないので、以下のコマンドを実行します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; chrony
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="参考-url"&gt;&lt;a href="#%e5%8f%82%e8%80%83-url" class="header-anchor"&gt;&lt;/a&gt;参考 URL
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://www.isoroot.jp/blog/2844/" target="_blank" rel="noopener"
 &gt;https://www.isoroot.jp/blog/2844/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://tech-lab.sios.jp/archives/11247" target="_blank" rel="noopener"
 &gt;https://tech-lab.sios.jp/archives/11247&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.bigbang.mydns.jp/chrony-x.htm" target="_blank" rel="noopener"
 &gt;https://www.bigbang.mydns.jp/chrony-x.htm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://go-journey.club/archives/12037" target="_blank" rel="noopener"
 &gt;https://go-journey.club/archives/12037&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>