LoginSignup
1
0

Windows Server の DNS に URI レコードを登録するコマンド

Posted at

WindowsServer2022 の DNS への URI レコードを登録作業

Powershell で Windows Server 2022 の DNS へ URI レコードを登録する作業について記載します。

注意事項

初めに重要なので言っておきます。

私はDNS良く分かりません。
私はDNS良く分かりません。

ここで使われている用語については雰囲気で書いてます。

それを踏まえて本編は以下の通りです。

はじめに

Windows で DNS の URI レコード登録作業でハマったのでメモとして残します。
本家のコマンドの説明へのリンクは以下の通りです。

しかし、上記の説明の中には URI レコードの登録についての example は記載されていません。

経緯

RHEL 標準の認証周りを提供するサービス FreeIPA (現在は Red Hat Identity Management) の検証時、FreeIPA で認証させたいサーバーは、Kerberos認証しているサーバーの SRV や URI の FQDN を解決する必要がありました。
Windowsを DNS サーバーとして利用する場合、URI レコードを登録する作業でハマったので記録として残しています。対応としては、RHELさんから出ているナレッジベースの情報が一番正しいと思われます。

adddns3.png

細かい認証周りの機構については、RHELさんの公式のマニュアルの「第12章 IdM で SSSD を使用した認証のトラブルシューティング」の項目に記載されています。ここでは FreeIPA(IdM) の認証の仕組みは説明しません。

URI レコードとは???

2015年ぐらいに RFC 上は登録されたレコードの種類とのこと。
RFCのアブストラクトをみると「ホスト名からURIへのマッピングを公開するために使用されます。」と一言ありますが、何に使うか DNS 素人の私は良く分かりませんでした。

本当にごめんなさい。わかる人がいたらコメントをください。。。

ここ数年は AWS の Route53 や、 OCI の DNS サービスで、雑にレコード登録をしており、オンプレは久々だったので、何ぞ?となっていました。ただ、FreeIPA(IdentityManagement) のインストール手順で、これらの FQDN の名前解決せよ!という指定があり、しぶしぶ DNS の設定をし始めました。

やったこと

1. Linux 上で登録したい URI レコードを確認するコマンド

ipa dns-update-system-records --dry-run で表示されたレコード一覧の情報を元に以下のコマンドを実施し、WindowsServer の DNS に登録するレコードの情報を取得します。(おそらく dig の Answer セクションで表示されてほしい内容の一覧が並びます)
注意事項になりますが、 named-rrchecker を利用するには bind をインストールする必要があります。

$ echo 'IN URI 0 100 "krb5srv:m:tcp:idm.example.com."' | named-rrchecker -u
CLASS1  TYPE256 \# 34 000000646B7262357372763A6D3A7463703A69646D2E6578616D706C652E636F6D2E
$

2. Windows の DNS に URI レコードを登録するコマンド

WindowsServer の Powershell を管理者権限で実行し、以下のコマンドを実施します。

 Add-DnsServerResourceRecord -ZoneName "idm.example.com" -Name "_kerberos" -Type 256 -RecordData "000000646B7262357372763A6D3A7463703A69646D2E6578616D706C652E636F6D2E"

adddns1.png

WindowsServer上で以下のように表示されていれば成功です。
adddns2.png

3. Linux 上で登録された URI レコードを引いてみる

$ dig _kerberos.idm.example.com URI

; <<>> DiG 9.18.12-0ubuntu0.22.04.2-Ubuntu <<>> _kerberos.idm.example.com URI
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5636
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;_kerberos.idm.example.com.     IN      URI

;; ANSWER SECTION:
_kerberos.idm.example.com. 3600 IN      URI     0 100 "krb5srv:m:tcp:idm.example.com."

;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Sun Aug 20 13:29:54 UTC 2023
;; MSG SIZE  rcvd: 100

$

色々、WindowsServerのDNSでハマった点

  • Add-DnsServerResourceRecord
    • URI レコードの登録時のみ、TTL, Priority, Weight のパラメータが利用できませんでした。Aレコード、PTRレコード、SRVレコードの追加のコマンドでは指定できました。
    • -Type のパラメータを RHEL の Knowledgebase の情報では文字列型 "256" と指定していますが、マイクロソフトの公式の説明を見るとUInt16型となっています。 -Type 256 でも登録作業はできました。
    • SRV レコードの登録時に、 tcp や udp の指定があると思いますが、その場合は -Name "_ldap._tcp"のように指定することで意図した SRV レコード登録が可能になります。
  • Windows Server の DNS での URI レコードはサポートしてない状況でした。Windowsだけではなく、一般的ではないレコードの種類のように感じました。

おわりに

  • DNS の構築について
    • WindowsServerでDNSを立てるより、FreeIPA(IdentityManagement) 付属の DNS サーバーを利用したほうが構築は楽になると思います。
    • 既存の環境で WindowsServer の DNS を利用している人たち向けに書いてみました。
    • リゾルバや BIND の実装について気になるようになりました。
  • 久しぶりの RHEL について
    • いろいろ変わっていていいですね。nmcli いい!!(今更?)
    • SSSD(System Security Services Daemon) に感動を覚えました。
    • グローバル変数おじさんではなく、sysconfig 編集おじさんになるところでした。

おまけ

調査中に使ったリンク集を張っておきます。
cloudflare さんの DNS の説明はすごく分かりやすくて良いなと思いました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0