Azure はかつて、特に設定をしなくても仮想ネットワークからインターネットに出られました(既定のSNAT)。
今ではインターネットへの通信にはNAT gateway を構成することが推奨されています。
いつも検証環境では、パブリックIP アドレスを仮想マシンにくっつけていますが、本番でやると大問題のやり方です。
推奨通り、NAT gateway を作ってインターネットに出てみます。
概要
NAT gateway を構成し、パブリックIP を持っていない仮想マシンからインターネットに出る。
前回の記事で立てたNTP サーバが残っているので、こいつがインターネット上のNTP サーバと同期できれば成功とみなします。
手順
0.準備(VPN gateway の作成)
前回の記事で立てたNTP サーバはRHEL です。
パブリックIP アドレスなしで仮想マシンをいじる&インターネットに出る検証をするために、VPN gateway を作っておきます。いつもBasic SKU で作るためにBicep 使ってるんですがそれすらめんどう・・・お金がかかるので短期決戦です。
1.NAT gateway の作成
NAT gateway を置くサブネットに、Basic SKU のパブリックIP アドレスがあってはならぬとのこと。
これは前回用いたNTP サーバにくっつけたものなので今回は削除します。
関連付けの解除からの、削除で。
パブリックIP を削除したら、失敗したと思っていたNAT gateway が半分出来てました。デプロイには成功して、サブネットとの関連付けのみ失敗していたようです。
よく考えたら、NTP サーバがインターネットに参照する前後で有効になっていればいいので、いったんこのままで。
2.VPN gateway からつなぐ
VPN gateway ができたので、ポイント対サイトの構成をしてVPN を張ります。
(Azureから見て)リモートのネットワークは10.1.0.0/16 にしました。
VPN から、StepServer につなぎます。いうまでもなく、今のStepServer にはプライベートIP アドレスしかありません。
/etc/chrony.conf の内容を編集し、デフォルトの(インターネット上の)NTP サーバを参照する設定にします。
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
pool 2.rhel.pool.ntp.org iburst
.conf ファイルを更新したら、chronyd を再起動するのをお忘れなく。
時刻同期の確認をすると、、、
[root@StepServer testuser]# chronyc sources
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^? 202.182.111.234.vultruse> 2 6 3 2 -55ms[ -55ms] +/- 2187us
^? 172-105-204-105.ip.linod> 2 6 3 2 -55ms[ -55ms] +/- 1977us
^? ntp-b2.nict.go.jp 1 6 3 2 -55ms[ -55ms] +/- 1133us
^? v163-44-97-196.rm2n.stat> 2 6 3 1 -56ms[ -56ms] +/- 17ms
今のところ、同期できない状態です。
3.(再)NAT gateway の作成
サブネットを追加するところからやり直しです。
パブリックサブネット(スペルミスはご愛敬)にNTP サーバがいるのでここと関連付けます。ここでも「Basic SKU のパブリックIP を持つサブネットは表示されません」と言ってます。
NAT gateway の作成は直感的でいいですね。パブリックIP を新規作成するか流用するかと、関連付けるサブネットを選ぶくらいです。
また、サブネットの関連付けも20秒くらいで完了しました。
4.時刻同期
さて、時刻同期はどうなっているでしょうか。先ほどはインターネットのNTP サーバと同期ができていない状態でした。
[root@StepServer testuser]# chronyc sources
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^+ 202.182.111.234.vultruse> 2 6 177 72 +56us[ -505us] +/- 2094us
^+ 172-105-204-105.ip.linod> 2 6 177 8 -34us[ -34us] +/- 2866us
^* ntp-b2.nict.go.jp 1 6 177 8 -155us[ -278us] +/- 1790us
^- v163-44-97-196.rm2n.stat> 2 6 177 71 -779us[ -798us] +/- 16ms
Stratum 1 のサーバと同期がとれています。NAT gateway のおかげでインターネットに出られたことがわかります。
補足
chronyc sources の結果について、copilot に聞いてみた。
ntp-b2.nict.go.jpってどんなサーバ?
ntp-b2.nict.go.jp
は、国立研究開発法人情報通信研究機構(NICT)が提供する公開NTPサーバーの一つです。このサーバーは、日本標準時(JST)に直結しており、非常に高精度な時刻同期を提供します>¹²。具体的には、NICTのNTPサーバーは以下の特徴を持っています¹²:
- 高精度:日本標準時と10ナノ秒以内の精度で同期。
- 高性能:毎秒100万リクエスト以上の処理能力。
- 高信頼性:冗長システム構成と高性能サーバーにより、安定した時刻供給を実現。
このサーバーを利用することで、ネットワークに接続されたPCやデバイスが正確な時刻を自動的に取得することができます。
他に知りたいことがあれば教えてくださいね。
ソース: Copilot との会話、 2024/10/10
(1) 日本標準時(JST)グループ - NICT. https://jjy.nict.go.jp/tsp/PubNtp/index.html.
(2) 【NTP】日本から使える公開NTPサーバ #Cisco - Qiita. >https://qiita.com/keigo_kabutomori/items/945b543cbe2792dd8d80.
(3) NICT 公開 NTP サービス. https://bing.com/search?q=ntp-b2.nict.go.jp+server.
(4) NICT 公開 NTP サービス. https://jjy.nict.go.jp/ntp/.
(5) [Linux]NTPサーバーの設定と確認 | プナイミー. https://punaime.jp/linux-ntp-server-configuration-verification/.
^+ は疎通はできてるんですか?
chronyc sources
コマンドで^+
が表示されている場合、そのNTPサーバーとの疎通は確立されています。^+
は、サーバーが時刻同期の候補として受け入れられていることを示しており、通信が正常に行われていることを意味します。他に確認したいことや、詳しく知りたいことがあれば教えてくださいね。
候補のサーバとはちゃんと疎通まで出来たうえで、Stratum が上位のサーバを選んでるようですね。
以上です。お疲れさまでした。